Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-79983 — PoC riproducibile ed eseguibile per CVE-2026-79983, una path traversal nei consumer camel-ftp di Apache Camel, con fixture di server FTP malevoli e build vulnerabili e corrette. | Kitploit
Strumenti/GitHubGitHub/oscerd/cve-2026-79983
Strumenti DifensiviAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e Formazione
GitHuboscerd/cve-2026-79983

CVE-2026-79983

PoC riproducibile ed eseguibile per CVE-2026-79983, una path traversal nei consumer camel-ftp di Apache Camel, con fixture di server FTP malevoli e build vulnerabili e corrette.

Vedi Repository
123 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-79983 — camel-ftp: il consumer costruisce il percorso remoto dal listing del server senza contenimento

Proof-of-concept riproducibile ed eseguibile per la vulnerabilità di Apache Camel in cui i consumer di file remoti effettuano il polling di una directory su un server remoto e costruiscono il percorso remoto assoluto di ciascun file concatenando la directory configurata con il nome del file riportato nel listing della directory del server, senza alcuna normalizzazione lessicale e senza verificare che il risultato rimanga all'interno della directory sottoposta a polling. Quel percorso diventa poi l'operando per il recupero (sempre), e per la cancellazione o la rinomina quando sono configurati delete=true, move, preMove, moveFailed o readLock=rename.

Un nome presente nel listing non è un dato controllato dalla route — è fornito dal server remoto, e il canale di controllo FTP non ha protezione dell'integrità, quindi un attaccante on-path può riscrivere una risposta LIST, e un server compromesso o multi-tenant può emettere direttamente un tale nome. L'opzione documentata e attiva per impostazione predefinita jailStartingDirectory non ha vincolato questo operando remoto.

RuntimeDirectoryStack
Camel Spring Bootcamel-spring-boot/Spring Boot 3.5.13 + camel-ftp 4.22.0 (affetto; corretto in 4.22.1)
Camel Quarkuscamel-quarkus/Quarkus 3.29.0 + camel-quarkus-ftp 3.29.0 (Camel 4.15.0, affetto)

La correzione è inclusa in Camel 4.18.5 / 4.22.1 / 4.23.0; il modulo Spring Boot esegue sia la build affetta (4.22.0) sia la build corretta (4.22.1). Nessuna versione rilasciata di Camel Quarkus include ancora un Camel corretto.

Cosa dimostra

L'app incorpora un server FTP deliberatamente malevolo (Apache MINA FtpServer con un VFS in memoria) che elenca, nella directory sottoposta a polling /upload:

  • normal.txt — un file legittimo all'interno della directory, e
  • d/../../outside.txt — una voce artigianale il cui nome non è un singolo segmento di percorso. Non inizia con un punto (quindi la regola di Camel sui file nascosti non la intercetta), e /upload + d/../../outside.txt si risolve in /outside.txt, un livello sopra la directory sottoposta a polling.

Un semplice consumer FTP di Camel effettua il polling di /upload. Sulla build affetta recupera entrambe le voci — incluso /outside.txt, un file che non dovrebbe mai raggiungere. Sulla build corretta mantiene normal.txt e salta la voce che esce dalla directory, registrando Skipping file as it resolves outside the starting directory: upload/d/../../outside.txt.

cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down

Output previsto sulla build interessata:

What the Camel consumer retrieved:
    name=[normal.txt]  (inside)
    name=[d/../../outside.txt]  <<< FILE FROM OUTSIDE THE POLLED DIRECTORY
        content: OUTSIDE-SECRET (/outside.txt, a file the consumer should never reach)

Paths the server was asked to read:
    upload/normal.txt  ->  /upload/normal.txt
    upload/d/../../outside.txt  ->  /outside.txt

Riepilogo della vulnerabilità

ProprietàValore
Componentecamel-ftp (schemi ftp, ftps, sftp)
CWECWE-22 (Limitazione impropria di un percorso a una directory ristretta)
GravitàALTA
Vettore di attaccoUna voce LIST (fornita dal server, riscrivibile su un canale di controllo FTP non autenticato) che non è un singolo segmento di percorso
ImpattoLettura — 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 interessateDalla 4.0.0 precedente alla 4.18.5, dalla 4.19.0 precedente alla 4.22.1
Versioni corrette4.18.5, 4.22.1, 4.23.0
JIRACAMEL-24487
RiconoscimentoDilrevx di NSSL, SJTU

Avviso: https://camel.apache.org/security/CVE-2026-79983.html

La correzione

Un overload di GenericFileHelper.isWithinDirectory sensibile ai separatori e una strategia GenericFileConsumer.isWithinStartingDirectory (consultata da isValidFile quando jailStartingDirectory è abilitato) compattano il percorso risolto e verificano, sui confini dei segmenti di percorso, che esso si risolva ancora all'interno della directory sottoposta a polling. Un file che si risolve all'esterno viene saltato con un avviso (così le altre voci legittime nella stessa lista vengono comunque elaborate). RemoteFileConsumer e SmbConsumer sovrascrivono il controllo; l'implementazione base locale è un no-op, poiché i nomi delle liste locali sono sempre singoli segmenti.

Mitigazione se non è possibile aggiornare

Preferire sftp/ftps a ftp in modo che la lista non possa essere riscritta in transito, e verificare la chiave host/certificato. Limitare il consumer con filter, antInclude o include per accettare solo nomi a singolo segmento, ed evitare delete=true/move/preMove/moveFailed/readLock=rename verso server le cui liste non sono completamente attendibili. Ove possibile, confinare l'account del server alla directory sottoposta a polling.

Disclaimer

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. Il server malevolo e il "secret" sono fixture locali inerti. Non utilizzare questo materiale contro sistemi di cui non si è proprietari o gestori.

Scarica lo strumento