
Reproducer für CVE-2026-46726: Apache Camel camel-vertx-websocket ungefilterte Inbound-Header-Injektion, die SSRF und die Offenlegung von Geheimnissen über die Property-Placeholder-Auflösung ermöglicht (behoben in 4.14.8/4.18.3/4.21.0)
| Laufzeitumgebung | Verzeichnis | Stack | WebSocket-Feed |
|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 | separater Port :8090 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (bündelt Camel 4.20.0) | verwalteter Quarkus-HTTP-Server :8080 |
Beide sind betroffene Versionen (behoben in 4.14.8 / 4.18.3 / 4.21.0) und demonstrieren beide denselben Defekt:
VertxWebsocketConsumer#populateExchangeHeaders kopiert die Query-Parameter der WebSocket-Verbindung auf den
Exchange ohne HeaderFilterStrategy. Ein Client liefert CamelHttpUri als Query-Parameter und steuert den
nachgelagerten camel-http-Producer dorthin, wo immer er möchte (SSRF, CWE-918). Da der Producer außerdem Camel-
Property-Platzhalter auf dieser angreiferkontrollierten URI auflöst, wird ein injiziertes {{app.secret}} zu seinem
echten Wert expandiert und an den Collector des Angreifers gesendet (Informationsoffenlegung, CWE-200).
Die beiden Varianten unterscheiden sich nur darin, wo der Feed bereitgestellt wird: Die Erweiterung
camel-quarkus-vertx-websocketbindet den Consumer immer an den verwalteten Quarkus-HTTP-Server und lehnt jeden anderen Host/Port ab, daher bedient die Quarkus-Variante/feedauf:8080neben ihren REST-Endpunkten. Der Defekt ist davon nicht betroffen.
Jedes Unterverzeichnis ist ein eigenständiges Projekt mit eigenem Dockerfile, eigener docker-compose.yml und eigener README. Kurz
gesagt, für beide:
cd camel-spring-boot # oder: cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
| Eigenschaft | Wert |
|---|---|
| Komponente | camel-vertx-websocket |
| Betroffene Klasse | org.apache.camel.component.vertx.websocket.VertxWebsocketConsumer#populateExchangeHeaders (kein HeaderFilterStrategy bei eingehenden Query-/Pfad-Parametern) |
| CWE | CWE-20 → CWE-918 (SSRF) und CWE-200 (Informationsoffenlegung) |
| Auswirkung | Injizieren von CamelHttpUri über einen WebSocket-Query-Parameter → SSRF von einem nachgelagerten HTTP-Producer + Offenlegung von Env-/Property-/Vault-Geheimnissen über Platzhalterauflösung |
| Betroffene Versionen | Von 4.0.0 vor 4.14.8, von 4.15.0 vor 4.18.3, von 4.19.0 vor 4.21.0 |
| Behobene Versionen | 4.14.8, 4.18.3, 4.21.0 |
| JIRA | CAMEL-23532 (PR apache/camel#23285) |
| Anerkennung | Kamalpreet Singh |
Diese Reproduktionen werden nur für Sicherheitsforschung und autorisierte Tests bereitgestellt, für eine öffentlich offengelegte und behobene Schwachstelle. Verwenden Sie sie nicht gegen Systeme ohne ausdrückliche Genehmigung.