Detect Apache Camel-Atmosphere-Websocket WebSocket Dispatch Header Injection (CVE-2026-71300) in IBM QRadar
Detects exploitation attempts and vulnerable deployments of Apache Camel camel-atmosphere-websocket affected by CVE-2026-71300 (CVSS 9.8, CWE-20). The camel-atmosphere-websocket producer selected its target WebSocket peers using Exchange header values whose header names fell OUTSIDE the filtered Camel header namespace. Because these attacker-controllable HTTP/message headers were not stripped by the Camel header filter strategy, a remote attacker able to influence inbound headers can inject dispatch-control headers (e.g. sendToAll / connection-key style targeting) and redirect, broadcast, or spoof WebSocket messages to arbitrary connected peers. This detection surfaces HTTP requests carrying anomalous WebSocket dispatch headers, Camel routes logging unfiltered header propagation, and the presence of affected artifact versions (>= 4.0.0 < 4.14.9, >= 4.15.0 < 4.18.4, >= 4.19.0 < 4.22.0).
MITRE ATT&CK
- Tactic
- Initial Access Lateral Movement
QRadar Detection Query
SELECT sourceip, destinationip, url, "Request Headers" AS headers, QIDNAME(qid) AS event, starttime
FROM events
WHERE (LOWER(url) LIKE '%camel%' OR LOWER(url) LIKE '%websocket%' OR LOWER(url) LIKE '%atmosphere%')
AND ("Request Headers" ILIKE '%sendToAll%' OR "Request Headers" ILIKE '%connectionKey%' OR "Request Headers" ILIKE '%CamelWebsocket%' OR "Request Headers" ILIKE '%X-Atmosphere%')
ORDER BY starttime DESC LAST 7 DAYS QRadar AQL selecting web/proxy events to Camel Atmosphere WebSocket endpoints that carry injected dispatch-targeting headers.
Data Sources
Required Tables
False Positives & Tuning
- Applications using sendToAll broadcast as intended.
- QA/staging traffic replaying application headers.
- Proxies normalizing and logging Camel headers benignly.
Other platforms for CVE-2026-71300
Testing Methodology
Validate this detection against 4 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1Inject WebSocket dispatch sendToAll header (lab)
Expected signal: Web/proxy log entry for the request to a *websocket*/*camel* URI containing the sendToAll and connectionKey request headers.
- Test 2Inject connectionKey targeting header (lab)
Expected signal: HTTP POST event to a Camel WebSocket send endpoint carrying connectionKey / CamelWebsocketConnectionKey headers.
- Test 3Detect vulnerable camel-atmosphere-websocket JAR on host
Expected signal: File creation event for camel-atmosphere-websocket-4.18.3.jar (an affected version) under /tmp/lib.
- Test 4Windows: drop affected Camel WebSocket JAR (lab)
Expected signal: DeviceFileEvents record for creation of camel-atmosphere-websocket-4.14.8.jar (affected version).
References (14)
- https://nvd.nist.gov/vuln/detail/CVE-2026-71300
- https://camel.apache.org/security/CVE-2026-71300.html
- https://github.com/apache/camel/pull/25366
- https://github.com/apache/camel/pull/25382
- https://github.com/apache/camel/pull/25383
- https://github.com/apache/camel/pull/25384
- https://github.com/apache/camel/commit/49e197a66158eb7151b461b46b37407df2e13591
- https://github.com/apache/camel/commit/60ca704c0379e6e87107158c0b2174c3f0f2f48a
- https://github.com/apache/camel/commit/66567833fb1efe6d66c6618dbb48295cce4c84ba
- https://github.com/apache/camel/releases/tag/camel-4.14.9
- https://github.com/apache/camel/releases/tag/camel-4.18.4
- https://github.com/apache/camel/releases/tag/camel-4.22.0
- https://issues.apache.org/jira/browse/CAMEL-24359
- https://github.com/advisories/GHSA-m5r8-w65q-8wjf
Response Playbook
Triage
- Confirm the affected component and version: enumerate deployed org.apache.camel:camel-atmosphere-websocket JARs and check whether the version falls in >= 4.0.0 < 4.14.9, >= 4.15.0 < 4.18.4, or >= 4.19.0 < 4.22.0.
- Inspect the flagged inbound requests for headers outside the filtered Camel namespace (e.g. sendToAll, connectionKey, CamelWebsocket*) and determine whether they reached a Camel route that produces to a camel-atmosphere-websocket endpoint.
- Correlate the source IP/user against expected clients: broadcast/targeting headers from untrusted or external sources are high-signal for exploitation of the header-injection flaw.
- Review Camel route logs for evidence that unfiltered inbound headers were propagated into the WebSocket producer's peer-selection logic.
Containment
- Block or rate-limit inbound requests carrying WebSocket dispatch-control headers (sendToAll/connectionKey) at the WAF/reverse proxy in front of the Camel application until patched.
- Apply a HeaderFilterStrategy / removeHeaders in the affected Camel routes to strip attacker-controllable headers before the camel-atmosphere-websocket producer, as an interim mitigation.
- Restrict the WebSocket endpoint to authenticated, trusted peers and disable sendToAll broadcast where not required by design.
Evidence Collection
- Capture the full inbound HTTP request/upgrade headers, source IP, timestamps, and the Camel route/exchange ID for each flagged event.
- Preserve the affected application's Camel route definitions, JAR versions (mvn dependency:tree), and any WebSocket dispatch/access logs showing peer targeting.
Escalation Criteria
- !Escalate to incident response if injected dispatch headers from an untrusted source correlate with WebSocket messages delivered to peers that should not have received them (confirmed message redirection/spoofing).
- !Escalate if a vulnerable version is confirmed internet-exposed and reachable with attacker-controllable inbound headers, given the CVSS 9.8 rating and public PoC.
Investigation Guide
Related Techniques
Forensic Artifacts
- >
Web/proxy access logs containing WebSocket upgrade requests with non-namespaced dispatch headers (sendToAll, connectionKey). - >
Camel application logs and exchange traces showing unfiltered header propagation into the atmosphere-websocket producer. - >
Deployed JAR inventory (camel-atmosphere-websocket-<version>.jar) confirming an affected version.
Tuning Guidance
Baseline which internal services legitimately send sendToAll/connectionKey headers and allowlist those sources. Tighten the header-name match to those specific to your Camel routes to reduce noise, and prioritize alerts where the source is external/untrusted or the target host is confirmed to run an affected version. Once all camel-atmosphere-websocket instances are upgraded to 4.14.9 / 4.18.4 / 4.22.0 or later, downgrade the artifact-presence signal to informational.
Hunting Queries
Hunt for hosts running affected camel-atmosphere-websocket versions and for inbound traffic carrying injected WebSocket dispatch headers.
DeviceFileEvents | where FileName matches regex @"camel-atmosphere-websocket-4\.(([0-9]|1[0-3])\.[0-9]+|14\.[0-8]|1[5-7]\.[0-9]+|18\.[0-3]|19\.[0-9]+|2[01]\.[0-9]+)\.jar" | project TimeGenerated, DeviceName, FolderPath, FileName index=web (uri_path="*websocket*" OR uri_path="*atmosphere*") | eval hdrs=coalesce(request_headers,http_headers) | search hdrs="*sendToAll*" OR hdrs="*connectionKey*" | stats count by src_ip, uri_path, hdrs Atomic Red Team Tests
Sends an HTTP request to a lab Camel Atmosphere WebSocket endpoint with an out-of-namespace dispatch header to simulate header-injection targeting all peers.
Command
curl -s -o /dev/null -w '%{http_code}\n' -H 'sendToAll: true' -H 'connectionKey: victim-peer-1' 'http://localhost:8080/camel/websocket/broadcast' Cleanup
echo 'No persistent artifacts created by this request.' Expected Telemetry
Web/proxy log entry for the request to a *websocket*/*camel* URI containing the sendToAll and connectionKey request headers.
Expected Detection
The dispatch-header-injection-attempt logic (kql/spl/etc.) matches on the sendToAll/connectionKey headers in the inbound request.
Simulates an attacker redirecting a WebSocket message to a specific peer by injecting a non-filtered connectionKey header.
Command
curl -s -X POST -H 'connectionKey: 7f3c-attacker-controlled' -H 'CamelWebsocketConnectionKey: 7f3c' --data 'hello' 'http://localhost:8080/camel/ws/send' Cleanup
echo 'No cleanup required; stateless request.' Expected Telemetry
HTTP POST event to a Camel WebSocket send endpoint carrying connectionKey / CamelWebsocketConnectionKey headers.
Expected Detection
Detection matches on connectionKey / CamelWebsocket header presence in the request headers.
Places a mock affected-version JAR filename on disk to validate the vulnerable-artifact-present inventory logic.
Command
mkdir -p /tmp/lib && touch /tmp/lib/camel-atmosphere-websocket-4.18.3.jar Cleanup
rm -f /tmp/lib/camel-atmosphere-websocket-4.18.3.jar Expected Telemetry
File creation event for camel-atmosphere-websocket-4.18.3.jar (an affected version) under /tmp/lib.
Expected Detection
The vulnerable-artifact-present logic flags the affected-version JAR filename.
Creates a mock affected-version artifact on Windows to exercise the file-inventory branch of the detection.
Command
New-Item -ItemType Directory -Force -Path C:\lab\lib; New-Item -ItemType File -Force -Path C:\lab\lib\camel-atmosphere-websocket-4.14.8.jar Cleanup
Remove-Item -Force C:\lab\lib\camel-atmosphere-websocket-4.14.8.jar Expected Telemetry
DeviceFileEvents record for creation of camel-atmosphere-websocket-4.14.8.jar (affected version).
Expected Detection
The vulnerable-artifact-present KQL branch matches the affected JAR version.