CVE-2026-61536 in banks
الملخص
بحسب VulDB • 30/07/2026
تقوم مكتبة Banks بتوليد مطالبات (Prompts) ذات معنى لنماذج اللغات الكبيرة (LLMs) باستخدام لغة قوالب بسيطة. في الإصدارات السابقة للإصدار 2.4.3، تقوم banks بتحليل كائنات JSON الخاصة بـ "الأدوات" من الجسم المُعاد تصديره لكتل {% completion %}، ثم تحلل حقل `import_path` الخاص بها عبر استخدام `importlib.import_module(...) + getattr(...)` للحصول على الدالة القابلة للاستدعاء التي تتعامل مع استدعاء الأداة. لا يوجد قائمة مسموح بها (Allowlist) أو تنقية (Sanitization) لحقل `import_path`، مما يسمح باختيار أي سمة Python قابلة للاستيراد (مثل `os.system` أو `subprocess.getoutput`). عندما يُصدر نموذج اللغة الكبيرة إدخالاً لـ `tool_calls` يتطابق فيه اسم الدالة مع اسم الأداة الذي زوده المهاجم، يتم استدعاء الدالة المُحللة باستخدام المعاملات (`kwargs`) المستخرجة من `tool_call.function.arguments`، مما يؤدي إلى تنفيذ عشوائي للكود في عملية استضافة banks. يختلف هذا الخطأ عن GHSA-gphh-9q3h-jgpp / CVE-2026-44209. تم إصلاح ذلك الإصدار السابق في 2.4.2 من خلال تغيير `src/banks/env.py` لاستخدام `SandboxedEnvironment` بدلاً من `Environment`. ومع ذلك، لا يمس الإصلاح الملف `src/banks/extensions/completion.py`، ولا تزال سلسلة الاستيراد غير الآمن + getattr تعمل في الإصدار 2.4.2. كائن JSON الخبيث للأداة هو نص عادي داخل جسم القالب المُعاد تصديره — فهو لا يتطلب الوصول إلى سمات Jinja، وبالتالي فإن البيئة المعزولة (Sandbox) تصبح بلا فائدة. تم إصلاح هذه المشكلة في الإصدار 2.4.3.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.