
إثبات مفهوم لاستغلال CVE-2026-7482، وهو قراءة خارج الحدود في الكومة دون مصادقة في محمّل GGUF الخاص بـ Ollama، مما يوضح تسريب الذاكرة عبر ملف نموذج مُصمَّم خصيصًا.
يحتوي هذا المستودع على سلسلة استغلال كإثبات مفهوم (PoC) ليوم واحد لثغرة CVE-2026-7482، وهي ثغرة قراءة خارج الحدود (OOB) غير مصادق عليها في محمّل نماذج GGUF الخاص بـ Ollama (الإصدارات السابقة لـ 0.17.1).
ملاحظة: هذا إعادة إنتاج بحثي ليوم واحد. لم أكتشف الثغرة الأصلية. تم هندسة هذا الإثبات بناءً على تفاصيل النشرة العامة لتوضيح آلية الثغرة لأغراض تعليمية وبحثية دفاعية.
من خلال توفير ملف GGUF مقطوع ومصمم بشكل خبيث إلى نقطة النهاية /api/create، يمكن للمهاجم إجبار محلل التكميم في fs/ggml/gguf.go و server/quantization.go على القراءة بعد المخزن المؤقت المخصص في الكومة. يتم بعد ذلك تسريب الذاكرة المسربة عن طريق دفع الأثر النموذجي الناتج إلى سجل Docker يتحكم به المهاجم عبر نقطة النهاية /api/push.
خلال هذا البحث ليوم واحد، كان إعادة إنتاج الانهيار أمرًا تافهًا، لكن تحقيق تسريب مستقر دون انهيار الخادم أو الاصطدام بحواجز التحقق من صحة API تطلب تزويرًا معماريًا محددًا:
F16 (general.file_type = 1) لتلبية فحوصات ما قبل الإطلاق الصارمة في Ollama API.Q4_K_M. نظرًا لأن الحمولة تُرى كـ F16، يتم إجبار الواجهة الخلفية C++ ggml على معالجة الحمولة بدلاً من إجراء نسخ ذاكرة آمن بنسبة 1:1.token_embd.weight) مصفوفة ثنائية الأبعاد حيث يكون البعد الأعمق بالضبط 256 (مثل [num_rows, 256]). هذا يتماشى تمامًا مع متطلبات كتل Q4_K_M، مما يمنع الواجهة الخلفية من تخطي الطبقة.pip install requests numpy gguf
تحتاج أيضًا إلى مستمع HTTP متاح للجمهور (مثل Ngrok) لالتقاط دفعات Docker المسربة.
1. تشغيل السجل المارق شغّل المستمع لالتقاط كتل الذاكرة المسربة.
sudo python3 registry.py
2. تزوير الحمولة الخبيثة
قم بإنشاء ملف GGUF المقطوع. يمكنك ضبط TARGET_LEAK_SIZE_MB داخل السكربت للتحكم في مقدار ذاكرة الكومة التي يتم كشطها لكل طلب. (موصى به: 0.5MB إلى 2.0MB لتجنب التسبب في خطأ تجزئة للصفحات غير المعينة).
python3 forge.py
3. إطلاق الاستغلال
قم بتعديل exploit.py ليشمل عنوان IP الهدف وعنوان URL للسجل المارق الخاص بك، ثم نفّذ:
python3 exploit.py
4. تحليل الأثر
سيقوم السجل بإسقاط تفريغات الكومة المسربة في دليل exfils/.
ملاحظة حول سلامة البيانات (فخ التكميم): بينما يلتقط الاستغلال بنجاح ويسرّب حتى عدة ميغابايت من ذاكرة كومة الخادم، تخضع البيانات لخوارزمية التكميم التنازلي Q4_K_M الخاصة بـ Ollama أثناء القراءة خارج الحدود. تقوم الواجهة الخلفية بتحويل بايتات الذاكرة الخام إلى float16 وتطبق مخطط ضغط كتل رباعي البتات مع فقدان البيانات. وبالتالي، فإن الذاكرة المسربة مشوهة رياضيًا. أدوات استخراج النصوص القياسية ستنتج بيانات ثنائية غير صالحة، مما يجعل استرداد بيانات الاعتماد النصية غير عملي عمليًا عبر هذا المسار الإجباري المحدد.
هذا المشروع لأغراض البحث التعليمي والمصرح به في مجال الثغرات فقط. لا تستخدم هذه الأداة ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.