مستغلة: 178
الأحدثCVE-2026-115732 — تجاوز تفويض اسم الشهادة
VulnFeed.org
AREN
7.3
CVE-2026-61438يتوفر تصحيح

PraisonAI معرضة لتنفيذ أوامر عن بُعد عبر كسر بيئة AST المعزولة

praisonaiقراءة 2 داقرأ بلغة

ترجمة آلية لم تُراجَع بعد. النص الإنجليزي هو المرجع في حال الاختلاف.

الملخص

### الملخص تم تصميم `JobWorkflowExecutor._exec_inline_python()` لتنفيذ تعبيرات Python المضمنة بأمان من خطوات سيناريو سير عمل YAML باستخدام التحقق من صحة AST. تدعي الدالة حظر العمليات الخطرة عن طريق (أ) فحص جميع العقد في AST مقابل قائمة المسموحات، و (ب) توفير قائمة مسموحات لـ `__builtins__` تحذف `__import__` و `exec` و `eval` و `open`. البيئة المعزولة (sandbox) معطلة. تتضمن قائمة مسموحات استيراد الوحدات (`allowed_modules`) صراحةً 'os'، وتسمح قائمة مسموحات AST بعقد `ast.Import` و `ast.ImportFrom` و `ast.Call` و `ast.Attribute`. هذا يعني أن خطوة السيناريو الخبيثة التالية في سير العمل تتجاوز جميع فحوصات التحقق من صحة AST وتنفذ دون خطأ. سيناريو الهجوم ينشئ المهاجم أو يساهم بملف سير عمل YAML (من نوع: job) يتضمن خطوة script تحتوي على `import os; os.system(...)`. يقوم مستخدم أو خط أنابيب CI مضبوط مع `PRAISONAI_ALLOW_JOB_WORKFLOWS=true` بتنفيذ سير العمل عبر `praisonai workflow run malicious.yaml`. يتم تنفيذ أوامر نظام التشغيل العشوائية بصلاحيات العملية المستدعية. هذا أمر خطير بشكل خاص في البيئات متعددة المستأجرين أو بيئات CI حيث قد تأتي سير عمل YAML من مصادر غير موثوقة (مثل القوالب المحملة، والمستودعات المشتركة، وسير العمل المنشأ بواسطة الذكاء الاصطناعي). ### إثبات المفهوم PoC توجيهات كاملة، بما في ذلك تفاصيل التهيئة المحددة، لإعادة إنتاج الثغرة. ### الأثر السبب الرئيسي — الأسطر 364–372: ```python allowed_modules = {'os', 'datetime', 'time', 'json', 'math', 're', 'collections', 'itertools'} if isinstance(node, ast.Import): for alias in node.names: if alias.name.split('.')[0] not in allowed_modules: return {"ok": False, "error": f"Import of '{alias.name}' not allowed..."} ``` يعتبر os موثوقاً لأنه يُستخدم شائعاً لعمليات المسار (`os.path` ، `os.getcwd`). ومع ذلك، فإن `os.system()` و `os.popen()` و `os.execvp()` و `os.spawn*()` و `os._exit()` يمكن الوصول إليها جميعاً بمجرد استيراد الوحدة، ولا يتم حظر أي منها بشكل فردي. قيود `__builtins__` (التي تحظر `__import__`) ليست ذات صلة لأن الشيفرة تستخدم بيان استيراد حقيقي معالج...

المعالجة

المراجع

Esc