
إثبات مفهوم لاستغلال CVE-2025-32434، وهي ثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) حرجة في دالة torch.load() الخاصة بـ PyTorch، والتي تتجاوز الحماية weights_only=True عبر كتابة ملفات معيّنة بالذاكرة (memory-mapped).
CVE-2025-32434 هي ثغرة حرجة لتنفيذ الأوامر عن بُعد (RCE) في PyTorch، وهي مكتبة بايثون واسعة الاستخدام للتعلم العميق والشبكات العصبية.
توجد الثغرة في الدالة torch.load()، حتى عند استخدام المعامل weights_only=True الذي يُفترض أنه آمن. صُمم خيار weights_only=True لمنع تنفيذ الأكواد عن طريق تقييد التحميل على معاملات النموذج فقط. ومع ذلك، وجد الباحثون طريقة لتجاوز هذه الحماية.
| الحالة | الإصدار |
|---|---|
| قابلة للاختراق | PyTorch 2.5.1 وجميع الإصدارات السابقة |
| مُصححة | PyTorch 2.6.0 وما بعده |
يمكن لمهاجم غير مُوثق إنشاء ملف نموذج خبيث يقوم بتنفيذ أكواد عشوائية عند تحميله من قبل الضحية. لا يتطلب الهجوم أي تفاعل من المستخدم ويمكن أن يؤدي إلى اختراق كامل للنظام. تستغل الثغرة كيفية استخدام PyTorch لتسلسل pickle في بايثون، مما يسمح للمهاجمين بتضمين أكواد خبيثة في ملفات النموذج.
هذه الثغرة خطيرة بشكل خاص لأن العديد من المطورين يعتمدون على weights_only=True كإجراء أمني، لكن هذه الثغرة تُثبت أنه حتى الخيار "الآمن" غير كافٍ.
يوضح النص البرمجي full.py المقدم كيفية إنشاء نموذج PyTorch خبيث يكتب في نظام الملفات عند تحميله.
torch.from_file() لإنشاء موتر معيّن بالذاكرة يشير إلى ملف cron المستهدف# Memory-mapped file writing
t = torch.from_file("/etc/cron.d/rev",
shared=True,
size=len(asciis),
dtype=torch.uint8)
msg = torch.tensor(asciis, dtype=torch.uint8)
t.copy_(msg) # Writes to /etc/cron.d/rev
يقدم هذا الدليل إرشادات خطوة بخطوة حول كيفية استخدام برنامج إثبات المفهوم (PoC) لـ CVE-2025-32434.
قبل البدء، تأكد من توفر ما يلي:
# Install PyTorch (vulnerable version for testing)
pip install torch==2.5.1
pip install torch