← सूची पर वापस जाएँ

Nginx की 18 वर्षीय lacuna CVE-2026-42945: सिद्धांत PoC पुनर्वास पूरा

itadol5j

Nginx CVE-2026-42945

Nginx Infiltration 18-year उच्च जोखिम अंतराल CVE-2026-42945: Rationale, PoC और पुनर्वास कार्यक्रम

सुरक्षा अनुसंधान संस्थान, 13 मई 2026गहराईF5.CVE-2026-42945:

  • CVSS v4.0 रेटिंग 9.2उच्च जोखिम पाशहोल
  • बफ़र फैल: दूरस्थ कोड निष्पादन (RCE) के लिए नेतृत्व कर सकते हैं
  • 18 साल2008 लाइब्रेरी के बाद से कोड लिखें
  • दुनिया को प्रभावित करने वाली 975 मिलियन साइटेंचीन 2.54 मिलियन से अधिक वेबसाइटों को प्रभावित करता है
  • पीओसी ने सार्वजनिक किया: Chianin सफलतापूर्वक ठीक हो गया है

यह है...NGINX कोर मॉड्यूलएक ऐतिहासिक पाशहोल जिसमें हमलावर केवल सर्वर को दूरस्थ रूप से लेने के लिए एक विशेष रूप से डिज़ाइन किए गए HTTP अनुरोध को भेजते हैं।

अंतराल का सारांश

मूलभूत जानकारी

होल गुण विवरण
होल संख्या CVE-2026-42945
CVSS रेटिंग v4.0: 9.2
होल प्रकार स्टैक आधारित बफर ओवरफ्लो
खतरे का प्रकार रिमोट कोड निष्पादन (RCE), सेवाओं का इनकार (DoS)
उपयोग की शर्तें प्रमाणीकरण की आवश्यकता नहीं है, केवल HTTP अनुरोधों का निर्माण
प्रभाव घटक ngx http rewrite मॉड्यूल (NGINX कोर निर्मित मॉड्यूल)
डिस्कवरी एजेंसी गहराई

प्रभाव का दायरा

  • वैश्विक स्तर पर 97.5 मिलियन साइट्सप्रभाव
  • चीन 2.54 मिलियन वेबसाइटोंप्रभाव
  • NGINX वैश्विक वेबसाइट के लगभग 1/3 होस्ट करता हैप्रभाव बहुत बड़ा है।
  • कोड सेवर्ष 2008लेखन, lurking18 साल

Trigger शर्त

तीन स्थितियों को एक साथ मिलना चाहिए।

गैप ट्रिगर की आवश्यकताउन समूहों को कॉन्फ़िगर करें जो विशिष्ट परिस्थितियों को पूरा करते हैं:

शर्तें Annotation उदाहरण:
Unnamed PCRE कैप्चर Unnamed Group के साथ कमांड कैप्चर करें एक, दो, तीन ...
2. प्रश्न चिह्न के साथ स्ट्रिंग बदलें स्ट्रिंग को बदलें में क्या होता है? वर्ण /profile.php?id=$1&tab=2
3. बाद में/if/set निर्देशों के बाद अन्य आदेशों का पालन करें {...}

vulnerability

# 易受攻击配置
rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;
# 后跟其他指令
if ($arg_debug) {
    set $debug_flag 1;
}

यह विन्यास तीन शर्तों को पूरा करता है:Unnamed capture $ 1/$2मुझे नहीं पता।स्ट्रिंग सामग्री बदलें?मुझे नहीं पता।यदि आदेशमुझे नहीं पता।

यह एक अच्छा विचार है।

दो चरणों के बीच असंगति

NGINX स्क्रिप्ट इंजनदो चरणों का उपयोग:

  • चरण I: गणना आवश्यक बफर आकार
  • चरण II: बफर करने के लिए डेटा कॉपी करें

छेद का मूल हैargs टैग प्रबंधन त्रुटि है:

चरण args स्थिति प्रक्रिया तर्क परिणाम
लंबाई गणना चरण =0 मूल कैप्चर की लंबाई वापस करें बफर आकार का अंडरस्टिमेशन
डेटा प्रजनन चरण =1 कॉल ngx बच uri 3 बाइट्स प्रति बाइट्स के साथ बफ़र फैल

विशिष्ट प्रक्रियाएं

  1. Rewrite CommandUnnamed capture $ 1/$2
  2. स्ट्रिंग बदलेंशामिल? ट्रिगर आर्ग = 1 है
  3. लंबाई गणना चरण: नई प्रारंभिक उपनिवेश, args = 0 है
  4. मूल लंबाई लौटानावितरित बफर जोनों के छोटे ढेर
  5. डेटा प्रजनन चरण: मुख्य इंजन का उपयोग करें, args = 1 है
  6. कॉल ngx बच uri: विस्तारित बाइट्स, बफर ज़ोन से बाहर फैल रहा है
  7. हमलावर नियंत्रण योग्य यूआरआई डेटालेखन स्पिल क्षेत्र

उपयोगिता

क्रॉस फेंग शुई:

  • POST requesterजेट रिएक्टर मेमोरी (क्योंकि यूआरआई में nullabyte नहीं हो सकता)
  • स्पिल डेटाआसन्न gleanup सूचक ngx pol t के विघटन
  • नकली ngx पूल सफाई, प्रणाली की ओर इशारा करते हुए ()
  • नष्ट होने पर पूलट्रिगर सिस्टम () कॉल
  • RCE

एएसएलआर प्रभाव

  • ASLR सक्षमअन्य आयोजक
  • एएसएलआर अक्षम: दूरस्थ कोड निष्पादन (RCE)

प्रभाव संस्करण

NGINX ओपन सोर्स

संस्करण रेंज संस्करण को ठीक करें
0.6.27 - 1.30.0 1.31.0, 1.30.1

NGINX Plus

संस्करण रेंज संस्करण को ठीक करें
R32 - R36 R36 P4, R35 P2, R32 P6

अन्य प्रभावित घटक

  • NGINX संस्थान प्रबंधक2.16 – 2.21.1
  • NGINX अनुप्रयोग उत्पादन WAF5.8.0
  • NGINX सूचना ठेकेदार3.5.0 – 5.4.1
  • NGINX गेटवे फैब्रिक1.3.0 – 2.5.1
  • NGINX के लिए F5 Dos4.8.0

The position of the position.

पीओसी ने सार्वजनिक किया

  • Github Repository:https://github.com/DepthFirstDisclosures/Nginx-Rift
  • चियान Xin वापस आ गया है।: थ्रेट इंफॉर्मेशन सेंटर में सुरक्षा शोधकर्ताओं की सफल पुन: प्रयास
  • तकनीकी विवरण सार्वजनिक किए जाते हैं।अन्य आयोजक
  • क्षेत्र में उपयोग करेंनहीं मिला

पीसी उपयोग विधि

# 构建容器
./setup.sh

# 启动易受攻击的 NGINX 服务器
docker compose -f env/docker-compose.yml up

# 执行 PoC 获取 Shell
python3 poc.py --shell

पुनर्वास कार्यक्रम

विधि 1: अपग्रेड

# 升级到修复版本
NGINX Open Source >= 1.31.0
NGINX Open Source >= 1.30.1
NGINX Plus >= R32 P6
NGINX Plus >= R36 P4

# 升级后重启 NGINX
nginx -s reload

Methodology 2: विन्यास का संशोधन (mitigation उपायों)

विलअनामित कैप्चर ग्रुपसाथ बदलेंनाम कैप्चर ग्रुप:

# 易受攻击配置(未命名捕获)
rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;

# 修复后配置(命名捕获)
rewrite ^/users/(?[0-9]+)/profile/(?.*)$ /profile.php?id=$user_id&tab=$section last;

नाम कैप्चर ग्रुपयह एक लूपहोल को ट्रिगर नहीं करेगा।

विधि 3: कॉन्फ़िगरेशन की जांच करें

संवेदनशील विन्यास के लिए जाँच करें:

# 搜索易受攻击的 rewrite 指令
grep -E "rewrite.*\$[0-9]+.*\?.*(rewrite|if|set)" /etc/nginx/nginx.conf
grep -rE "rewrite.*\$[0-9]+.*\?.*(rewrite|if|set)" /etc/nginx/conf.d/

खोज प्रक्रिया

स्वचालित प्रणाली खोज

गहराईसुरक्षा विश्लेषण प्रणाली:

  • 6 घंटे के भीतरपांच प्रश्न मिले।
  • 4 की पुष्टि NGINX
  • CVE-2026-42945यह सबसे खराब छेद है।
  • 2008 तकलगभग सभी मानक निर्माण संस्करणों में मौजूद है

अन्य प्रासंगिक पाशहोल

  • CVE-2026-42946: स्मृति क्षति
  • CVE-2026-40701: स्मृति क्षति
  • CVE-2026-42934: स्मृति क्षति

सारांश

CVE-2026-42945यह इतिहास में एक उच्च जोखिम वाला लूपहोल है:

  • 18 साल: 2008 लाइब्रेरी के बाद से लिखित कोड
  • CVSS 9.2: बफर स्पिल जो RCE को जन्म दे सकता है
  • Trigger शर्त: फिर से लिखने के आदेश unnamed कैप्चर + स्ट्रिंग सामग्री की जगह का उपयोग करता है? + और अन्य कमांड
  • वैश्विक स्तर पर 9.75 मिलियन साइट्स, चीन में 2.54 मिलियन साइट्स
  • पीओसी ने सार्वजनिक किया: गिटहब भंडार + क़ियानकिन को पुन: पेश किया गया है
  • पुनर्वास कार्यक्रम

18 वर्षों में, एक संभावित रिसाव था, और यह सिफारिश की गई थी कि कॉन्फ़िगरेशन को अपग्रेड या संशोधित किया जा सकता है।

सरकारी घोषणा:https://my.f5.com/manage/s/article/K000161019

पीओसी वेयरहाउस:https://github.com/DepthFirstDisclosures/Nginx-Rift

तकनीकी विश्लेषण:https://depthfirst.com/research/nginx-rift