
CVE-2024-4367
هذا المشروع يوضح ويحلل CVE-2024-4367، وهي ثغرة عالية الخطورة في مكتبة PDF.js الخاصة بـ Mozilla تسمح بتنفيذ جافا سكريبت عشوائي من خلال فحص نوع غير صحيح في كود معالجة الخطوط. يظهر بحثنا كيف يمكن لملف PDF تم إنشاؤه بشكل ضار تنفيذ جافا سكريبت في سياقات مثل تطبيقات Electron، مما قد يتصاعد إلى تنفيذ كود عن بعد.
🔗 مستودع GitHub: Hacking-pdf.js-vulnerability
fontMatrix غير منقى في الخطوط المضمنة.ex1.pdf و ex-gist.pdf تظهر تنبيهات أو تنفيذ سكريبت عن بعد.src/components/ReactPdfViewer.tsx – عارض React مبني باستخدام react-pdf 5.7.2 (يحتوي على pdfjs-dist 2.16.105 الضعيفة)ex1.pdf – ملف PDF ضار يقوم بتشغيل تنبيهex-gist.pdf – ملف PDF ضار يقوم بجلب وتنفيذ جافا سكريبت عن بعدCVE-2024-4367_Report_Hacking_Project.pdf – تقرير فني كامل وتحليل الاستغلالعناصر مصفوفة fontMatrix في PDF.js لم يتم التحقق منها بشكل صحيح — حيث كانت تقبل سلاسل نصية يتم حقنها مباشرة في جافا سكريبت تُجمّع باستخدام new Function(...). وهذا يسمح للمهاجمين بصنع بيانات خط ضارة، مما يسبب تنفيذ كود عشوائي عندما يُسمح بعمليات شبيهة بـ eval.
مثال على مسار الكود الضعيف:
fontMatrix = ["alert('XSS')", 0, 0, 1, 0, 0]; // Injected payload
// Results in compiled function like:
function drawGlyph() {
transform("alert('XSS')", 0, 0, 1, 0, 0); // Unsafe execution
}
لتخفيف هذه الثغرة وحماية التطبيقات التي تضمّن PDF.js (أو المكتبات التي تحزمها)، اعتماد التدابير التالية:
isEvalSupported = false في PDF.js لإيقاف تجميع Function الديناميكي.typeof صريحة على جميع القيم المقدمة من المستخدم (مثل مصفوفة fontMatrix).package.json/yarn.lock وقم بتطبيق التصحيحات الأمنية تلقائيًا.أضف سياسة أمان محتوى صارمة:
Content-Security-Policy: script-src 'self'; object-src 'none';