
ماسح ثغرات أمنية غير مدمر لـ NGINX HTTP/3 (ngx_http_v3_module). يقوم فقط بإجراء فحص آمن: يفتح اتصال HTTP/3 (QUIC)، ويرسل طلب HEAD واحدًا، ويفحص حقل استجابة `Server`. ولا يحاول أبدًا إعادة فتح تدفق مُرمِّز QPACK أو تشغيل ثغرة use-after-free.
ماسح جماعي غير تدميري لثغرة use-after-free في NGINX HTTP/3 (QUIC)
اعرف أيًّا من مضيفاتك مكشوف للثغرة — دون تشغيلها إطلاقًا.
هذه الأداة مخصّصة لاختبارات الأمان المصرَّح بها فقط — أي بنيتك التحتية الخاصة، أو أنظمة لديك إذن كتابي صريح لاختبارها. وهي تنفّذ بصمة قراءة فقط (read-only) ولا تستغل الثغرة. أنت مسؤول عن الالتزام بالنطاق المحدّد والامتثال للقوانين المعمول بها ومبادئ الإفصاح المسؤول. لا يتحمّل المؤلفون أي مسؤولية عن إساءة الاستخدام.
CVE-2026-42530 هي ثغرة use-after-free (CWE-416) في وحدة ngx_http_v3_module الخاصة بـ NGINX. عندما يكون NGINX مُعدًّا لتقديم HTTP/3، يمكن لمهاجم بعيد غير مصادَق أن يعيد فتح تدفّق مُرمِّز QPACK ضمن جلسة HTTP/3 مُصنَّعة، مما يجعل عملية worker تشير إلى ذاكرة مُحرَّرة. التأثير المباشر هو تعطُّل/إعادة تشغيل عملية worker (حجب الخدمة)؛ أما على المضيفات التي يكون فيها ASLR معطَّلاً أو يمكن تجاوزه، فقد يتصاعد الأمر إلى تنفيذ كود عن بُعد.
نقطة أساسية: لا يمكن الوصول إلى الثغرة إلا عندما يكون HTTP/3 (QUIC) مفعَّلاً — وهي ليست مفعّلة افتراضيًا. المضيفات التي تخدم HTTP/1.1 أو HTTP/2 فقط عبر TCP غير متأثرة بهذا المتجه تحديدًا.
| الفرع | الحالة |
|---|---|
| NGINX Open Source 1.31.0 – 1.31.1 | ❌ متأثر |
| NGINX Open Source 1.31.2+ | ✅ مُصحَّح |
| NGINX Plus | طبّق نشرة البائع الأمنية (R36 P6 / 37.0.2.1) |
يفتح اتصال HTTP/3 حقيقيًا، ويرسل طلب HEAD / واحدًا، ويقرأ ترويسة Server من الاستجابة. ومن ذلك يصنّف كل هدف — والأهم أنه يتعامل مع المضيفات التي يمكن الوصول إليها لكنها تُخفي الإصدار على أنها تحتاج إلى مراجعة يدوية بدلاً من اعتبارها "نظيفة" بشكل خاطئ، إذ إن قابلية الوصول إلى QUIC هي الشرط المسبق للثغرة.
يتطلب Python 3.11+ (يستخدم asyncio.timeout).
git clone https://github.com/renzi25031469/CVE-2026-42530-scanner.git
cd CVE-2026-42530-scanner
pip install aioquic
نصيحة: استخدم بيئة افتراضية —
python3 -m venv .venv && source .venv/bin/activate.
# Single host
python3 cve-2026-42530-scanner.py example.com
# Many hosts from a file, 100 in parallel, save a CSV
python3 cve-2026-42530-scanner.py -f targets.txt -c 100 --csv results.csv
# Pipe targets from stdin and export JSON
cat hosts.txt | python3 cve-2026-42530-scanner.py -f - --json results.json
# Custom port and timeout
python3 cve-2026-42530-scanner.py target.internal -p 8443 -t 5
مضيف واحد في كل سطر. يتم التعامل تلقائيًا مع المنافذ والبروتوكولات والمسارات والتعليقات:
# production edge
edge01.example.com
edge02.example.com:8443
https://api.example.com/
# staging
10.0.5.21
[*] CVE-2026-42530 safe-check — 4 target(s), concurrency=100, timeout=10s
======================================================================
CVE-2026-42530 SAFE-CHECK RESULTS
======================================================================
[VULNERABLE ] edge01.example.com:443 (Server: nginx/1.31.1)
-> Vulnerable NGINX version over HTTP/3. Upgrade to nginx/1.31.2 or later.
[HTTP3_VERSION_HIDDEN ] api.example.com:443
-> HTTP/3 reachable but Server header is masked. Verify the NGINX version manually.
[LIKELY_PATCHED ] edge02.example.com:8443 (Server: nginx/1.31.2)
[NO_HTTP3 ] 10.0.5.21:443
----------------------------------------------------------------------
Summary: VULNERABLE=1 | HTTP3_VERSION_HIDDEN=1 | LIKELY_PATCHED=1 | NO_HTTP3=1
[!] 1 host(s) appear VULNERABLE. Mitigation: upgrade to nginx/1.31.2 or later,
or remove 'quic' from all 'listen' directives.
======================================================================
quic من كل توجيه listen وحذف http3 on;، ثم أعد تحميل NGINX. هذا يزيل مسار الكود المتأثر بالكامل./proc/sys/kernel/randomize_va_space = 2). تعامل مع هذا كطبقة تحصين، وليس بديلاً عن التحديث.aioquic غير متزامن، لذلك يستخدم هذا الماسح asyncio.Semaphore بدلاً من خيوط نظام التشغيل. بالنسبة للأعمال المرتبطة بإدخال/إخراج الشبكة — مئات مصافحات QUIC المنتظرة على الشبكة — يمكن لحلقة أحداث واحدة التوسّع أكثر بكثير وبعبء إضافي أقل بكثير من تجمع الخيوط، مع توفير سلوك "مسح مضيفات متعددة دفعة واحدة" نفسه. اضبط الحد الأقصى عبر -c.
شكرًا للباحثين المذكورين في الإفصاح الأصلي على تنسيقهم للإبلاغ عن الثغرة.
مُنشورة بموجب رخصة MIT. انظر LICENSE.
صُممت للمدافعين وفرق الاختراق المصرَّح بها (Red Teams). امسح بمسؤولية. 🔐
| CVE | CVE-2026-42530 |
| المكوِّن | ngx_http_v3_module (HTTP/3 / QUIC) |
| التصنيف | Use-After-Free (CWE-416) |
| التقييم (CVSS) | 9.2 (v4) · 8.1 (v3.1) |
| التأثير | تعطُّل عملية worker / DoS، احتمال RCE بدون ASLR |
| متجه الهجوم | شبكة، بدون مصادقة، بدون تفاعل المستخدم |
| الحالة | المعنى |
|---|
VULNERABLE | NGINX 1.31.0 / 1.31.1 يُقدَّم عبر HTTP/3 |
HTTP3_VERSION_HIDDEN | HTTP/3 قابل للوصول لكن ترويسة Server مُخفاة (server_tokens off) — تحقَّق من الإصدار يدويًا |
LIKELY_PATCHED | NGINX عبر HTTP/3، وإصداره خارج النطاق المتأثر |
NOT_NGINX | HTTP/3 قابل للوصول، لكن الخادم ليس NGINX |
NO_HTTP3 | لا يوجد مستمع HTTP/3 / QUIC يمكن الوصول إليه (غير مكشوف عبر هذا المتجه) |
ERROR | فشل الاستطلاع لسبب آخر |
| الخيار | الوصف | الافتراضي |
|---|
host | هدف واحد (موضعي) | — |
-f, --file | ملف قائمة الأهداف (- = stdin) | — |
-p, --port | منفذ QUIC/UDP الافتراضي | 443 |
-t, --timeout | مهلة كل مضيف (بالثواني) | 10 |
-c, --concurrency | أقصى عدد من عمليات المسح المتزامنة | 50 |
--csv | كتابة النتائج إلى CSV | — |
--json | كتابة النتائج إلى JSON | — |