ملخص تنفيذي
مع نضوج البنية التحتية لنموذج اللغة الكبيرة (LLM)، يتحول سطح الهجوم من واجهات الإدارة التقليدية ("مستوى التحكم") إلى التدفق الفعلي للبيانات الاستدلالية ("مستوى البيانات").
CVE-2025-62164 تمثّل نقطة ضعف تُحدث نقلة نوعية في vLLMالمحرك القياسي في المجال لخدمة LLM عالية الإنتاجية. هذا الخلل يسمح للمهاجمين بتسليح /v1/إكمال عن طريق حقن نقطة نهاية خبيثة التضمينات الفورية. من خلال استغلال آليات إلغاء التسلسل غير الآمنة داخل منطق تحميل PyTorch، يمكن للمهاجمين أن يتسببوا في تلف الذاكرة، مما يؤدي إلى الحرمان من الخدمة (DoS) واحتمال تنفيذ التعليمات البرمجية عن بُعد (RCE) - كل ذلك دون الحاجة إلى مفاتيح واجهة برمجة تطبيقات صالحة (اعتمادًا على تكوين النشر).
يفصل هذا التحليل السبب الجذري التقني، ويوفر إثباتًا مفاهيميًا للمفهوم (PoC)، ويحدد خطوات العلاج الفوري لمهندسي منصات الذكاء الاصطناعي.

ناقل الهجوم: لماذا التضمينات خطيرة
في تفاعلات LLM القياسية، يرسل المستخدمون نصًا. ومع ذلك، فإن محركات الاستدلال المتقدمة مثل vLLM تدعم تضمين المدخلات (بيانات الموتر) مباشرةً عبر واجهة برمجة التطبيقات. هذا مصمم لتحسين الأداء وسير العمل متعدد الوسائط، ولكنه يفتح بابًا خطيرًا: إلغاء التحويل المباشر للكائنات.
تكمن الثغرة في كيفية معالجة vLLM لهذه الموتر الواردة. على وجه التحديد، يثق المحرك ضمنيًا في بنية البيانات المتسلسلة التي يقدمها المستخدم، بافتراض أنها تمثيل رياضي غير ضار.
مسار الشفرة الضعيفة
يوجد الخلل الخطير في vllm/entrypoints/renderer.py داخل _تحميل_و_التحقق_من_التضمين الوظيفة.
بايثون
# تمثيل مبسط للمنطق الضعيف
استيراد الشعلة
استيراد io
استيراد pybase64
Def _load_and_and_validate_embed(تضمين: بايت):
# DANGER: إلغاء ترجمة تدفقات ثنائية غير موثوق بها
الموتر = torch.load(
io.BytesIO(pybase64.b64decode(embed, validate=True)),
الأوزان_فقط=صحيح، # الشعور الزائف بالأمان
map_location=torch.device("cpu"),
)
إرجاع الموتر
في حين أن الأوزان_فقط=صحيح يهدف إلى منع تنفيذ شيفرة بايثون العشوائية (وهي ثغرة شائعة في بيكل)، فهي غير كافٍ لمنع تلف الذاكرة عند التعامل مع أنواع موتر PyTorch محددة.
الغوص التقني المتعمق: استغلال الموزعات المتفرقة
يستفيد جوهر CVE-2025-62164 من انقطاع الاتصال بين إشارات الأمان في PyTorch ومعالجته لـ الموزونات المتفرقة.
- PyTorch 2.8+ Shift: تقوم الإصدارات الأحدث من PyTorch افتراضيًا بتخطي عمليات التحقق من التكامل المكلفة للمشدات المتفرقة لتحسين الأداء.
- الممر الجانبي يمكن للمهاجم بناء موتر "تنسيق الإحداثيات" (تنسيق الإحداثيات) مشوّه "متناثر COO". حتى مع
الأوزان_فقط=صحيح,تحميل الشعلةسيُعيد تسلسل هذه البنية. - تلف الذاكرة: نظرًا لأن مؤشرات الموتر المتناثر لا يتم التحقق من صحة مؤشرات الموتر المتناثر مقابل الحجم المعلن أثناء التحميل، فإن العمليات اللاحقة (مثل تحويل الموتر إلى تنسيق كثيف أو نقله إلى ذاكرة وحدة معالجة الرسومات) تؤدي إلى الكتابة خارج الحدود (OOB).
تؤدي هذه الكتابة OOB إلى تعطل مترجم Python على الفور (DoS). يمكن تصعيد هذه البدائية للتحكم في مؤشر التعليمات من خلال رش الكومة المتطور والتلاعب بتخطيط الذاكرة، مما يحقق الاحتكار الاحتكاري.

تحليل إثبات المفهوم (PoC)
تنويه: هذا البرنامج لأغراض تعليمية ودفاعية فقط.
1. بناء الحمولة
ينشئ المهاجم موتر PyTorch متسلسل PyTorch ينتهك قيود الاتساق الداخلي.
بايثون
استيراد الشعلة
استيراد io
استيراد base64
def generate_exploit_payload():
المخزن المؤقت = io.BytesIO()
# إنشاء موتر متناثر مصمم لتشغيل الكتابة OOB عند الوصول
# سيتم صياغة المؤشرات المحددة للإشارة إلى خارج الذاكرة المخصصة
#TV5T malformed_tensor = torch.sparch.sparse_coo_tensor(المؤشرات=...، القيم=...، الحجم=...)
# للتوضيح، نقوم بمحاكاة التسلسل
# في هجوم حقيقي، يحتوي هذا المخزن المؤقت على دفق المخلل الثنائي
torch.save(malformed_tensor, buffer)
# ترميز لنقل JSON
إرجاع base64.b64encode(buffer.getvalue()).decode('utf-8')
2. طلب الاستغلال
يرسل المهاجم هذه الحمولة إلى نقطة نهاية الإكمال القياسية.
البريد http://target-vllm-instance:8000/v1/completions
JSON
{
"model": "meta-llama/Llama-2-7b-hf",
"موجه": {
"التضمين": ""
},
"max_tokens": 10
}
3. النتيجة
- أفضل حالة: تواجه عملية عامل vLLM خطأ في التجزئة وتتعطل. إذا أعاد المنظّم (على سبيل المثال، Kubernetes) تشغيلها، يمكن للمهاجم ببساطة إعادة إرسال الطلب، مما يؤدي إلى رفض الخدمة بشكل مستمر.
- الحالة الأسوأ: يؤدي تلف الذاكرة إلى الكتابة فوق مؤشرات الدوال، مما يسمح للمهاجم بتنفيذ التعليمات البرمجية الخادعة داخل سياق الحاوية.
تقييم الأثر
- التوفر (مرتفع): هذا أمر تافه من السهل تنفيذه. يمكن أن يؤدي طلب واحد إلى تعطيل عقدة استدلالية. في البيئات المجمّعة، يمكن للمهاجم أن يكرر طلبًا واحدًا من خلال عقدة لإضعاف المجموعة بأكملها.
- السرية والنزاهة (أمر بالغ الأهمية): إذا تم الوصول إلى RCE، يحصل المهاجم على حق الوصول إلى متغيرات البيئة (غالبًا ما تحتوي على رموز تعانق الوجوه أو مفاتيح S3 أو مفاتيح WandB) وأوزان نموذج الملكية المحملة في الذاكرة.
المعالجة والتخفيف من الآثار
1. الترقية فوراً
تم تصحيح الثغرة في الإصدار vLLM v0.11.1.
- الإجراء: قم بتحديث صور Docker أو حزم PyPI إلى أحدث إصدار على الفور.
- إصلاح المنطق: يطبق التصحيح منطق تحقق صارم يرفض تنسيقات الموتر غير الآمنة قبل أن تتفاعل مع مخصص الذاكرة.
2. تعقيم المدخلات (WAF/مستوى البوابة)
إذا لم تتمكن من الترقية على الفور، فيجب عليك حظر ناقل الهجوم عند البوابة.
- الإجراء: قم بتهيئة بوابة واجهة برمجة التطبيقات (Nginx، كونغ، ترافيك) لفحص أجسام JSON الواردة.
- القاعدة: حظر أي طلب لـ
/v1/إكمالحيثفورييحتوي الحقل على كائن يحتوي علىالتضمينالمفتاح
3. تجزئة الشبكة
تأكد من أن خادم الاستدلال الخاص بك غير مكشوف مباشرة للإنترنت العام. يجب أن يكون الوصول بوساطة خدمة خلفية تقوم بتعقيم المدخلات وتتعامل مع المصادقة.
الخاتمة
يعد CVE-2025-62164 بمثابة جرس إنذار لأمن الذكاء الاصطناعي. لم يعد بإمكاننا التعامل مع "النماذج" و"التضمينات" على أنها بيانات خاملة. في عصر الذكاء الاصطناعي, البيانات هي رمز، وإلغاء تسلسلها يتطلب نفس المستوى من التدقيق الذي يتطلبه تنفيذ ملف ثنائي قابل للتنفيذ.
بالنسبة للفرق التي تقوم بإجراء اختبار الاختراق على البنية التحتية للذكاء الاصطناعي (مثل Penligent.ai)، يجب أن يكون التحقق من نقاط نهاية التسلسل المكشوفة في محركات الاستدلال الآن جزءًا قياسيًا من نطاق المشاركة.
ملاحظة المؤلف: حافظ على أمان البنية التحتية للذكاء الاصطناعي لديك. تحقق دائمًا من صحة المدخلات، ولا تثق أبدًا بالبيانات المتسلسلة، وحافظ على تثبيت إصدارات vLLM الخاصة بك على أحدث إصدار مستقر.

