
Lauffähiger Spring-Boot-Proof-of-Concept zur Reproduktion von CVE-2026-84176, einer CORS-Schwachstelle mit Credentials und beliebigem Origin in Apache Camel camel-platform-http-vertx, inklusive Verifikationsschritten.
Lauffähiger Proof-of-Concept-Reproduzierer für die Apache-Camel-Schwachstelle, bei der VertxPlatformHttpServerSupport. createCorsHandler() Access-Control-Allow-Credentials: true außerhalb der Origin-Prüfung setzte — sodass dieser Header bei
jeder Antwort auf eine Anfrage mit einem Origin-Header mitgesendet wurde, einschließlich Antworten an Origins, die der Handler
gerade eben abgelehnt hatte. Wenn camel.server.cors.origins nicht gesetzt ist, behandelt der Handler jeden Origin als erlaubt und
gibt den Origin des Aufrufers als Access-Control-Allow-Origin zurück. Zusammen erzeugen diese beiden Verhaltensweisen die
credentialed any-origin-Konfiguration, die die Fetch-Spezifikation sich weigert, als literales Wildcard auszudrücken — genau
deshalb ist das Reflektieren des Origins der übliche Weg, diese Regel zu umgehen. Eine Seite auf einem beliebigen Origin kann
daher mit Anmeldedaten versehene Cross-Origin-Anfragen an den Camel-Endpunkt stellen und die Antworten lesen.
| Laufzeitumgebung | Verzeichnis | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-platform-http-vertx 4.22.0 (betroffen; behoben in 4.22.1) |
Camel Quarkus: nicht anwendbar. Der verwundbare Handler befindet sich in Camels eigenem eigenständigen Vert.x-platform-http-Server (
camel-platform-http-vertx). Bei Camel Quarkus wirdplatform-httpvom Quarkus-HTTP-Server bereitgestellt und CORS wird von Quarkus (quarkus.http.cors.*) behandelt, nicht voncreateCorsHandler(), sodass dieser spezifische Defekt dort nicht erreichbar ist. (Es gibt außerdem keinencamel-platform-http-vertx-starter; das Spring-Boot-Modul verwendet das einfachecamel-platform-http-vertx-Artefakt, das seinen eigenen Vert.x-Server unabhängig vom Spring-Boot-Webserver betreibt.)
Die Anwendung startet Camels Vert.x-platform-http-Server auf Port 8081 mit aktiviertem CORS und ohne konfigurierte Origins sowie
einer Route platform-http:/api. Der Angreifer sendet GET /api mit Origin: https://evil.example (ein Origin, der nie
auf der Allow-Liste stand) und untersucht die Antwort:
Access-Control-Allow-Origin: https://evil.example (reflektiert) und
Access-Control-Allow-Credentials: true.Access-Control-Allow-Credentials wird diesem Origin nicht mehr gewährt.cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
Erwartete Ausgabe beim betroffenen Build:
Response CORS headers:
Access-Control-Allow-Origin = https://evil.example
Access-Control-Allow-Credentials = true
>>> PROVEN: the endpoint echoes the attacker's Origin ... and sends Access-Control-Allow-Credentials: true ...
| Eigenschaft | Wert |
|---|---|
| Komponente | camel-platform-http-vertx |
| CWE | CWE-942 (Permissive Cross-domain Policy with Untrusted Domains) |
| Schweregrad | MITTEL |
| Angriffsvektor | Eine Cross-Origin-(Credentialed-)Anfrage mit einem Origin-Header an einen platform-http-vertx-Endpunkt mit aktiviertem CORS und ohne konfigurierte Origins |
| Auswirkung | Jede Origin kann Credentialed-Cross-Origin-Anfragen stellen und die Antworten lesen |
| Betroffene Versionen | Ab 4.0.0 vor 4.18.5, ab 4.19.0 vor 4.22.1 |
| Behobene Versionen | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24436 |
| Danksagung | Claude Security Scan Tool |
Advisory: https://camel.apache.org/security/CVE-2026-84176.html
Access-Control-Allow-Credentials: true wird nicht länger bedingungslos für jede Origin ausgegeben; Credentials werden
einer Origin, die nicht ausdrücklich erlaubt ist, nicht gewährt, sodass die Kombination aus reflektierter Origin plus
Credentials („credentialed any-origin“) nicht mehr auftritt.
Legen Sie eine explizite Allow-List camel.server.cors.origins fest und verlassen Sie sich nicht auf Credentialed-
Cross-Origin-Zugriff von beliebigen Origins; platzieren Sie den Endpunkt hinter einem Proxy, der eine korrekte
CORS-Richtlinie durchsetzt.
Dieses Repository wird zu Bildungs- und Verteidigungszwecken veröffentlicht: um Apache-Camel-Nutzern zu helfen, die Schwachstelle zu verstehen, zu prüfen, ob sie betroffen sind, und zu bestätigen, dass ein Upgrade sie behebt. Verwenden Sie dieses Material nicht gegen Systeme, die Ihnen nicht gehören oder die Sie nicht betreiben.