
Reproducer e analisi per CVE-2026-79985, una path traversal in Apache Camel camel-smb in cui i nomi degli elenchi di condivisioni aggirano il contenimento delle directory, con dettagli sulle route interessate e sulla correzione.
Repository di riproduzione per la vulnerabilità di Apache Camel in cui il consumer smb costruisce il percorso remoto di ciascun
file sottoposto a polling concatenando la directory configurata con il nome riportato nel listing della share SMB, senza alcun
controllo di contenimento. SmbConsumer percorre il listing autonomamente (non tramite RemoteFileConsumer), saltando solo le voci esatte
. e .., per cui un nome contenente segmenti di traversal in qualsiasi altra forma veniva concatenato senza controlli — risolvendosi
in un percorso esterno alla directory sottoposta a polling per il recupero e, con delete/move/preMove/moveFailed/
readLock=rename, in cancellazione o rinomina.
Questo riproduttore è solo per l'autore — vedi sotto — ed è la controparte SMB 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.
Come afferma l'advisory stesso, raggiungere il problema tramite SMB
"richiede un server che emetta un nome nel listing che non sia un singolo segmento di percorso, cosa che un'implementazione SMB2 conforme non fa; l'esposizione è stata corretta sulla stessa base degli altri consumer di file remoti piuttosto che da una proof of concept dimostrata contro questo schema."
Non esiste un server SMB malevolo incorporabile che emetta un tale nome (a differenza di FTP, dove il VFS di Apache MINA FtpServer può
essere indotto a farlo, e di SFTP, dove getShortName di Apache MINA SSHD può essere sovrascritto). Pertanto questo repository contiene
l'esatta configurazione del consumer interessato (una route camel-smb reale, vedi SmbRoute.java / SmbRoutes.java) e documenta
il meccanismo e la correzione, demandando 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-smb 4.22.0 (interessato; corretto in 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-smb 3.29.0 (Camel 4.15.0, interessato) |
Entrambi i moduli compilano e si avviano correttamente senza un server SMB (la route è definita con autoStartup=false). Impostare
-Dsmb.enabled=true con smb.host/smb.share/smb.username/smb.password per puntare l'esatta route interessata a
un server SMB proprio.
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-smb (schema smb) |
| 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.2.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-79985.html
SmbConsumer ora applica lo stesso controllo di contenimento degli altri consumer di file remoti: un percorso risolto che cade
al di fuori della directory sottoposta a polling viene saltato con un avviso, così un nome di elenco che trasporta 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 verso server i cui elenchi non sono completamente attendibili. Ove
possibile, confinare l'account del server alla directory sottoposta a polling.
Questo repository è pubblicato per scopi educativi e difensivi: per aiutare gli utenti di Apache Camel a comprendere la vulnerabilità, verificare se ne sono interessati e confermare che l'aggiornamento la risolve. Non utilizzare questo materiale contro sistemi di cui non si è proprietari o gestori.