
أنشئ ملفات خبيثة باستخدام هجوم bidi المنشور مؤخرًا (CVE-2021-42574)
// التحديث: 05.11.2021
أصبح من الممكن الآن ليس فقط ترميز الملفات، بل أيضًا فك ترميزها. وهذا يعني أن الملفات التي تحتوي على أحرف bidi مدعومة يمكن تحويلها إلى ملفات قوالب تحتوي على عناصر نائبة bidi (LRO، ...).
قم بتوليد ملفات خبيثة باستخدام ثغرة هجوم bidi المنشورة مؤخرًا، والتي تم اكتشافها في مواصفة اليونيكود وتؤثر على العديد من المترجمات / المفسّرات.
اقتباس من cve.mitre.org:
تم اكتشاف مشكلة في الخوارزمية ثنائية الاتجاه (Bidirectional Algorithm) في مواصفة اليونيكود حتى الإصدار 14.0. فهي تسمح بإعادة الترتيب البصري للأحرف عبر تسلسلات تحكم، والتي يمكن استخدامها لصياغة كود مصدري يعرض منطقًا مختلفًا عن الترتيب المنطقي للرموز (tokens) التي تعالجها المترجمات والمفسّرات. يمكن للخصوم استغلال ذلك لترميز كود مصدري للمترجمات التي تقبل اليونيكود بحيث يتم إدخال ثغرات مستهدفة بشكل غير مرئي للمراجعين البشر.
انظر التقرير حول الخوارزمية ثنائية الاتجاه من unicode.org:
https://www.unicode.org/reports/tr9/tr9-42.html
انظر المصدر الأصلي من جامعة كامبريدج:
https://www.trojansource.codes/trojan-source.pdf
python3 codegen.py [-h] [-m MODE] [-i INFILE] [-o OUTFILE] [-u] [-a]
| الوسيط | الوسيط الطويل | المعامل | الوصف |
|---|---|---|---|
| -h | --help | لا شيء | عرض رسالة المساعدة هذه والخروج |
| -i | --infile | INFILE | ملف الإدخال (قالب) يحتوي على عناصر نائبة لليونيكود |
| -o | --outfile | OUTFILE | ملف الإخراج لتخزين الكود النهائي |
| -u | --uctable | لا شيء | الأحرف المدعومة المتعلقة باتجاه النص (bidi) |
| -a | --about | لا شيء | طباعة نص حول الأداة |
| -m | --mode | MODE | استخدم e|ncode لتحويل القالب إلى كود خبيث و d|ecode للعكس |
سيؤدي هذا إلى تحويل ملف قالب يحتوي على عناصر نائبة bidi إلى ملف بأحرف bidi فعلية. جميع الأمثلة مأخوذة من ملف PDF المُشار إليه. لتشغيل هذه الأمثلة، نفّذ codegen.py بالوسائط المطلوبة:
python3 codegen.py -m encode -i infile.xyz -o outfile.xyz ثم قم بتشغيل/ترجمة outfile.xyz.
سيؤدي هذا إلى تحويل ملف يحتوي على أحرف bidi إلى ملف يحتوي على العناصر النائبة bidi المقابلة. ملاحظة: لا يمكن تشغيل المخرجات، لأنها مجرد قالب.
python3 codegen.py -m decode -i infile.xyz -o outfile.xyz
لإنشاء قوالب خاصة بك، ضع العناصر النائبة (python3 codegen.py -u) في الأماكن التي تريد أن تظهر فيها الأحرف الخاصة. انظر إلى الأمثلة للحصول على انطباع أولي حول كيف يمكن أن يبدو القالب.
يعرض الجدول التالي (المأخوذ من تقرير كامبريدج الأصلي) الأحرف المدعومة حاليًا بواسطة هذا السكربت.
~ https://www.trojansource.codes/trojan-source.pdf