
CVE-2026-42945 أداة فحص والتحقق من ثغرة تجاوز سعة الكومة في NGINX
NGINX Rift هي أداة مفتوحة المصدر لفحص والتحقق من الثغرات الأمنية CVE-2026-42945 و CVE-2026-9256 (ثغرة تجاوز سعة كومة الذاكرة في وحدة ngx_http_rewrite_module من NGINX). تدعم الأداة الفحص عن بعد لبصمات الشبكة والتدقيق المحلي المتعمق للتكوين، مما يساعد فرق الأمن على تحديد المخاطر المحتملة في بيئات NGINX بسرعة.
| الخاصية | التفاصيل |
|---|---|
| رقم CVE | CVE-2026-9256 |
| نوع الثغرة | تجاوز سعة كومة الذاكرة (Heap-based Buffer Overflow, CWE-122) |
| المكون المتأثر | ngx_http_rewrite_module من NGINX |
| الإصدارات المتأثرة | NGINX مفتوح المصدر من 0.1.17 إلى 1.31.0 (mainline) / من 0.1.17 إلى 1.30.1 (stable) |
| الإصدارات المُصلحة | NGINX 1.31.1 (mainline) / 1.30.2 (stable)، صدرت في 2026-05-22 |
| مستوى الخطر | مرتفع – يمكن أن يؤدي إلى رفض الخدمة (DoS)، وفي حالة تعطيل ASLR يمكن أن يؤدي إلى تنفيذ تعليمات برمجية عن بُعد (RCE) |
شرط التفعيل: تعليمات rewrite تستخدم تعبير PCRE عادي مع وجود تداخل في الالتقاطات، مع الإشارة إلى عدة مجموعات التقاط غير مسماة في سلسلة الاستبدال.
| الخاصية | التفاصيل |
|---|---|
| رقم CVE | CVE-2026-42945 |
| نوع الثغرة | تجاوز سعة كومة الذاكرة (Heap Overflow) |
| المكون المتأثر | ngx_http_rewrite_module من NGINX |
| الإصدارات المتأثرة | NGINX مفتوح المصدر من 0.6.27 إلى 1.30.0 / NGINX Plus من R32 إلى R36 |
| الإصدارات المُصلحة | NGINX 1.30.1 (stable) / 1.31.0 (mainline) / NGINX Plus R32 P6+ |
| مستوى الخطر | مرتفع – يمكن أن يؤدي إلى رفض الخدمة (DoS) وتنفيذ تعليمات برمجية عن بُعد (RCE) |
شرط التفعيل: وجود كل من ? ومرجع لمجموعة التقاط غير مسماة (مثل $1) في رابط الاستبدال لتعليمة rewrite.
# تكوين تفعيل CVE-2026-42945: ? + $1
rewrite ^/api/(.*)$ /internal?id=$1 last;
# تكوين تفعيل CVE-2026-9256: مراجع متعددة $N
rewrite ^/(\w+)/(\d+)$ /$2/$1 last;
# تكوين آمن (استخدام مجموعات التقاط مسماة)
rewrite ^/api/(?<myid>.*)$ /internal?id=$myid last;
dpkg/rpm، للكشف إذا كان التوزيع قد قام بتصحيح الثغرات عبر backportrewrite-target الخطرة في موارد Ingress الخاصة بـ Kubernetesقم بتنزيل الملف الثنائي المناسب لمنصتك من صفحة الإصدارات.
git clone https://github.com/nu0l/NGINX-Rift.git
cd NGINX-Rift
# تجميع لمنصة واحدة
go build -o nginx_rift_scanner nginx_rift_scanner.go
# تجميع متقاطع لجميع المنصات
chmod +x build.sh && ./build.sh
./nginx_rift_scanner -h
# فحص هدف واحد
./nginx_rift_scanner scan -u http://example.com
# فحص جماعي (قراءة قائمة عناوين URL من ملف)
./nginx_rift_scanner scan -f url.txt
url.txt يحتوي على عنوان URL في كل سطر، مثال:
http://target1.com
https://target2.com
target3.com
# البحث التلقائي عن مسار تكوين NGINX الافتراضي
./nginx_rift_scanner verify
# تحديد مسار ملف التكوين
./nginx_rift_scanner verify -p /etc/nginx/nginx.conf
وضع Verify ينفذ تدقيقًا ثلاثي المستويات:
nginx -v للحصول على الإصدار، وفحص مدير حزم نظام التشغيل لوجود تصحيحات backportinclude)، لتحديد قواعد rewrite الخطرةkubectl، يتم فحص جميع موارد Ingress في الكتلة تلقائيًا| الأولوية | الحل | الشرح |
|---|---|---|
| P0 | ترقية NGINX | الترقية إلى 1.30.2+ (stable) / 1.31.1+ (mainline) / أحدث إصدار أمني من NGINX Plus |
| P0 | تحديث مدير حزم نظام التشغيل | apt-get upgrade nginx أو yum update nginx |
| P1 | تخفيف الطوارئ عبر التكوين | استبدال $1، $2... بمجموعات التقاط مسماة مثل $name، بدون الحاجة إلى إيقاف الخدمة |
| P2 | إصلاح Ingress في K8s | ترقية Ingress Controller وتعديل تعليقة rewrite-target |
| P3 | دفاع عميق | تعيين server_tokens off; لإخفاء بصمة الإصدار |
NGINX-Rift/
├── nginx_rift_scanner.go # كود المصدر الرئيسي
├── build.sh # سكربت التجميع المتقاطع لجميع المنصات
├── go.mod # تعريف وحدة Go
└── README.md
net/http القياسية في Go لإرسال طلبات HTTP، وتحليل رأس Server في الاستجابةnginx/X.Y.Z للإصدارات مفتوحة المصدر وNGINX Plus RXX للإصدارات التجارية)include، باستخدام خريطة visited لمنع المراجع الدائرية? + $N (CVE-2026-42945) ومراجع متعددة $N (CVE-2026-9256)kubectl get ingress --all-namespaces -o yamldpkg-query/rpm --changelog للكشف عن تصحيحات backport على مستوى نظام التشغيل (البحث عن رقمي CVE معًا)CGO_ENABLED=0)، إنشاء ملف ثنائي مستقل بدون تبعيات CMIT License
مُساهمة من مجتمع الأمن السيبراني.