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-91858 — Reproducer eseguibile Spring Boot e Quarkus per CVE-2026-91858, una XXE in Apache Camel camel-fop tramite un TransformerFactory di terze parti, con verifica della versione affetta e di quella corretta. | Kitploit
Strumenti/GitHubGitHub/oscerd/cve-2026-91858
Strumenti DifensiviAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebApprendimento e Formazione
GitHuboscerd/cve-2026-91858

CVE-2026-91858

Reproducer eseguibile Spring Boot e Quarkus per CVE-2026-91858, una XXE in Apache Camel camel-fop tramite un TransformerFactory di terze parti, con verifica della versione affetta e di quella corretta.

Vedi Repository
101 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-91858 — camel-fop: XML External Entity (XXE) tramite un TransformerFactory di terze parti

Reproduttore proof-of-concept eseguibile per la vulnerabilità di Apache Camel in cui il FopProducer di camel-fop creava il proprio javax.xml.transform.TransformerFactory con solo FEATURE_SECURE_PROCESSING prima di eseguire una trasformazione identità sul corpo del messaggio XSL-FO. Sul transformer integrato nel JDK quella sola funzionalità svuota già i limiti accessExternalDTD/accessExternalStylesheet, quindi le risorse esterne vengono rifiutate. Ma quando un TransformerFactory JAXP di terze parti come Saxon-HE è presente nel classpath — ad esempio perché l'applicazione usa anche camel-xslt-saxon o camel-saxon — TransformerFactory.newInstance() restituisce quell'implementazione, e FEATURE_SECURE_PROCESSING da solo non limita l'accesso alle risorse esterne su di essa. Un DOCTYPE con un sottoinsieme esterno dichiarato nel corpo XSL-FO viene quindi risolto durante la trasformazione del corpo, così il documento di un mittente esterno può leggere file leggibili dal processo Camel o fargli emettere richieste verso host da esso indicati (CWE-611).

RuntimeDirectoryStack
Camel Spring Bootcamel-spring-boot/Spring Boot 3.5.13 + camel-fop 4.22.0 (affetto; corretto 4.22.1) + Saxon-HE 13.0
Camel Quarkuscamel-quarkus/Quarkus 3.39.0 + camel-quarkus-fop (Camel 4.22.0, affetto; controllo corretto CQ 3.40.0 / Camel 4.22.1) + Saxon-HE 13.0

Entrambi i moduli dimostrano il comportamento affetto e quello corretto rispetto al reale FopProducer. Saxon-HE è nel classpath in entrambi — è la precondizione per la falla; un deployment predefinito che usa il transformer del JDK non è affetto né prima né dopo la correzione.

Cosa dimostra

L'endpoint di verifica /exploit/attack avvia un callback HTTP in-process e invia un documento XSL-FO a fop:pdf il cui DOCTYPE dichiara una DTD esterna che punta a quel callback:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fo:root SYSTEM "http://localhost:<port>/external.dtd">
<fo:root …>…Hello…</fo:root>

L'oracolo è semplicemente se il callback è stato richiesto — una prova definitiva che la risorsa esterna è stata recuperata:

  • Vulnerabile: TransformerFactory.newInstance() restituisce Saxon, che con la sola elaborazione sicura recupera comunque la DTD esterna — il callback viene attivato (lo stesso meccanismo legge gli URL file://).
  • Corretto: ACCESS_EXTERNAL_DTD è impostato a "", quindi Saxon rifiuta la DTD esterna; il callback non viene mai attivato.
# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack     # affected: callback hit = true; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -Djava.awt.headless=true -jar target/cve-2026-91858-fop-xxe-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack     # fixed: callback hit = false; >>> Not exploited
# Camel Quarkus
cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack     # affected (Camel 4.22.0): callback hit = true
docker compose down
# Patched control: CQ 3.40.0 ships Camel 4.22.1
mvn clean package -Dcamel-quarkus.version=3.40.0 -Dquarkus.platform.version=3.40.0
java -Djava.awt.headless=true -jar target/quarkus-app/quarkus-run.jar &
curl -s http://localhost:8080/exploit/attack     # fixed: callback hit = false

Riepilogo della vulnerabilità

ProprietàValore
Componentecamel-fop (FopProducer)
CWECWE-611 (Limitazione impropria del riferimento a entità esterne XML)
GravitàMEDIA
Vettore di attaccoL'XSL-FO di un mittente esterno raggiunge un producer fop:, su un deployment che ha anche una TransformerFactory JAXP di terze parti (ad es. Saxon-HE) nel classpath
ImpattoLettura di file locali leggibili dal processo Camel; SSRF verso host interni indicati dal documento
Versioni interessateDalla 4.0.0 precedente alla 4.18.5, dalla 4.19.0 precedente alla 4.22.1 (solo con una TransformerFactory non-JDK presente)
Versioni corrette4.18.5, 4.22.1, 4.23.0
JIRACAMEL-24605
CreditoClaude Security Scan Tool

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

Il modulo Quarkus interessato è basato su CQ 3.39.0 (Camel 4.22.0). Il controllo corretto è in CQ 3.40.0 (Camel 4.22.1). Saxon-HE 13.0 è aggiunto a entrambi i moduli come sostituto di un'applicazione che utilizza anche camel-xslt-saxon/camel-saxon; senza una TransformerFactory non-JDK la vulnerabilità non è raggiungibile.

La correzione

FopProducer ora imposta anche XMLConstants.ACCESS_EXTERNAL_DTD e XMLConstants.ACCESS_EXTERNAL_STYLESHEET alla stringa vuota sulla TransformerFactory che crea (in aggiunta a FEATURE_SECURE_PROCESSING), allineandosi alla configurazione sicura di elaborazione XML usata da XmlConverter. L'accesso a DTD e fogli di stile esterni viene quindi rifiutato su qualsiasi implementazione JAXP che rispetti tali attributi, inclusa Saxon-HE.

Mitigazione se non è possibile aggiornare

Non inviare XSL-FO non attendibile a un producer fop:, oppure rimuovere la TransformerFactory JAXP alternativa (come Saxon-HE) dal classpath in modo che venga usato il transformer del JDK — che già rifiuta i DTD esterni in modalità di elaborazione sicura.

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 DTD esterno punta a un callback in-process su localhost; nulla al di fuori del reproducer viene contattato e nessun file sensibile viene letto. Non utilizzare questo materiale contro sistemi di cui non si è proprietari o gestori.

Scarica lo strumento