
Riproduttore e analisi per CVE-2026-79986, un path traversal in Apache Camel camel-azure-files in cui i nomi di elenco delle share escono dalla directory sottoposta a polling.
Repository di riproduzione per la vulnerabilità di Apache Camel in cui il consumer azure-files — che deriva dalla
stessa classe base RemoteFileConsumer degli altri consumer remote-file e compone il percorso remoto tramite un semplice
helper di concatenazione — costruisce il percorso remoto di ciascun file sottoposto a polling concatenando la directory
configurata con il nome riportato nel listing della share di Azure File, senza alcun controllo di containment. Un
nome nel listing che non è un singolo segmento di percorso veniva quindi risolto al di fuori della directory sottoposta
a polling per il recupero e, con delete/move/preMove/moveFailed/readLock=rename, per la cancellazione o la
rinomina.
Questo riproduttore è solo per l'autore — vedi sotto — ed è il fratello Azure-Files dei riproduttori eseguibili CVE-2026-79983 (
camel-ftp) e CVE-2026-79984 (camel-mina-sftp), che dimostrano la medesima causa radice e la medesima correzione end to end contro un server malevolo incorporato.
Questo repository contiene quindi il wiring esatto del consumer interessato (una route camel-azure-files reale,
vedi AzureFilesRoute.java / AzureFilesRoutes.java), documenta il meccanismo e la correzione, e rimanda la
dimostrazione end-to-end eseguibile ai riproduttori FTP e SFTP sopra citati.
| Runtime | Directory | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-azure-files 4.22.0 (interessato; corretto in 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-azure-files 3.29.0 (Camel 4.15.0, interessato) |
Entrambi i moduli compilano e si avviano correttamente senza credenziali Azure (la route è definita con
autoStartup=false). Imposta -Daz.enabled=true con az.account/az.share/az.sharedKey per puntare la route esatta
interessata a una File share di Azure propria.
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # prints the explanation + links to the runnable PoCs
docker compose down
| Proprietà | Valore |
|---|---|
| Componente | camel-azure-files (schema azure-files) |
| CWE | CWE-22 (Limitazione impropria di un percorso a una directory ristretta) |
| Gravità | ALTA |
| Vettore di attacco | Un nome di elenco di condivisioni (fornito dal server) che non è un singolo segmento di percorso |
| Impatto | Lettura — e, con delete/move/readLock=rename, cancellazione o ridenominazione — di file al di fuori della directory sottoposta a polling, utilizzando le credenziali dell'endpoint |
| Versioni interessate | Dalla 4.0.0 precedente alla 4.18.5, dalla 4.19.0 precedente alla 4.22.1 |
| Versioni corrette | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24487 |
| Riconoscimento | Dilrevx di NSSL, SJTU |
Avviso: https://camel.apache.org/security/CVE-2026-79986.html
Il consumer azure-files ora applica lo stesso controllo di contenimento degli altri consumer di file remoti: un percorso risolto che ricade al di fuori della directory sottoposta a polling viene saltato con un avviso, così un nome di elenco contenente segmenti di traversal non raggiunge più l'operando di recupero/cancellazione/ridenominazione.
Limitare il consumer con filter/antInclude/include per accettare solo nomi a singolo segmento, ed evitare
delete/move/preMove/moveFailed/readLock=rename su condivisioni i cui elenchi non sono completamente attendibili.
Questo repository è pubblicato per scopi educativi e difensivi: per aiutare gli utenti di Apache Camel a comprendere la vulnerabilità, verificare se sono interessati e confermare che l'aggiornamento la risolve. Non utilizzare questo materiale contro sistemi di cui non si è proprietari o gestori.