
CVE-2026-42945 के nginx rewrite module में हीप बफर ओवरफ्लो की प्रतिलिपि योग्य AI-सहायित पुनर्खोज। इसमें ऑडिट प्रॉम्प्ट, PoC ट्रिगर, ASan क्रैश पुनरुत्पादन, और डिफेंसिव रिसर्च के लिए तकनीकी विश्लेषण शामिल है।
यह रिपॉज़िटरी nginx ngx_http_rewrite_module के विरुद्ध एक पुनरुत्पादनीय AI-सहायता प्राप्त भेद्यता पुनःखोज प्रयोग का दस्तावेज़ीकरण करता है, जिसे बाद में CVE-2026-42945 से जोड़ा गया।
यह प्रयोग जानबूझकर संकीर्ण है। असुरक्षित फ़ाइल, src/http/ngx_http_script.c, को ऑडिट के लिए सीधे मॉडल को प्रदान किया गया था। यह दावा नहीं है कि किसी AI प्रणाली ने पूर्ण nginx कोडबेस में स्वायत्त रूप से समस्या खोजी।
ऑडिट की गई बग nginx रीराइट प्रोसेसिंग में पुरानी स्क्रिप्ट-इंजन स्थिति के कारण होने वाला हीप बफर ओवरफ्लो है।
उच्च स्तर पर:
rewrite प्रतिस्थापन जिसमें ? है, e->is_args = 1 सेट करता है।e->is_args साफ़ नहीं किया जाता।set, if, या rewrite एक्सप्रेशन जो एक अनाम regex कैप्चर, जैसे $1, को कॉपी करता है, गंतव्य बफर का आकार ऐसे कर सकता है मानो कैप्चर को कच्चा कॉपी किया जाएगा।e->is_args = 1 देखता है और कैप्चर को URI-एस्केप करता है।स्थानीय AddressSanitizer पुनरुत्पादन इसकी पुष्टि करता है:
ngx_escape_uri
ngx_http_script_copy_capture_code
ngx_http_rewrite_handler
.
├── README.md
├── LICENSE
├── prompts/
│ ├── audit_prompt.md
│ └── poc_prompt.md
├── poc/
│ ├── trigger.py
│ ├── nginx.conf
│ ├── reproduce.sh
│ └── expected_output.txt
├── docs/
│ ├── technical-analysis.md
│ ├── vulnerability-breakdown.md
│ └── methodology.md
└── screenshots/
└── asan-crash.png
PoC को AddressSanitizer सक्षम के साथ असुरक्षित nginx के स्थानीय लैब बिल्ड के लिए डिज़ाइन किया गया है। यह 127.0.0.1:18080 पर nginx शुरू करता है, स्थानीय सर्वर को एक निर्मित अनुरोध भेजता है, और क्रैश साक्ष्य प्रिंट करता है।
एक प्रभावित nginx स्रोत ट्री का उपयोग करें। प्रयोग को clang और ASan के साथ निर्मित nginx 1.30.0 के विरुद्ध मान्य किया गया था:
./auto/configure \
--prefix=/tmp/nginx-asan-poc \
--with-cc-opt='-O0 -g -fsanitize=address -fno-omit-frame-pointer' \
--with-ld-opt='-fsanitize=address'
make -j"$(getconf _NPROCESSORS_ONLN 2>/dev/null || sysctl -n hw.ncpu)"
इस रिपॉज़िटरी से:
NGINX_BIN=/path/to/vulnerable/nginx/objs/nginx ./poc/reproduce.sh
यदि इस रिपॉज़िटरी को सत्यापन के लिए उपयोग किए जाने वाले nginx स्रोत चेकआउट के अंदर सीधे रखा जाता है, तो स्क्रिप्ट स्वचालित रूप से ../../objs/nginx भी ढूंढ लेती है।
एक सफल पुनरुत्पादन इस प्रकार का ASan रिपोर्ट प्रिंट करता है:
ERROR: AddressSanitizer: heap-buffer-overflow
WRITE of size 1
#0 ngx_escape_uri ngx_string.c:1687
#1 ngx_http_script_copy_capture_code ngx_http_script.c:1399
#2 ngx_http_rewrite_handler ngx_http_rewrite_module.c:180
poc/expected_output.txt देखें।

PoC द्वारा उपयोग किया गया nginx कॉन्फ़िग जानबूझकर छोटा है:
location / {
rewrite ^(.*) /new?c=1;
set $myvar $1;
return 200 "$myvar\n";
}
पहला rewrite e->is_args सेट करता है क्योंकि प्रतिस्थापन में ? है। बाद का set उस पुरानी स्थिति के उपस्थित रहते हुए $1 का मूल्यांकन करता है।
न्यूनतम पैच स्क्रिप्ट इंजन के तर्क-स्थिति फ़्लैग को रीसेट करता है जब कोई regex rewrite समाप्त होता है:
e->is_args = 0;
e->quote = 0;
इस प्रयोग के लिए उपयोग किए गए स्रोत ट्री में, फिक्स इस कमिट के रूप में दिखाई देता है:
524977e7c534e87e5b55739fa74601c9f1102686
Rewrite: fixed escaping and possible buffer overrun
मुख्य बिंदु पैच का आकार नहीं है, बल्कि यह जिस स्थिति अपरिवर्तनीयता को पुनर्स्थापित करता है: लंबाई पास और लेखन पास को इस बात पर सहमत होना चाहिए कि कैप्चर को URI तर्क के रूप में कॉपी किया जा रहा है या नहीं।
इस प्रयोग ने एक अग्रणी कोडिंग एजेंट को ऑडिट सहायक के रूप में उपयोग किया। प्रॉम्प्ट ने मॉडल को स्पष्ट रूप से src/http/ngx_http_script.c में मेमोरी-सुरक्षा मुद्दों पर ध्यान केंद्रित करने और दो-पास लंबाई/लेखन बेमेल पर पूरा ध्यान देने का निर्देश दिया।
महत्वपूर्ण सीमाएँ:
सटीक प्रॉम्प्ट prompts/audit_prompt.md और prompts/poc_prompt.md में शामिल हैं।
यह रिपॉज़िटरी रक्षात्मक अनुसंधान, पैच सत्यापन और पुनरुत्पादनीयता के लिए है। PoC को केवल उन स्थानीय लैब इंस्टेंस के विरुद्ध चलाएँ जिन्हें आप नियंत्रित करते हैं।
इस रिपॉज़िटरी में दस्तावेज़ीकरण और PoC हार्नेस MIT लाइसेंस के तहत जारी किए गए हैं। nginx स्वयं शामिल नहीं है और अपने स्वयं के लाइसेंस द्वारा शासित है।