
CVE-2026-42945 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, NGINX के रिवाइट मॉड्यूल में एक हीप बफर ओवरफ्लो जो क्रॉस-रिक्वेस्ट हीप फेंग शुई के माध्यम से अप्रमाणित दूरस्थ कोड निष्पादन को सक्षम करता है।
CVE-2026-42945 के लिए RCE प्रूफ ऑफ कॉन्सेप्ट, जो NGINX के ngx_http_rewrite_module में 2008 में पेश किया गया एक गंभीर हीप बफर ओवरफ्लो है। यह बग rewrite और set निर्देशों का उपयोग करने वाले सर्वरों के विरुद्ध बिना प्रमाणीकरण के रिमोट कोड निष्पादन को सक्षम बनाता है।
यह भेद्यता — तीन अन्य मेमोरी करप्शन समस्याओं (CVE-2026-42946, CVE-2026-40701, CVE-2026-42934) के साथ — depthfirst की सुरक्षा विश्लेषण प्रणाली द्वारा NGINX स्रोत को ऑनबोर्ड करने के एक ही क्लिक के बाद स्वायत्त रूप से खोजी गई थी।
अपने कोड में इस तरह की समस्याएं खोजना चाहते हैं? इसी प्रणाली को आज़माएं: https://depthfirst.com/open-defense।
NGINX की स्क्रिप्ट इंजन दो-पास प्रक्रिया का उपयोग करती है: पहले आवश्यक बफर आकार की गणना करें, फिर डेटा कॉपी करें। is_args फ्लैग मुख्य इंजन पर तब सेट होता है जब rewrite रिप्लेसमेंट में ? होता है, लेकिन लंबाई-गणना पास एक नए शून्य किए गए सब-इंजन पर चलता है। इसलिए:
is_args = 0 देखता है → कच्ची कैप्चर लंबाई लौटाता है।is_args = 1 देखता है → NGX_ESCAPE_ARGS के साथ ngx_escape_uri को कॉल करता है, प्रत्येक एस्केप योग्य बाइट को 3 बाइट्स में विस्तारित करता है।कॉपी आकार से छोटे हीप बफर को हमलावर-नियंत्रित URI डेटा के साथ ओवरफ्लो कर देती है। शोषण क्रॉस-रिक्वेस्ट हीप फेंग शुई का उपयोग करके आसन्न ngx_pool_t के cleanup पॉइंटर को दूषित करता है (POST बॉडी के माध्यम से स्प्रे किया गया, क्योंकि URI बाइट्स में नल बाइट्स नहीं हो सकते), इसे एक नकली ngx_pool_cleanup_s पर पुनर्निर्देशित करता है जो पूल विनाश पर system() को लागू करता है।
इस बग के बारे में हमारे तकनीकी लेख में और पढ़ें।
| उत्पाद | प्रभावित | फिक्स्ड इन |
|---|---|---|
| NGINX ओपन सोर्स | 0.6.27 – 1.30.0 | 1.31.0, 1.30.1 |
| NGINX प्लस | R32 – R36 | R36 P4, R35 P2, R32 P6 |
पूर्ण विक्रेता सलाह: https://my.f5.com/manage/s/article/K000160932
Ubuntu 24.04.3 LTS पर परीक्षण किया गया।
./setup.sh — कंटेनर बनाएं।docker compose -f env/docker-compose.yml up — कमजोर NGINX सर्वर शुरू करें।python3 poc.py --shell — शेल प्राप्त करें।