CVE-2026-25940 jsPDF PoC
إثبات مفهوم لثغرة CVE-2026-25940 يوضح كيف يمكن لأشكال أزرار الراديو (AcroForm) المصممة بعناية أن تؤدي إلى تشغيل JavaScript مضمّن في برامج عرض PDF الضعيفة (مثل Foxit). يتضمن المستودع مولّدًا قائمًا على Node ومنصة اختبار عبر المتصفح لاستكشاف مسارات تحليل مختلفة.
⚠️ استخدم فقط في بيئات معزولة وغير إنتاجية. حمولات العينات تنفّذ JavaScript عمدًا وقد تستدعي طلبات شبكة أو برامج خارجية. لا تفتح ملف PDF المُولَّد مع برامج عرض غير موثوقة على جهاز تهمك سلامته.
محتويات المستودع
- poc.js: يولّد ملف PDF خبيثًا يحتوي على خيارات متعددة لأزرار الراديو وتدفقات مظهر مميزة لعرض سلوكيات مختلفة.
- viewer.html: منصة اختبار بسيطة لتوليد الـ PoC داخل المتصفح أو تحميل عينة موجودة، وعرضها سواءً بشكل أصلي (iframe) أو عبر PDF.js.
- package.json: يعلن عن اعتماد jsPDF لـ PoC الخاص بـ Node.
المتطلبات الأساسية
الإعداد
- تثبيت الاعتماديات:
- (اختياري) تشغيل خادم محلي لعرض الصفحة لتحميل أنظف لملفات HTML/JS:
npx http-server .
# ثم افتح http://localhost:8080/viewer.html
توليد ملف PDF للـ PoC عبر Node
- تشغيل المولّد:
- يكتب السكربت ملف
test.pdf في جذر المشروع. افتحه مع برنامج عرض PDF المستهدف لملاحظة السلوك. أبقِ الشبكة معطلة إذا كنت تريد تجنب الطلبات الصادرة.
سير عمل العرض عبر المتصفح
- افتح viewer.html مباشرة في المتصفح أو عبر خادم محلي.
- انقر على Generate PoC PDF لبناء المستند الخبيث داخل المتصفح وتحميله في كلٍّ من iframe (معالج المتصفح الأصلي) ولوحة PDF.js.
- بدلاً من ذلك، اختر Load file وحدد ملف PDF قمت بتوليده عبر سكربت Node.
- راقب نشاط وحدة التحكم/الشبكة للحصول على دليل على تنفيذ JavaScript؛ قد تمنع بعض برامج العرض التنبيهات مع استمرار تشغيل الإجراءات المضمّنة.
ملاحظات
- الحمولات مضبوطة نحو سلوك Foxit؛ قد تخفف برامج العرض الأخرى من تأثيرها أو تحظرها جزئيًا.
- إذا قمت بتعديل الحمولة، حافظ على أحجام مماثلة لتجنب تغيير إزاحات الكائنات التي تعتمد عليها بعض سلاسل الاستغلال.
- اختبر دائمًا في جهاز افتراضي أو بيئة معزولة مع تقييد حركة الخروج من الشبكة.