ثغرة حرجة في LangChain Core تكشف الأسرار عبر حقن التسلسل

في عالم البرمجيات المتطور، تكشف الثغرات الأمنية عن مخاطر كبيرة تهدد البيانات الحساسة. في هذا المقال، نستعرض ثغرة حرجة في LangChain Core وكيف يمكن أن تؤثر على الأمان العام للتطبيقات.
ثغرة أمنية حرجة في LangChain Core تكشف الأسرار عبر حقن التسلسل
تم الكشف عن ثغرة أمنية حرجة في LangChain Core يمكن استغلالها من قبل المهاجمين لسرقة الأسرار الحساسة والتأثير على استجابات نماذج اللغة الكبيرة (LLM) من خلال حقن التعليمات البرمجية.
يعتبر LangChain Core (أي langchain-core) حزمة بايثون الأساسية التي تشكل جزءًا من نظام LangChain، حيث توفر الواجهات الأساسية والتجريدات المستقلة عن النموذج لبناء التطبيقات المدعومة من قبل LLMs.
تُعزى الثغرة، التي تم تتبعها تحت رقم CVE-2025-68664، إلى درجة CVSS تبلغ 9.3 من 10.0. وقد تم الإبلاغ عن الثغرة من قبل الباحث الأمني ياردن بورات في 4 ديسمبر 2025، وقد أُطلق عليها اسم LangGrinch.
“توجد ثغرة حقن تسلسل في دوال dumps() و dumpd() في LangChain،” قال القائمون على المشروع في إشعار. “لا تقوم الدوال بإخراج القواميس التي تحتوي على مفاتيح ‘lc’ عند تسلسل القواميس الحرة.”
“المفتاح ‘lc’ يستخدم داخليًا في LangChain لتحديد الكائنات المتسلسلة. عندما تحتوي البيانات التي يتحكم بها المستخدم على هذا الهيكل المفتاحي، فإنها تُعتبر كائنًا شرعيًا من LangChain أثناء إعادة التسلسل بدلاً من كونها بيانات مستخدم عادية.”
وفقًا للباحث في Cyata، بورات، فإن جوهر المشكلة يتعلق بفشل الدالتين في إخراج القواميس التي يتحكم بها المستخدم والتي تحتوي على مفاتيح “lc”. يمثل علامة “lc” كائنات LangChain في تنسيق التسلسل الداخلي للإطار.
“لذا بمجرد أن يتمكن المهاجم من جعل حلقة تنسيق LangChain تسلسل وتعيد تسلسل المحتوى الذي يتضمن مفتاح ‘lc’، سيقوم بإنشاء كائن غير آمن، مما قد يؤدي إلى تفعيل العديد من المسارات المواتية للمهاجم،” قال بورات.
يمكن أن تكون لهذه الثغرة نتائج متعددة، بما في ذلك استخراج الأسرار من متغيرات البيئة عند إجراء إعادة التسلسل مع “secrets_from_env=True” (الذي تم تعيينه سابقًا كإعداد افتراضي)، وإنشاء فئات ضمن أسماء موثوقة مسبقًا، مثل langchain_core و langchain و langchain_community، وقد تؤدي حتى إلى تنفيذ تعليمات برمجية عشوائية عبر قوالب Jinja2.
علاوة على ذلك، فإن خطأ الإخراج يمكّن من حقن هياكل كائنات LangChain من خلال حقول يتحكم بها المستخدم مثل metadata و additional_kwargs أو response_metadata عبر حقن التعليمات البرمجية.
تقدم التصحيح الذي أطلقته LangChain إعدادات افتراضية جديدة تقييدية في load() و loads() من خلال معلمة allowlist “allowed_objects” التي تسمح للمستخدمين بتحديد الفئات التي يمكن تسلسلها/إعادة تسلسلها. بالإضافة إلى ذلك، يتم حظر قوالب Jinja2 بشكل افتراضي، وتم تعيين خيار “secrets_from_env” إلى “False” لتعطيل تحميل الأسرار تلقائيًا من البيئة.
الإصدارات التالية من langchain-core متأثرة بـ CVE-2025-68664 –
- >= 1.0.0، < 1.2.5 (تم الإصلاح في 1.2.5)
- < 0.3.81 (تم الإصلاح في 0.3.81)
من الجدير بالذكر أن هناك ثغرة مشابهة في حقن التسلسل في LangChain.js التي تنبع أيضًا من عدم إخراج الكائنات التي تحتوي على مفاتيح “lc”، مما يمكّن من استخراج الأسرار وحقن التعليمات البرمجية. تم تعيين هذه الثغرة تحت رقم CVE-2025-68665 (درجة CVSS: 8.6).
تؤثر على الحزم التالية في npm –
- @langchain/core >= 1.0.0، < 1.1.8 (تم الإصلاح في 1.1.8)
- @langchain/core < 0.3.80 (تم الإصلاح في 0.3.80)
- langchain >= 1.0.0، < 1.2.3 (تم الإصلاح في 1.2.3)
- langchain < 0.3.37 (تم الإصلاح في 0.3.37)
نظرًا لخطورة الثغرة، يُنصح المستخدمون بالتحديث إلى إصدار مُصلح في أقرب وقت ممكن لضمان الحماية المثلى.
“أكثر طرق الهجوم شيوعًا هي من خلال حقول استجابة LLM مثل additional_kwargs أو response_metadata، والتي يمكن التحكم فيها عبر حقن التعليمات البرمجية ثم تسلسلها/إعادة تسلسلها في عمليات البث،” قال بورات. “هذا هو بالضبط نوع التقاطع بين الذكاء الاصطناعي والأمن التقليدي حيث تُفاجأ المؤسسات. مخرجات LLM هي مدخلات غير موثوقة.”
مع تزايد التهديدات الأمنية، من الضروري أن يبقى المطورون على اطلاع دائم بأحدث التحديثات والإصلاحات. تأكد من تحديث تطبيقاتك لحماية بياناتك.




