
Proof-of-Concept-Reproducer für Apache Camel camel-undertow Header-Filter-Bypass (CVE-2026-78329), der die websocket.*-Header-Injection demonstriert und Details zu betroffenen Versionen sowie eine Fix-Verifikation bereitstellt.
websocket.*-Injection)Ausführbarer Proof-of-Concept-Reproduzierer für die Apache-Camel-Schwachstelle, bei der UndertowEndpoint seine
headerFilterStrategy standardmäßig auf die Basis-HttpHeaderFilterStrategy setzte und diese Instanz in die UndertowHttpBinding schob,
die es erstellt, wodurch die UndertowHeaderFilterStrategy, die DefaultUndertowHttpBinding installiert, überschrieben wird. Sofern eine
Bereitstellung keine benutzerdefinierte Bindung oder eine explizite headerFilterStrategy bereitstellte, wurde die Undertow-spezifische Filterung nie
ausgeführt — das Strategieobjekt wurde konstruiert und sofort ersetzt, bevor es konsultiert werden konnte.
| Laufzeit | Verzeichnis | Stack |
|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-undertow 4.18.2 |
Camel Quarkus: Es gibt keine Erweiterung
camel-quarkus-undertow(Quarkus verwendet seinen eigenen Vert.x-HTTP-Stack), daher kann diese Komponente nicht auf Camel Quarkus ausgeführt werden — der Reproduzierer ist nur für Spring Boot.
Die Folge ist, dass das veraltete websocket.-Präfix der Exchange-Header an der Undertow-Transportgrenze in beide Richtungen nicht gefiltert wird.
Ein Undertow-HTTP-Consumer bildet daher eingehende Wire-Header dieser Form
(websocket.connectionKey, websocket.connectionKey.list, websocket.sendToAll, …) auf den Exchange ab, wo ein
Undertow-WebSocket-Producer sie als Dispatch-Anweisungen liest und dazu gebracht werden kann, an einen anderen Peer zu liefern als
den, den die Route vorgesehen hatte — dieselbe Klasse von Dispatch-Entführung wie das Atmosphere-WebSocket
CVE-2026-71300.
Dieser Reproduzierer sendet eine HTTP-Anfrage mit websocket.*-Dispatch-Headern sowie einem Camel*-Kontrollheader und
zeigt, was tatsächlich am Exchange ankam: Die websocket.*-Header überqueren die Grenze (ungefiltert), während Camel*
entfernt wird — was beweist, dass der Basisfilter (nicht der Undertow-Filter) wirksam war.
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
Erwartete Ausgabe bei einem betroffenen Build:
What actually reached the Exchange, as echoed by the undertow route:
websocket.connectionKey.list on Exchange = [attacker-connection-key]
websocket.sendToAll on Exchange = [true]
CamelFoo on Exchange (control) = []
>>> PROVEN: the undertow endpoint applied the base HttpHeaderFilterStrategy (Camel* filtered) instead of the
>>> UndertowHeaderFilterStrategy, so the legacy websocket.* dispatch headers passed onto the Exchange ...
| Eigenschaft | Wert |
|---|---|
| Komponente | camel-undertow (camel-undertow-starter) |
| CWE | CWE-20 (Unsachgemäße Eingabevalidierung) → CWE-74 (Injection) |
| Angriffsvektor | Eingehende websocket.*-Header an einem Undertow-HTTP-Consumer, die von einem Undertow-WebSocket-Producer als Dispatch-Anweisungen gelesen werden |
| Auswirkungen | Übernahme der Dispatch-Entscheidung des WebSocket-Producers — an beliebige WebSocket-Peers zustellen / von ihnen zurückhalten |
| Betroffene Versionen | From 4.11.0 before 4.14.9, from 4.15.0 before 4.18.4, from 4.19.0 before 4.22.0 |
| Behobene Versionen | 4.14.9, 4.18.4, 4.22.0 |
| JIRA | CAMEL-24360 |
| Danksagung | Andrea Cosentino (Apache Software Foundation); Barak Srour (Apiiro) |
Sicherheitshinweis: https://camel.apache.org/security/CVE-2026-78329.html
Der Undertow-Endpoint überschreibt die UndertowHeaderFilterStrategy der Bindung nicht mehr, die das
websocket.-Präfix (hinzugefügt in CAMEL-23588) in beide Richtungen filtert — die Dispatch-Header werden also an der
Transportgrenze entfernt, und ein externer Sender kann sie nicht mehr injizieren.
Dieses Repository wird für Bildungs- und Verteidigungszwecke veröffentlicht: um Apache-Camel-Anwendern zu helfen, die Schwachstelle zu verstehen, zu überprüfen, ob sie betroffen sind, und zu bestätigen, dass ein Upgrade das Problem behebt. Verwenden Sie dieses Material nicht gegen Systeme, die Sie nicht besitzen oder betreiben.