
CVE-2026-42945 (NGINX Rift) के लिए स्थानीय रीड-ओनली स्कैनर जो NGINX, OpenResty और Tengine इंस्टेंस की जांच करता है कि कहीं उनमें कमजोर rewrite कॉन्फ़िगरेशन तो नहीं है, बिना किसी एक्सप्लॉइट को निष्पादित किए या सेवाओं में बदलाव किए।
यह रिपॉजिटरी दो स्टैंडअलोन जाँच स्क्रिप्ट प्रदान करती है, जो Linux/Windows सर्वर पर Nginx, OpenResty, Tengine में CVE-2026-42945 से संबंधित जोखिमों की पहचान करने के लिए हैं।
स्क्रिप्ट केवल पढ़ने योग्य संग्रह और स्थानीय निर्णय लेती है; यह कोई भेद्यता PoC निष्पादित नहीं करती, कोई आक्रमण अनुरोध नहीं भेजती, कॉन्फ़िगरेशन नहीं बदलती, सेवा को पुनरारंभ नहीं करती, या सॉफ़्टवेयर को अपग्रेड नहीं करती।
CVE-2026-42945 को NGINX Rift भी कहा जाता है, और सार्वजनिक स्रोत इसे ngx_http_rewrite_module में हीप बफर ओवरफ़्लो समस्या के रूप में वर्णित करते हैं। NVD विवरण के अनुसार, जब rewrite निर्देश बाद के rewrite / if / set निर्देशों के साथ एक विशिष्ट संयोजन बनाता है, और इसमें अनाम PCRE कैप्चर वेरिएबल (जैसे $1, $2) और प्रश्न चिह्न ? युक्त प्रतिस्थापन स्ट्रिंग शामिल होती है, तो हमलावर HTTP अनुरोध बनाकर NGINX वर्कर प्रक्रिया में हीप बफर ओवरफ़्लो को ट्रिगर कर सकता है। यह समस्या वर्कर प्रक्रिया को पुनरारंभ कर सकती है; ASLR बंद होने जैसी विशिष्ट स्थितियों में, कोड निष्पादन का जोखिम मौजूद है।
NGINX आधिकारिक सुरक्षा बुलेटिन CVE-2026-42945 को ngx_http_rewrite_module के बफर ओवरफ़्लो के रूप में चिह्नित करता है, और NGINX Open Source के लिए सुधार सीमा प्रदान करता है:
| स्थिति | NGINX Open Source संस्करण |
|---|---|
| ठीक किया गया | 1.31.0+ / 1.30.1+ |
| संभावित रूप से प्रभावित | 0.6.27-1.30.0 |
वितरण, वाणिज्यिक उत्पाद, OpenResty, Tengine या निजी बिल्ड में बैकपोर्ट पैच या संस्करण मैपिंग अंतर हो सकते हैं; स्क्रिप्ट जितना संभव हो साक्ष्य एकत्र करेगी, लेकिन अंततः विक्रेता की घोषणाओं के साथ मैन्युअल पुष्टि की सिफारिश की जाती है।
यह उपकरण भेद्यता शोषण सत्यापन उपकरण नहीं है, बल्कि एक स्थानीय संग्रह और स्थैतिक कॉन्फ़िगरेशन जाँच उपकरण है। यह निम्नलिखित संयोजनों की पहचान पर ध्यान केंद्रित करता है:
rewrite निर्देश की प्रतिस्थापन स्ट्रिंग में अनएस्केप्ड $1, $2 जैसे अनाम कैप्चर वेरिएबल का उपयोग।rewrite प्रतिस्थापन स्ट्रिंग में अनएस्केप्ड ? शामिल होना; \? जैसे लिटरल प्रश्न चिह्न जोखिम की स्थिति नहीं माने जाएंगे।rewrite, if या set निर्देश मौजूद होना।उदाहरण जोखिम पैटर्न:
location ~ ^/api/(.*)$ {
rewrite ^/api/(.*)$ /internal?endpoint=$1 last;
set $flag 1;
}
जोखिम किसी एकल rewrite या set से नहीं आता, बल्कि संस्करण, कॉन्फ़िगरेशन संदर्भ और निष्पादन क्रम द्वारा संयुक्त रूप से बनाए गए ट्रिगर स्थितियों से आता है। हिट होने पर भी सुझाव है कि मैन्युअल रूप से पुष्टि की जाए कि क्या यह कॉन्फ़िगरेशन वास्तव में प्रभावी है, क्या इसे बाहरी अनुरोधों द्वारा पहुँचा जा सकता है, और क्या इसे वितरण द्वारा बैकपोर्ट किया गया है।
| फ़ाइल | विवरण |
|---|---|
check_nginx_linux.sh | Linux स्थानीय जाँच स्क्रिप्ट |
check_nginx_windows.ps1 | Windows स्थानीय जाँच स्क्रिप्ट |
README.md | चीनी विवरण |
README.en.md | English README |
पहले संस्करण में समर्थित:
rewrite कॉन्फ़िगरेशन की पहचान।summary.txt, summary.json और मूल साक्ष्य निर्देशिका का आउटपुट।पहले संस्करण में शामिल नहीं:
प्रशासक अधिकारों के साथ चलाने की अनुशंसा की जाती है:
root या sudo विशेषाधिकार वाले खाते का उपयोग करें।गैर-प्रशासक अधिकारों के तहत स्क्रिप्ट जितना हो सके एकत्र करेगी; यदि पूर्ण nginx -T प्रभावी कॉन्फ़िगरेशन निर्यात नहीं किया जा सकता, तो परिणाम मैन्युअल समीक्षा आवश्यक के रूप में चिह्नित किया जाएगा।
check_nginx_linux.sh को सर्वर पर अपलोड करने के बाद निष्पादित करें:
chmod +x check_nginx_linux.sh
sudo ./check_nginx_linux.sh
यदि sudo उपलब्ध नहीं है, तो सीधे निष्पादित किया जा सकता है:
./check_nginx_linux.sh
check_nginx_windows.ps1 को सर्वर पर अपलोड करने के बाद, "प्रशासक के रूप में चलाएँ" के साथ PowerShell निष्पादित करें:
powershell -ExecutionPolicy Bypass -File .\check_nginx_windows.ps1
स्क्रिप्ट स्क्रिप्ट निर्देशिका में परिणाम निर्देशिका उत्पन्न करेगी। निर्देशिका नाम में होस्टनाम, समय और स्क्रिप्ट प्रक्रिया ID शामिल है, ताकि एक ही सेकंड में बार-बार निष्पादन पर साक्ष्य मिश्रित न हों।
nginx_check_<होस्टनाम>_<समय>_<प्रक्रियाID>/
summary.txt
summary.json
raw/
host_info.txt
process_info.txt
service_info.txt
package_info.txt
nginx_paths.txt
instances/
instance_01/
nginx_invocation.txt
nginx_version.txt
nginx_build.txt
nginx_config_dump.txt
risky_config_matches.txt
instance_02/
...
| फ़ाइल या निर्देशिका | विवरण |
|---|---|
summary.txt | चीनी सारांश, मैन्युअल देखने और वापस रिपोर्ट करने के लिए उपयुक्त |
summary.json | संरचित परिणाम, बाद में बैच सारांश के लिए सुविधाजनक |
raw/ | मूल कमांड आउटपुट और साक्ष्य फ़ाइलें |
raw/instances/instance_XX/ | प्रत्येक उदाहरण के अलग-अलग संस्करण, कॉन्फ़िगरेशन और जोखिम साक्ष्य |
सारांश में निम्नलिखित दर्ज किया जाएगा:
| फ़ील्ड | विवरण |
|---|---|
उदाहरणों की संख्या | स्थानीय रूप से पाए गए और एक-एक करके जाँचे गए Nginx / OpenResty / Tengine उम्मीदवार उदाहरणों की संख्या |
कॉन्फ़िगरेशन आकार | nginx -T द्वारा निर्यात मूल कॉन्फ़िगरेशन फ़ाइल का आकार |
स्कैन की गई पंक्तियाँ | स्क्रिप्ट द्वारा वास्तव में स्कैन की गई कॉन्फ़िगरेशन आउटपुट पंक्तियों की संख्या |
खतरनाक कॉन्फ़िगरेशन हिट्स | हिट हुए खतरनाक rewrite नियमों की संख्या |
साक्ष्य सारांश | उच्चतम जोखिम वाले उदाहरण का साक्ष्य पूर्वावलोकन, पूर्ण साक्ष्य के लिए संबंधित उदाहरण निर्देशिका देखें |
यदि Nginx कॉन्फ़िगरेशन बहुत बड़ा है, तो स्क्रिप्ट कंसोल पर पूर्ण कॉन्फ़िगरेशन प्रिंट नहीं करेगी; पूर्ण प्रभावी कॉन्फ़िगरेशन संबंधित उदाहरण निर्देशिका में nginx_config_dump.txt में सहेजा जाता है। जब कॉन्फ़िगरेशन निर्यात फ़ाइल 10 MB से अधिक हो जाती है, तो स्क्रिप्ट स्वचालित रूप से स्कैन जारी रखेगी और raw/ परिणामों के साथ मैन्युअल स्पॉट चेक की सिफारिश करेगी।
यदि सर्वर पर कई nginx, openresty, tengine उम्मीदवार निष्पादन योग्य पाए जाते हैं, तो स्क्रिप्ट प्रत्येक की जाँच करेगी और उदाहरण विवरण उत्पन्न करेगी।
कुल सारांश में निष्कर्ष उच्चतम जोखिम वाले उदाहरण से लिया जाता है। समग्र निष्कर्ष एक रूढ़िवादी प्राथमिकता का पालन करता है:
प्रभावित, जोखिम भरा कॉन्फ़िगरेशनमैन्युअल समीक्षा आवश्यकप्रभावित, कोई जोखिम कॉन्फ़िगरेशन नहींप्रभावित नहींNginx स्थापित नहींजहाँ मैन्युअल समीक्षा आवश्यक प्रभावित, कोई जोखिम कॉन्फ़िगरेशन नहीं से ऊपर है, यह दर्शाता है कि अपुष्ट उदाहरण हैं जिन्हें और सत्यापन की आवश्यकता है, और यह पुष्टि किए गए खतरनाक कॉन्फ़िगरेशन के बराबर नहीं है।
| निष्कर्ष | अर्थ |
|---|---|
Nginx स्थापित नहीं | कोई Nginx / OpenResty / Tengine कमांड, प्रक्रिया या सेवा नहीं मिली |
प्रभावित नहीं | स्पष्ट रूप से ठीक किया गया संस्करण, और कोई खतरनाक कॉन्फ़िगरेशन नहीं मिला |
प्रभावित, कोई जोखिम कॉन्फ़िगरेशन नहीं | संस्करण संभावित रूप से प्रभावित है, लेकिन कोई खतरनाक rewrite कॉन्फ़िगरेशन नहीं मिला |
प्रभावित, जोखिम भरा कॉन्फ़िगरेशन | संस्करण संभावित रूप से प्रभावित या व्युत्पन्न संस्करण को समीक्षा की आवश्यकता है, और खतरनाक rewrite कॉन्फ़िगरेशन मिला |
मैन्युअल समीक्षा आवश्यक | अज्ञात संस्करण, व्युत्पन्न संस्करण, कॉन्फ़िगरेशन संग्रह विफलता, अपर्याप्त अनुमतियाँ, या अपर्याप्त साक्ष्य |