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-95629 — Riproduttore proof-of-concept eseguibile per CVE-2026-95629, una vulnerabilità di path traversal in Apache Camel camel-docling in cui l'header output-path raggiunge verbatim l'opzione --output di docling. | Kitploit
Strumenti/GitHubGitHub/oscerd/cve-2026-95629
Strumenti DifensiviAnalisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPaper e RicercaApprendimento e Formazione
GitHuboscerd/cve-2026-95629

CVE-2026-95629

Riproduttore proof-of-concept eseguibile per CVE-2026-95629, una vulnerabilità di path traversal in Apache Camel camel-docling in cui l'header output-path raggiunge verbatim l'opzione --output di docling.

Vedi Repository
1 giorno 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-95629 — camel-docling: l'header del percorso di output raggiungeva --output alla lettera

Riproduttore proof-of-concept eseguibile per la vulnerabilità di Apache Camel in cui DoclingProducer, eseguendo lo strumento esterno docling in modalità CLI (quella predefinita), passava il valore dell'header CamelDoclingOutputFilePath al flag --output di docling alla lettera: non normalizzato, un percorso assoluto o un percorso contenente segmenti .. accettato così com'era, e nessuna opzione dell'endpoint in grado di confinarlo.

RuntimeDirectoryStack
Camel Spring Bootcamel-spring-boot/Spring Boot 3.5.13 + camel-docling 4.22.1
Camel Quarkuscamel-quarkus/Camel Quarkus 3.39.0 (Quarkus 3.39.0, Camel 4.22.0)

Cosa dimostra

Docling scrive il risultato della conversione — Markdown, HTML, JSON o testo — in quella directory, nominando il file come il file di input, e successivamente il producer rimuove solo la propria directory temporanea, quindi il file rimane al suo posto. Un soggetto in grado di impostare l'header poteva quindi far creare l'output della conversione in qualsiasi directory in cui il processo Camel può scrivere.

cd camel-spring-boot          # or: cd camel-quarkus
mvn clean package
docker compose up -d --build
until [ "$(curl -s http://localhost:8080/exploit/ready)" = "Started" ]; do sleep 1; done
curl -s http://localhost:8080/exploit/attack
docker compose down

Output su una build interessata (identico su entrambi i runtime):

1) No header at all - the producer picks its own temporary directory
     argv docling received: --to md --ocr-lang en --output /tmp/docling-<uuid> /tmp/docling-<uuid>/docling-<n>.tmp
     exchange outcome: ok

2) An ABSOLUTE path of the attacker's choosing
     header CamelDoclingOutputFilePath = /tmp/cve-2026-95629-attacker-chosen
     argv docling received: ... --output /tmp/cve-2026-95629-attacker-chosen ...

3) A path with .. segments - watch whether they survive into the argv below
     header CamelDoclingOutputFilePath = /tmp/cve-2026-95629-attacker-chosen/../cve-2026-95629-escaped
     argv docling received: ... --output /tmp/cve-2026-95629-attacker-chosen/../cve-2026-95629-escaped ...

4) CONTROL - asking for the same thing through CamelDoclingCustomArguments instead
     REJECTED by Camel: IllegalArgumentException: Custom argument '--output' is not allowed because the
     output directory is managed by the producer. Use the CamelDoclingOutputFilePath header or endpoint
     configuration instead.

Files now sitting in directories the route never chose:
  /tmp/cve-2026-95629-attacker-chosen/document.md : true
  /tmp/cve-2026-95629-escaped/document.md         : true

>>> PROVEN: ...

La sonda 4 è la forma del problema. La validazione degli argomenti personalizzati aggiunta dalla correzione per CVE-2026-40047 rifiuta --output e -o in CamelDoclingCustomArguments e indica ai chiamanti di scegliere la directory di output con questo header invece — quindi l'unico valore che decide dove scrive docling era l'unico valore che raggiungeva la riga di comando senza nessuno dei controlli applicati agli argomenti personalizzati.

Lo scambio stesso fallisce dopo le sonde 2 e 3 ("failed afterwards"), perché il producer cerca poi l'output convertito nella propria directory temporanea e non lo trova lì. È un dettaglio estetico: la scrittura è già avvenuta, come mostra l'elenco dei file alla fine.

Come è collegato

Nessuna installazione di docling necessaria. L'opzione doclingCommand dell'endpoint punta a un sostituto che registra le chiamate alla CLI, il quale sia registra il vettore di argomenti ricevuto sia scrive un file nella directory indicata da --output, come fa docling. Vengono eseguiti il vero DoclingProducer e la vera addOutputDirectoryArguments().

Solo la modalità CLI usa questo header; la modalità docling-serve no.

Raggiungibilità

CamelDoclingOutputFilePath appartiene al namespace degli header di Camel, che i consumer che applicano il filtraggio predefinito degli header di Camel — ad esempio i consumer JMS e Kafka — rimuovono dai messaggi in arrivo. Il problema si raggiunge quando una route inoltra valori influenzati dall'esterno nell'header, oppure quando un consumer mappa gli header in arrivo senza quel filtraggio.

Il contenuto del file scritto è la conversione del documento trasportato dal messaggio, quindi è modellato da chi fornisce quel documento senza essere scritto byte per byte; quando il documento arriva nel corpo del messaggio, il producer lo memorizza con un nome temporaneo casuale, che il file di output porta poi con sé.

Riepilogo della vulnerabilità

ProprietàValore
Componentecamel-docling (DoclingProducer.addOutputDirectoryArguments())
CWECWE-22 (Improper Limitation of a Pathname to a Restricted Directory)
GravitàMedia
Vettore di attaccoUna directory assoluta o contenente .. nell'header CamelDoclingOutputFilePath
ImpattoOutput di conversione creato in qualsiasi directory in cui il processo Camel può scrivere
Versioni interessateDalla 4.15.0 precedente alla 4.18.5, dalla 4.19.0 precedente alla 4.22.2
Versioni corrette4.18.5, 4.22.2, 4.23.0
JIRACAMEL-24894
CreditoZhixi "Jace" Sun, ricercatore indipendente di sicurezza

Advisory: https://camel.apache.org/security/CVE-2026-95629.html

Problema correlato nello stesso componente, stessa ondata di rilascio: CVE-2026-95628 (percorsi assoluti accettati come valori di argomenti personalizzati).

La correzione — e perché aggiornare da solo non basta

L'header ora riceve la stessa normalizzazione e l'opzionale contenimento nella directory di base dei percorsi di input, tramite resolveWithinOutputBaseDirectory(). Ma l'opzione outputBaseDirectory dell'endpoint aggiunta dalla correzione è non impostata per impostazione predefinita, e la sua stessa documentazione afferma che, quando è vuota, non viene applicata alcuna restrizione di directory e il valore dell'header viene solo normalizzato.

Verificato su 4.22.1 → 4.22.2, con outputBaseDirectory lasciata non impostata:

3) A path with .. segments - watch whether they survive into the argv below
     argv docling received: ... --output /tmp/cve-2026-95629-escaped ...        <- normalized

Files now sitting in directories the route never chose:
  /tmp/cve-2026-95629-attacker-chosen/document.md : true                       <- still written
  /tmp/cve-2026-95629-escaped/document.md         : true

>>> PARTLY CLOSED: the header was normalized before reaching --output ... It can still name any directory
>>> the Camel process can write to, because the outputBaseDirectory option the fix added is UNSET by
>>> default ... Set outputBaseDirectory on every docling endpoint whose CamelDoclingOutputFilePath header
>>> can carry a value influenced from outside the deployment; upgrading alone is not enough.

Il driver segnala quello stato separatamente invece di definirlo corretto, perché è lo stato in cui la maggior parte dei deployment si troverà subito dopo un aggiornamento. Dopo l'aggiornamento, impostare outputBaseDirectory su ogni endpoint docling il cui header può trasportare un valore influenzabile dall'esterno.

Corretto su main in apache/camel#26737 (48485d40), backportato su camel-4.22.x in #27365 e su camel-4.18.x in #27362.

Scarica lo strumento