
Un POC per la vulnerabilità CVE-2025-66516 di Apache Tika solo per scopi educativi
Solo uso didattico/test autorizzati | Licenza | Politica di sicurezza
Questo repository contiene un exploit proof-of-concept (POC) per CVE-2025-66516, una vulnerabilità di injection XML External Entity (XXE) nelle versioni di Apache Tika precedenti alla 3.2.2. La vulnerabilità interessa il parser XFA (XML Forms Architecture) del componente tika-parser-pdf-module e consente agli attaccanti di leggere file locali ed esfiltrare dati sensibili tramite documenti PDF appositamente creati.
La CVE-2025-66516 è una vulnerabilità di sicurezza critica nella funzionalità di parsing PDF di Apache Tika. Durante l'elaborazione di file PDF con moduli XFA incorporati, le versioni di Tika precedenti alla 3.2.2 non riescono a limitare correttamente l'elaborazione delle entità esterne nei parser XML. Ciò consente agli attaccanti di:
Questo repository include:
Apache Tika XXE, CVE-2025-66516 exploit, Tika security vulnerability, XML External Entity attack, PDF XXE injection, Tika 3.2.1 vulnerability, out-of-band XXE, OOB XXE, security research, penetration testing, POC exploit, vulnerability disclosure, XFA parser vulnerability, tika-parser-pdf-module, file disclosure vulnerability, data exfiltration, SSRF attack, secure coding, vulnerability analysis, security testing, ethical hacking, infosec, cybersecurity research, Apache Tika exploit code, XXE payload, PDF security, document parser vulnerability
Nota: questo POC è stato testato e verificato su:
Per prima cosa, crea una directory dedicata al POC per mantenere tutti i file organizzati.
mkdir apache_tika_poc
cd apache_tika_poc
Prima di procedere con il POC, verifica che il tuo ambiente abbia le dipendenze richieste. Questi comandi mostreranno le versioni del compilatore/runtime Java e i dettagli del sistema operativo, che sono importanti per riprodurre la vulnerabilità.
# Check Java version
java -version
javac -version
# Check OS version
lsb_release -a
Output atteso: dovresti vedere le informazioni sulla versione di Java (ad es. OpenJDK 17.x.x) e i dettagli della versione di Ubuntu (24.04.3 LTS).
Scarica sia la versione vulnerabile (3.2.1) sia quella corretta (3.2.2) di Apache Tika. Servono entrambe le versioni per dimostrare che la vulnerabilità XXE è presente nella 3.2.1 ed è corretta nella 3.2.2. Il JAR tika-app è un eseguibile all-in-one che include tutti i parser di Tika e le dipendenze.
# Download vulnerable Tika version
wget https://repo1.maven.org/maven2/org/apache/tika/tika-app/3.2.1/tika-app-3.2.1.jar
# Download patched Tika version
wget https://repo1.maven.org/maven2/org/apache/tika/tika-app/3.2.2/tika-app-3.2.2.jar
Output atteso: verranno scaricati due file JAR - tika-app-3.2.1.jar (~75MB) e tika-app-3.2.2.jar (~75MB).
Verifica le versioni esatte ispezionando i file manifest dei JAR. Questo conferma di avere la versione vulnerabile e quella corretta giuste prima di testare.
# Check vulnerable version manifest
unzip -p tika-app-3.2.1.jar META-INF/MANIFEST.MF
# Check patched version manifest
unzip -p tika-app-3.2.2.jar META-INF/MANIFEST.MF
Output atteso: file manifest che mostrano Implementation-Version: 3.2.1 e 3.2.2 rispettivamente, insieme a timestamp di build e altri metadati.
Se osserviamo i Project Object Model (le proprietà POM di Maven definiscono le dipendenze di un progetto, la configurazione di build e i metadati), notiamo che non esiste un modulo tika-parsers separato come menzionato negli advisory di sicurezza - potrebbe essere una questione legata alla versione e l'ipotesi è che nelle versioni 3.2.1 e 3.2.2, incluse nel POC, il modulo tika-parsers sia stato sostituito da moduli parser individuali.
# List all component pom.properties files for both versions
unzip -l tika-app-3.2.1.jar | grep pom.properties | grep tika
unzip -l tika-app-3.2.2.jar | grep pom.properties | grep tika
Output atteso: un elenco di tutti i moduli componenti di Tika, inclusi tika-core, tika-parser-pdf-module, tika-xmp, ecc. Noterai moduli parser individuali anziché un singolo modulo tika-parsers.
Estrai e visualizza le informazioni sulla versione dei componenti principali di Tika. Questo aiuta a comprendere la struttura interna dei moduli e a confermare che sia la libreria core sia il modulo parser PDF siano alle versioni attese.
# Check tika-core, tika-parser-pdf-module, and tika-app versions for 3.2.1
unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-core/pom.properties && echo "---" && unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-parser-pdf-module/pom.properties && echo "---" && unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-app/pom.properties
# Check tika-core, tika-parser-pdf-module, and tika-app versions for 3.2.2
unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-core/pom.properties && echo "---" && unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-parser-pdf-module/pom.properties && echo "---" && unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-app/pom.properties