
Lauffähiger Proof-of-Concept für CVE-2026-80312, eine Fail-Open-OAuth-Absicherung in Apache Camel camel-oauth, mit betroffenen und korrigierten Spring-Boot- und Quarkus-Reproducern.
Lauffähiger Proof-of-Concept-Reproduzierer für die Apache-Camel-Schwachstelle, bei der die camel-oauth-Prozessoren, die eine Route absichern, den Exchange nicht stoppten, wenn die Authentifizierung nicht abgeschlossen werden konnte. Wo ein Fehlschlag beim Aufbau einer authentifizierten Sitzung das Routing hätte beenden und einen Fehler zurückgeben müssen, setzte der Prozessor einen Antwortcode, gab die Kontrolle aber an die Route zurück — sodass die Anfrage zum geschützten Endpunkt weiterlief, als wäre die Authentifizierung erfolgreich gewesen. Das Ergebnis ist ein Fail-Open-Authentifizierungsguard: Ein nicht authentifizierter Aufrufer erreicht, was die Route als Nächstes tut, auf dem normalen Anfragepfad, ohne besondere Konfiguration.
| Laufzeitumgebung | Verzeichnis | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-oauth 4.22.0 (betroffen; behoben in 4.22.1), HTTP über camel-undertow |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.39.0 + camel-quarkus-oauth 3.39.0 (Camel 4.22.0, betroffen; behoben in Control 3.40.0 / Camel 4.22.1), HTTP über camel-quarkus-platform-http |
Beide Module demonstrieren das betroffene und das behobene Verhalten. (Das Spring-Boot-Modul verwendet camel-undertow als HTTP-Transport — der Guard ist transportunabhängig, und camel-platform-http-starter 4.22.0 ist gegen eine andere Spring-Boot-Linie gebaut als 3.5.x.)
Eine Route stellt /protected bereit, abgesichert durch OAuthBearerTokenProcessor; nur eine authentifizierte Anfrage sollte die nachfolgenden geschützten Schritte erreichen. Der Angreifer sendet GET /protected ohne Authorization-Header.
exchange.setRouteStop(true) zurück, sodass die Route zu den geschützten Schritten durchfiel → HTTP 200 und der geschützte Body.rejectUnauthorized(...) auf, was mit 401 antwortet und die Route stoppt → die geschützten Schritte werden nie ausgefü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:
Sent: GET /protected (NO Authorization header)
Response status: 200
Response body : PROTECTED-DATA: reached the protected endpoint WITHOUT authenticating
>>> PROVEN: the OAuth guard failed open ...
Beim festen Build: Response status: 401, Body Authorization header, geschützte Schritte wurden nie ausgeführt.
| Eigenschaft | Wert |
|---|---|
| Komponente | camel-oauth (Route-Guard-Prozessoren, z. B. OAuthBearerTokenProcessor) |
| CWE | CWE-287 (Improper Authentication) |
| Schweregrad | HOCH |
| Angriffsvektor | Eine gewöhnliche Anfrage an eine OAuth-geschützte Route, bei der die Authentifizierung nicht abgeschlossen werden kann (hier: kein Authorization-Header) |
| Auswirkung | Nicht authentifizierter Zugriff auf den geschützten Endpunkt (Umgehung der Authentifizierung) |
| Betroffene Versionen | Ab 4.11.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-24411 |
| Danksagung | Claude Security Scan Tool |
Advisory: https://camel.apache.org/security/CVE-2026-80312.html
Die Guard-Prozessoren rufen nun rejectUnauthorized(...) / reject(...) auf jedem Pfad auf, auf dem die Authentifizierung nicht abgeschlossen werden kann. Dies setzt den HTTP-Status (401) und ruft exchange.setRouteStop(true) auf, sodass kein nachfolgender Schritt für eine Anfrage ausgeführt wird, die der Prozessor nicht authentifiziert hat. „Das Fehlen von Anmeldedaten muss mindestens so strikt abgelehnt werden wie ungültige Anmeldedaten."
Platzieren Sie nach dem Guard eine explizite Autorisierungsprüfung, oder stellen Sie sicher, dass die Route beendet wird, wenn die Exchange-Eigenschaft CamelOAuthUserProfile fehlt, bis Sie aktualisieren können.
Dieses Repository wird zu Bildungs- und Verteidigungszwecken veröffentlicht: um Apache-Camel-Nutzern zu helfen, die Schwachstelle zu verstehen, zu überprü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.