
Nginx रीराइट CVE स्कैन(CVE-2026-42945 nginx-rift CVE-2026-9256)
भाषा: हिंदी | अंग्रेज़ी
यह NGINX कॉन्फ़िगरेशन में CVE-2026-42945 (NGINX Rift) और CVE-2026-9256 जोखिम पैटर्न की जाँच के लिए एक हल्का स्क्रिप्ट है।
यह कमज़ोरी depthfirst द्वारा लेख NGINX Rift: Achieving NGINX RCE via an 18-Year-Old Vulnerability में सामने लाई गई थी। लेख और F5/NVD विवरण के अनुसार, जोखिम ngx_http_rewrite_module के विशिष्ट कॉन्फ़िगरेशन संयोजन से संबंधित है: एक ही कॉन्फ़िग संदर्भ में, rewrite का प्रतिस्थापन स्ट्रिंग ? शामिल करता है, और बाद में rewrite, if, या set अनाम PCRE कैप्चर वेरिएबल्स (जैसे $1, $2) का संदर्भ देता है।
यह उपकरण मुख्य रूप से NGINX कॉन्फ़िगरेशन फ़ाइलों में निम्नलिखित उच्च-जोखिम पैटर्न की जाँच करता है।
निम्नलिखित की तरह उच्च-जोखिम अनुक्रम:
location ~ ^/api/(.*)$ {
rewrite ^/api/(.*)$ /internal?migrated=true;
set $original_endpoint $1;
}
जोखिम अलग-अलग rewrite या set में नहीं है, बल्कि उनके एक ही संदर्भ में निष्पादन क्रम में है:
rewrite रेगेक्स कैप्चर का उपयोग करता है, और प्रतिस्थापन स्ट्रिंग में ? होता हैrewrite, if, या set $1, $2 जैसे अनाम कैप्चर वेरिएबल्स का उपयोग करता हैयह संयोजन NGINX स्क्रिप्ट इंजन में लंबाई गणना और वास्तविक कॉपी चरण के बीच असंगति को ट्रिगर कर सकता है, जिससे हीप बफर ओवरफ़्लो हो सकता है।
निम्नलिखित की तरह उच्च-जोखिम rewrite:
location / {
rewrite /wengine-auth-static/((.*)) /?$1$2 break;
}
जोखिम शर्तें:
^/((.*))$ में $1 में $2 शामिल है$1$2ध्यान दें कि break जोखिम को समाप्त नहीं करता है; जब तक एकाधिक ओवरलैपिंग कैप्चर समूह ? के बाद के तर्क भाग में दिखाई देते हैं, तब भी यह arguments संदर्भ में आता है। सामान्य URI rewrite जैसे /$1$2 break इस CVE के ट्रिगर शर्तों के अंतर्गत नहीं आता है।
जब स्क्रिप्ट इस पैटर्न को पहचानती है, तो उसे स्पष्ट रूप से CVE-2026-9256 के रूप में चिह्नित किया जाएगा।
depthfirst लेख में सूचीबद्ध प्रभावित सीमा में शामिल हैं:
वास्तविक फिक्स संस्करण और उत्पाद मैट्रिक्स के लिए कृपया F5 आधिकारिक घोषणा या वितरण सुरक्षा बुलेटिन देखें। भले ही संस्करण प्रभावित सीमा के भीतर हो, सामान्यतः विशिष्ट rewrite कॉन्फ़िगरेशन अनुक्रम की उपस्थिति भी आवश्यक होती है।
स्क्रिप्ट वर्तमान NGINX संस्करण और कॉन्फ़िग स्कैन परिणाम दोनों आउटपुट करेगी:
0.6.27 - 1.30.1 में है और कॉन्फ़िग जोखिम अनुक्रम से टकराता है: NGINX को अपग्रेड करें या कॉन्फ़िग समायोजित करें।0.6.27 - 1.30.1 में है लेकिन कॉन्फ़िग जोखिम अनुक्रम से नहीं टकराता है: अपग्रेड की सिफारिश की जाती है, लेकिन इस उपकरण को कॉन्फ़िग ट्रिगर शर्त नहीं मिली।सीधे मौजूदा मशीन के पूर्ण NGINX कॉन्फ़िगरेशन को स्कैन करें:
python3 scan_rift.py
स्क्रिप्ट निष्पादित करेगी:
nginx -T
यदि वर्तमान उपयोगकर्ता के पास पूर्ण कॉन्फ़िग पढ़ने की अनुमति नहीं है, तो sudo का उपयोग करें:
sudo python3 scan_rift.py
आप पहले से निर्यात किए गए कॉन्फ़िग फ़ाइल को भी स्कैन कर सकते हैं:
python3 scan_rift.py /path/to/nginx-full.conf
उदाहरण के लिए, पहले कॉन्फ़िग निर्यात करें और फिर स्कैन करें:
sudo nginx -T > nginx-full.conf
python3 scan_rift.py nginx-full.conf
जब कोई जोखिम अनुक्रम नहीं मिलता है:
--- NGINX Rift Config Scanner (CVE-2026-42945 / CVE-2026-9256) ---
Current NGINX Version: nginx version: nginx/1.23.3
Version Status: Affected version range for NGINX Open Source (0.6.27 - 1.30.1)
[+] No vulnerable CVE-2026-42945 sequences or CVE-2026-9256 patterns detected.
[Recommendation]: Current NGINX version is in the affected range, but no vulnerable config pattern was detected. Upgrade is recommended, but config risk was not found by this scanner.
जब संदिग्ध अनुक्रम मिलता है:
--- NGINX Rift Config Scanner (CVE-2026-42945 / CVE-2026-9256) ---
Current NGINX Version: nginx version: nginx/1.23.3
Version Status: Affected version range for NGINX Open Source (0.6.27 - 1.30.1)
[!] VULNERABLE SEQUENCE FOUND (CVE-2026-42945):
Context: location ~ ^/api/(.*)$ {
[1. Rewrite With ?] rewrite ^/api/(.*)$ /internal?migrated=true;
[2. Follow-up $N] set $original_endpoint $1;
[Action Required]: Current NGINX version is affected and vulnerable config was found. Upgrade NGINX or adjust the reported rewrite pattern.
जब CVE-2026-9256 संदिग्ध पैटर्न मिलता है:
--- NGINX Rift Config Scanner (CVE-2026-42945 / CVE-2026-9256) ---
Current NGINX Version: nginx version: nginx/1.23.3
Version Status: Affected version range for NGINX Open Source (0.6.27 - 1.30.1)
[!] VULNERABLE PATTERN FOUND (CVE-2026-9256):
Context: location ^~ /wengine-auth-static/ {
[Rewrite Overlapping Captures] rewrite /wengine-auth-static/((.*)) /?$1$2 break;
[Context] arguments; overlapping refs: $1/$2
[Action Required]: Current NGINX version is affected and vulnerable config was found. Upgrade NGINX or adjust the reported rewrite pattern.
मिलने के बाद, मैन्युअल रूप से पुष्टि करें कि क्या यह कॉन्फ़िग संदर्भ बाहरी अनुरोधों के लिए सुलभ है, और जितनी जल्दी हो सके NGINX को अपग्रेड करें या कॉन्फ़िग समायोजित करें।
location, server, if आदि संदर्भों में rewrite / set संयोजन की जाँच करें।? वाले rewrite के बाद $1, $2 जैसे अनाम कैप्चर वेरिएबल का उपयोग जारी न रखें।^/((.*))$ के साथ ?$1$2।break को CVE-2026-9256 के समाधान के रूप में न लें; /?$1$2 break फिर भी हिट होगा।यह स्क्रिप्ट एक स्थैतिक कॉन्फ़िग स्कैनिंग टूल है, जिसका उद्देश्य तेज़ी से उच्च-जोखिम पैटर्न का पता लगाना है, यह कमज़ोरी के उपयोग की पुष्टि नहीं करता है।
include विस्तार असामान्यता, या गतिशील रूप से उत्पन्न कॉन्फ़िग स्कैनिंग प्रभाव को प्रभावित कर सकते हैं।