كشفت تقارير أمنية عن ثغرة حرجة في حزمة LangChain Core، وهي مكون أساسي في تطوير تطبيقات معالجة اللغة الطبيعية، مما يفتح الباب أمام هجمات قد تؤدي إلى سرقة بيانات حساسة والتلاعب باستجابات نماذج اللغات الكبيرة. وتم تحذير مطوري التطبيقات التي تعتمد على هذه الحزمة من ضرورة التحديث الفوري لتفادي المخاطر.
تُعد LangChain Core، المعروفة باسم langchain-core، مكتبة Python رئيسية ضمن منظومة LangChain. توفر هذه المكتبة الواجهات الأساسية والتجريدات المستقلة عن نماذج معالجة اللغة الكبيرة (LLM)، مما يسهل على المطورين بناء تطبيقات تستفيد من قدراتها. وتأتي هذه الثغرة لتسلط الضوء على التحديات الأمنية المتزايدة مع انتشار الذكاء الاصطناعي.
ثغرة LangGrinch: تفاصيل خطيرة في LangChain Core
تم تعيين الثغرة المكتشفة بالرمز CVE-2025-68664، وحصلت على تصنيف عالٍ في مقياس CVSS بلغ 9.3 من 10.0، مما يشير إلى خطورتها البالغة. وقد أطلق عليها الباحث الأمني ياردن بورات اسم “LangGrinch”.
ووفقًا لمسؤولي المشروع، فإن المشكلة تكمن في وظائف `dumps()` و `dumpd()` ضمن LangChain، والتي تفشل في معالجة القواميس التي تحتوي على مفتاح “lc” عند القيام بعملية التسلسل (serialization). يستخدم هذا المفتاح داخليًا بواسطة LangChain لتمييز الكائنات المسلسلة.
وعندما تتضمن البيانات التي يولدها المستخدم هذا التركيب المفتاحي، قد يتعامل النظام معه ككائن LangChain صالح أثناء فك التسلسل (deserialization) بدلاً من اعتباره بيانات عادية للمستخدم. هذا الاستخدام غير الآمن للمفاتيح الداخلية يخلق بابًا خلفيًا يمكن استغلاله.
آليات الاستغلال وتداعياتها
أوضح الباحث بورات أن جوهر المشكلة يكمن في عدم قيام هاتين الوظيفتين بمعالجة القواميس التي يتحكم بها المستخدم وتحتوي على مفاتيح “lc”. يمكن للمهاجم، عند تمكينه من جعل حلقة تنسيق LangChain تقوم بتسلسل ثم فك تسلسل محتوى يتضمن مفتاح “lc”، أن يتسبب في إنشاء كائن عشوائي غير آمن.
هذا الأمر قد يؤدي إلى عواقب وخيمة، منها سرقة أسرار حساسة من متغيرات البيئة عند إجراء فك التسلسل مع تفعيل خيار `secrets_from_env=True` (الذي كان مضبوطاً افتراضيًا سابقاً). كذلك، يمكن استغلال الثغرة لإنشاء فئات ضمن نطاقات موثوقة محددة مسبقًا، مثل `langchain_core`، `langchain`، و `langchain_community`، بل وقد يصل الأمر إلى تنفيذ تعليمات برمجية عشوائية عبر قوالب Jinja2.
علاوة على ذلك، تسمح هذه الثغرة بحقن تراكيب كائنات LangChain خلال حقول يتحكم بها المستخدم، مثل `metadata` أو `additional_kwargs` أو `response_metadata`، وذلك عن طريق تقنية حقن الأوامر (prompt injection). وتشكل هذه الثغرة خطرًا كبيرًا على أمن البيانات في تطبيقات الذكاء الاصطناعي.
الإجراءات الوقائية والحلول
قدم التحديث الذي أصدرته LangChain حلولاً صارمة، بما في ذلك إضافة خيار `allowed_objects` في وظائف التحميل (`load()` و `loads()`)، والذي يتيح للمستخدمين تحديد الكائنات المسموح بتسلسلها وفك تسلسلها. بالإضافة إلى ذلك، تم منع قوالب 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)
في ضوء خطورة الثغرة، ينصح المستخدمون بتحديث حزمهم إلى الإصدارات المحدثة في أقرب وقت ممكن لضمان أعلى مستويات الحماية.
أشار بورات إلى أن المتجه الهجومي الأكثر شيوعًا يتم عبر حقول استجابة نماذج اللغات الكبيرة، مثل `additional_kwargs` أو `response_metadata`، والتي يمكن التحكم فيها عبر حقن الأوامر. وتُعد هذه التقاطعات بين الذكاء الاصطناعي والأمن التقليدي مصدر قلق كبير للمؤسسات، حيث أن مخرجات نماذج اللغات الكبيرة يجب التعامل معها كمدخلات غير موثوقة.

