CVE-2026-33626: آسیبپذیری SSRF در LMDeploy که در ۱۲ ساعت اکسپلویت شد
خلاصهٔ کاملتر
در ۲۱ آوریل ۲۰۲۶، GitHub یه advisory امنیتی با شناسه GHSA-6w67-hwm5-92mq منتشر کرد که بعداً CVE-2026-33626 بهش اختصاص داده شد. این آسیبپذیری از نوع Server-Side Request Forgery یا همون SSRF هست و توی LMDeploy کشف شده — ابزاری که Shanghai AI Laboratory برای سرویسدهی مدلهای زبانی بزرگ (LLM) و مدلهای vision-language توسعه داده.
تیم تحقیقاتی Sysdig (TRT) یه honeypot با نسخهی آسیبپذیر LMDeploy راه انداخت و تنها ۱۲ ساعت و ۳۱ دقیقه بعد از انتشار عمومی advisory، اولین تلاش برای اکسپلویت رو ثبت کرد. جالب اینجاست که هیچ کد proof-of-concept عمومیای در این زمان وجود نداشت؛ یعنی مهاجم صرفاً از روی متن advisory یه اکسپلویت کارآمد ساخته بود.
مشکل اصلی اینه که LMDeploy وقتی یه درخواست chat completion با فیلد image_url دریافت میکنه، اون URL رو مستقیماً fetch میکنه و هیچ بررسیای برای آدرسهای داخلی، link-local یا RFC 1918 انجام نمیده. یعنی مهاجم میتونه به جای یه URL عکس واقعی، آدرسهایی مثل AWS IMDS یا Redis داخلی رو بفرسته:
{
"model": "internlm-xcomposer2",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "describe this"},
{"type": "image_url", "image_url": {"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/"}}
]
}]
}حمله در سه فاز مجزا اتفاق افتاد. در فاز اول، مهاجم ابتدا سراغ AWS Instance Metadata Service رفت تا credential های IAM رو بدزده، بعد هم پورت 6379 لوپبک رو چک کرد تا ببینه Redis روی شبکهی داخلی فعاله یا نه.
در فاز دوم، مهاجم یه تست OOB (out-of-band) با استفاده از سرویس requestrepo.com انجام داد تا تأیید کنه سرور میتونه به هاستهای خارجی دسترسی داشته باشه. همچنین فایل /openapi.json رو واکشی کرد تا endpoint های بیشتری از API پیدا کنه — از جمله مسیرهای مدیریتی /distserve/* که مخصوص حالت توزیعشدهی LMDeploy هستن.
در فاز سوم، مهاجم از endpoint مدیریتی /distserve/p2p_drop_connect برای قطع اتصال ZMQ بین موتورهای استنتاج استفاده کرد — یه endpoint که در پیکربندی پیشفرض هیچ لایهی احراز هویتی نداشت. بعد از اون، یه اسکن پورت سیستماتیک روی loopback انجام داد: پورت ۸۰۸۰ برای پروکسی یا ادمین HTTP، پورت ۳۳۰۶ برای MySQL، و پورت ۸۰ برای HTTP عادی — همه در ظرف ۳۶ ثانیه.
این حادثه یه نکتهی مهم رو روشن میکنه: endpoint های مدلهای هوش مصنوعی که قراره «عکس» دریافت کنن، در واقع میتونن به عنوان یه ابزار HTTP GET عمومی توسط مهاجمین استفاده بشن تا شبکهی داخلی پشت سرور رو کاوش کنن. زیرساخت AI فرقی با سایر سرویسهای تحت وب نمیکنه و باید با همون استانداردهای امنیتی محافظت بشه.
نکات کلیدی:
- CVE-2026-33626 یه آسیبپذیری SSRF در LMDeploy هست که از طریق فیلد image_url در API سازگار با OpenAI قابل اکسپلویته
- اولین حمله تنها ۱۲ ساعت و ۳۱ دقیقه بعد از انتشار عمومی advisory ثبت شد، بدون وجود کد PoC عمومی
- مهاجم از این باگ به عنوان یه HTTP SSRF primitive برای اسکن AWS IMDS، Redis، MySQL و endpoint های مدیریتی استفاده کرد
- endpoint های /distserve/* در پیکربندی پیشفرض فاقد احراز هویت بودن و میتونستن اتصال موتورهای استنتاج رو قطع کنن
- متن advisory به تنهایی اطلاعات کافی برای ساخت اکسپلویت داشت، که نشوندهندهی اهمیت مانیتورینگ سریع CVE ها در زیرساختهای AI هست




