
Proof-of-Concept-Reproduktionen für die Apache-Camel-Path-Traversal-Schwachstelle (CVE-2026-66906) in camel-azure-storage-blob, die beliebiges Dateischreiben über Blob-Namen-Traversal demonstrieren, mit Details zu betroffenen und behobenen Versionen.
downloadBlobToFile Pfad-TraversalAusführbare Proof-of-Concept-Reproduktionen für dieselbe Apache-Camel-Schwachstelle, eine pro Laufzeitumgebung:
| Laufzeitumgebung | Verzeichnis | Stack |
|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-azure-storage-blob 4.18.2 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (bündelt Camel 4.20.0) |
Bei beiden handelt es sich um betroffene Versionen (die Schwachstelle ist in 4.14.9 / 4.18.4 / 4.22.0 behoben), und beide zeigen denselben Fehler: Der camel-azure-storage-blob-Consumer lädt Container-Blobs in das lokale Dateisystem herunter, und zwar in das durch die Option fileDir angegebene Verzeichnis, wobei das lokale Ziel als new File(fileDir, client.getBlobName()) aufgebaut wird — der Remote-Blob-Name also exakt so, wie ihn das Azure SDK gemeldet hat, ohne Normalisierung und ohne Prüfung, dass der aufgelöste Speicherort innerhalb von fileDir bleibt. Der Blob-Name wird nicht über die Route gesteuert: Der Consumer listet den Container auf (BlobConsumer.createBatchExchangesFromContainer) und lädt jeden Blob herunter. Ein Blob, dessen Name ../-Segmente enthält, wird daher außerhalb von fileDir geschrieben (CWE-22, Pfad-Traversal → beliebiges Schreiben von Dateien).
Jedes Unterverzeichnis ist in sich abgeschlossen (eigenes Dockerfile, eigene docker-compose.yml, die einen Azurite-Emulator startet, sowie 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
Erwartete Ausgabe bei einem betroffenen Build (beide Varianten):
Files inside the intended download directory /app/downloads:
- report.txt
File written OUTSIDE it, at /tmp/pwned-66906.txt: true
content: PWNED via path traversal — CVE-2026-66906
>>> PROVEN: the blob name's ../ segments escaped the configured fileDir directory ... : true
| Eigenschaft | Wert |
|---|---|
| Komponente | camel-azure-storage-blob (Spring Boot: camel-azure-storage-blob-starter; Quarkus: camel-quarkus-azure-storage-blob) |
| CWE | CWE-22 (Improper Limitation of a Pathname to a Restricted Directory — Path Traversal) |
| Angriffsvektor | Ein Container-Blob, dessen Name ../-Segmente enthält und der vom Consumer bei gesetzter fileDir-Option heruntergeladen wird |
| Auswirkung | Beliebiges Schreiben von Dateien außerhalb des konfigurierten fileDir-Verzeichnisses |
| Betroffene Versionen | Von 4.0.0 vor 4.14.9, von 4.15.0 vor 4.18.4, von 4.19.0 vor 4.22.0 |
| Behobene Versionen | 4.14.9, 4.18.4, 4.22.0 |
| JIRA | CAMEL-23942 |
| Anerkennung | n0mi1k; Hiep Nguyen |
Sicherheitshinweis: https://camel.apache.org/security/CVE-2026-66906.html
Der Consumer löst das Download-Ziel nun auf und beschränkt es auf das konfigurierte fileDir-Verzeichnis (über AzureFileNameHelper.resolveWithinDirectory); Blob-Namen, die es verlassen würden, werden abgewiesen. Dieselbe Korrektur gilt auch für die Schwesterkomponenten camel-azure-storage-datalake (CVE-2026-60093).
Dieses Repository wird zu Bildungs- und Abwehrzwecken veröffentlicht: um Apache-Camel-Benutzern zu helfen, die Schwachstelle zu verstehen, zu überprüfen, ob sie betroffen sind, und zu bestätigen, dass ein Upgrade sie behebt. Die geschriebene Datei ist ein harmloser Marker unter /tmp. Verwenden Sie dieses Material nicht gegen Systeme, die Sie nicht besitzen oder betreiben.