
Lauffähiger Spring Boot- und Quarkus-Reproducer für CVE-2026-85254, der die Umgehung der Header-Echo-Unterdrückung in Apache Camel camel-platform-http über die Groß-/Kleinschreibung von Header-Namen demonstriert, mit betroffenen und korrigierten Kontrollen.
Lauffähiger Proof-of-Concept-Reproduzierer für die Apache-Camel-Schwachstelle, bei der die Schutzmaßnahme, die verhindert, dass ein Request-Header in die Antwort gespiegelt wird, Header-Namen unter Beachtung der Groß-/Kleinschreibung verglich, während HTTP-Header-Namen die Groß-/Kleinschreibung nicht beachten. Ein Aufrufer konnte die Unterdrückung einfach umgehen, indem er die Groß-/Kleinschreibung des Header-Namens variierte — und unter HTTP/2 stimmte sie überhaupt nie überein, weil das Protokoll vorschreibt, dass Header-Namen auf der Leitung kleingeschrieben sein müssen, sodass die Unterdrückung bei jeder HTTP/2-Anfrage wirkungslos war. Die Folge ist, dass vom Aufrufer gewählter Inhalt in der Antwort zurückgespiegelt wird (die Grundlage für Response-Splitting- und Cache-Poisoning-Angriffe), und es werden genau jene Credential-Header (Authorization, Cookie, Proxy-Authorization) gespiegelt, die die Unterdrückung aus der Antwort heraushalten soll.
| 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), Camels Vert.x-Server |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-platform-http (Camel 4.15.0, betroffen; behobene Kontrolle CQ 3.40.0 / Camel 4.22.1) |
Beide Module demonstrieren das betroffene und das behobene Verhalten.
Ein platform-http:/echo-Endpunkt wird bereitgestellt. Seine HeaderFilterStrategy soll gängige Request-Header aus der Antwort unterdrücken. Der Treiber prüft die Strategie direkt und sendet außerdem eine Live-Anfrage mit einem kleingeschriebenen (HTTP/2-artigen) Credential-Header.
Authorization (kanonisch), aber nicht authorization (kleingeschrieben), und eine Live-Anfrage mit authorization: Bearer <secret> wird in der Antwort zurückgespiegelt.# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: lowercase header echoed back; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85254-platform-http-header-echo-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: suppressed; >>> Not exploited
# Camel Quarkus
cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected (Camel 4.15.0): lowercase header echoed back
docker compose down
# Patched control: CQ 3.40.0 ships Camel 4.22.1
mvn clean package -Dcamel-quarkus.version=3.40.0 -Dquarkus.platform.version=3.40.0
java -jar target/quarkus-app/quarkus-run.jar &
curl -s http://localhost:8080/exploit/attack # fixed: suppressed
| Eigenschaft | Wert |
|---|---|
| Komponente | camel-platform-http (PlatformHttpEndpoint, COMMON_HTTP_REQUEST_HEADERS) |
| CWE | CWE-178 (Improper Handling of Case Sensitivity) |
| Schweregrad | MITTEL |
| Angriffsvektor | Ein Request-Header, dessen Name anders geschrieben ist als die kanonische Schreibweise (z. B. jede HTTP/2-Anfrage) |
| Auswirkung | Vom Aufrufer gewählter Header-Inhalt wird in die Antwort zurückgespiegelt — Response-Splitting / Cache-Poisoning sowie Reflexion von Credential-Headern, die durch die Unterdrückung zurückgehalten werden sollen |
| 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-24453 |
| Danksagung | Claude Security Scan Tool |
Advisory: https://camel.apache.org/security/CVE-2026-85254.html
PlatformHttpEndpoint hält COMMON_HTTP_REQUEST_HEADERS nun in einem
TreeSet(String.CASE_INSENSITIVE_ORDER) mit Groß-/Kleinschreibungs-Unabhängigkeit statt in einem Set.of(...) mit
Groß-/Kleinschreibungs-Abhängigkeit, sodass die Unterdrückung unabhängig davon greift, wie der Aufrufer den Header-Namen
geschrieben hat — einschließlich der vollständig kleingeschriebenen Namen, die HTTP/2 erfordert.
Entfernen Sie die betreffenden Header vor dem Camel-Endpoint oder entfernen Sie sie in der Route aus der Antwort, anstatt sich auf die eingebaute Unterdrückung zu verlassen.
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. Der injizierte Header-Wert ist ein inertes lokales Fixture. Verwenden Sie dieses Material nicht gegen Systeme, die Ihnen nicht gehören oder die Sie nicht betreiben.