NGINX Rift (CVE-2026-42945): یک سرریز heap ۱۸ ساله در ماژول rewrite
NGINX Rift (CVE-2026-42945, CVSS 9.2): یک سرریز بافر heap بحرانی در ماژول rewrite NGINX که توسط سیستم تحلیل هوش مصنوعی depthfirst کشف شد. از ۲۰۰۸ معرفی شده و ۱۸ سال انتشار NGINX را تحت تأثیر قرار میدهد و به یک مهاجم بدون احراز هویت اجازه اجرای کد از راه دور با یک درخواست HTTP ساختهشده را میدهد.
در ۱۳ می ۲۰۲۶، F5 و depthfirst به طور مشترک CVE-2026-42945 را افشا کردند—یک سرریز بافر heap بحرانی در ngx_http_rewrite_module NGINX. این آسیبپذیری از ۲۰۰۸ در codebase نشسته بود.
آنچه این کشف را قابل توجه میکند چگونگی پیدا شدن آن است: نه توسط یک محقق انسانی، بلکه توسط سیستم تحلیل آسیبپذیری خودمختار depthfirst. سیستم هوش مصنوعی به کد منبع NGINX نشانهگیری شد و ظرف شش ساعت مشکل سرریز heap را که ۱۸ سال از تشخیص انسانی فرار کرده بود پرچمگذاری کرد.
نسخههای متأثر
NGINX حدود یک سوم کل وبسایتها را در جهان تأمین میکند.
| محصول | نسخههای متأثر |
|---|---|
| NGINX Open Source | ۰.۶.۲۷ تا ۱.۳۰.۰ |
| NGINX Ingress Controller | ۳.۵.۰–۳.۷.۲, ۴.۰.۰–۴.۰.۱, ۵.۰.۰–۵.۴.۱ |
ریشه: پرچم is_args یتیم
آسیبپذیری در ngx_http_script.c زندگی میکند. وقتی یک دستور rewrite شامل ? باشد، تابع ngx_http_script_start_args_code پرچمی روی موتور اسکریپت میگذارد: e->is_args = 1. مشکل: این پرچم هرگز بازنشانی نمیشود.
این یک نقض قرارداد دو-پاس کلاسیک است. پاس طول: طول خام میسنجد. پاس کپی: با فرار کردن URI مینویسد. هر کاراکتر +، %، & از ۱ بایت به ۳ بایت گسترش مییابد—نوشتن از تخصیص عبور میکند.
کاهش
ارتقا به NGINX 1.31.0 یا 1.30.1. اگر نمیتوانی فوراً ارتقا دهی، از گروههای ضبط نامدار استفاده کن:
# آسیبپذیرrewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;
# کاهش یافتهrewrite ^/users/(?<user_id>[0-9]+)/profile/(?<section>.*)$ /profile.php?id=$user_id&tab=$section last;