
قراءة ملفات عشوائية غير مصادق عليها في Flowise (< 2.2.4) عبر اجتياز المسار في getFileFromStorage (storageUtils.ts). ناتج عن مسار ملف غير معقم مقترن بتخصيص جماعي في PUT /api/v1/document-store/store/:id. يسمح باختراق كامل عبر قراءة /root/.flowise/encryption.key. متميز عن CVE-2025-71338 (تم إصلاحه في 2.2.4).
getFileFromStorage) — اقتراح CVE جديدثغرة منفصلة عن CVE-2025-71338 (التي تمثل نقطة الكتابة). وهي قراءة ملفات تعسفية غير مصادقة في مسار "rehydrate" الخاص بمحمّل مخزن المستندات في Flowise، وتؤثر على الإصدارات 1.7.1 – 2.2.3، وقد أُصلحت في 2.2.4. قراءة /root/.flowise/encryption.key تمنح المفتاح الذي يفك تشفير جميع بيانات اعتماد المزودين المخزنة ← اختراق كامل لبيانات الاعتماد.
| الملف | الغرض |
|---|
report.md | تقديم CVE الجديد: السبب الجذري، مسار الثغرة، CVSS، التأثير، الإصدارات المتأثرة، الحل، PoC، والتمييز عن ثغرات CVE القائمة |
poc.py | PoC ذاتي الإثبات (مكتبة قياسية فقط) — يزوّر اللوادر عبر الإسناد الجماعي، ويُطلق قراءة إعادة الترطيب FILE-STORAGE::، ويطبع محتويات الملف في نفس القناة |
docker/Dockerfile | صورة مختبر مُحدَّدة بالإصدار (FROM صورة المورّد الحقيقية؛ بدون أي طبقة إضافية) |
setup.sh | يبني/يشغّل المختبر (FLOWISE_VERSION، الافتراضي 2.1.0)؛ ويصنّف الإصدارات المتأثرة مقابل المُصلَّحة |
evidence.txt | تحقق مباشر: استخراج encryption.key مطابق بايتًا ببايت على 2.1.0 و2.2.3؛ غير قابل للاستغلال على 2.2.4 |
# start an affected lab (default 2.1.0):
bash setup.sh
# exfiltrate the credential-decryption key (self-proving; no listener):
python3 poc.py http://127.0.0.1:3510 --read-path /root/.flowise/encryption.key
# ground truth:
docker exec <container> cat /root/.flowise/encryption.key
getFileFromStorage(file, ...paths) تنفذ path.join(getStoragePath(), ...paths, file) + fs.readFileSync مع file غير معقّم (خام حتى 2.2.3، وأُضيف _sanitizeFilename في 2.2.4)؛ file يأتي من المهاجم عبر قيمة اللودر FILE-STORAGE::، ويُزوَّر الإدخال الحاكم loaders[].files[] عبر الإسناد الجماعي PUT /store/:id (Object.assign(entity, req.body)).