
Nuxt3 में विश्वसनीय डेटा के साथ बाह्य अविश्वसनीय डेटा की स्वीकृति भेद्यता
nuxt3 >=3.0.0 <3.16.0 में होने वाली कैश पॉइज़निंग भेद्यता के लिए वातावरण सेटिंग हेतु रिपॉजिटरी
जब nuxt सर्वर के सामने CDN होता है और CDN URL क्वेरी को छोड़कर केवल पथ को cache key के रूप में संग्रहीत करता है, तो /?/_payload.json का अनुरोध केवल / तक cache key के रूप में संग्रहीत होता है।
जब कोई अन्य उपयोगकर्ता / के लिए अनुरोध भेजता है, तो सामान्य पृष्ठ के बजाय _payload.json के लिए प्रतिक्रिया कैश से लौटाई जाती है — यही भेद्यता है।
यदि हमलावर कैश समाप्त होने की प्रत्येक अवधि पर /?/_payload.json पर अनुरोध भेजता है, तो DoS भेद्यता उत्पन्न हो सकती है, जिससे अन्य उपयोगकर्ता सामान्य पृष्ठ प्राप्त नहीं कर पाते।
git clone https://github.com/jiseoung/CVE-2025-27415-PoC.git
cd CVE-2025-27415-PoC
docker-compose up --build
'/' : कैश पॉइज़निंग उत्पन्न करने के लिए पृष्ठ
वास्तव में, http://localhost/?/_payload.json पर अनुरोध भेजकर '/' पथ के लिए कैश बनाने पर, http://localhost/ तक पहुँचने पर '/' पृष्ठ की प्रतिक्रिया नहीं लौटती, बल्कि कैश में संग्रहीत _payload.json की सामग्री json के रूप में लौटती है।
'/ex' : कैश पॉइज़निंग हमले को स्वचालित रूप से निष्पादित करने वाला पृष्ठ
Target Origin : कैश पॉइज़निंग हमले को करने का पथ
इस वातावरण में, होस्ट पर nginx कंटेनर nuxt-nginx का उपयोग करना चाहिए। क्योंकि हमले का स्वचालन सर्वर एक अन्य कंटेनर में Flask के साथ बनाया गया है, इसलिए localhost पर भेजने पर वह उस कंटेनर के localhost के रूप में पहचाना जाता है।
Cache Interval : अनुरोध भेजने की अवधि (सेकंड)। इसे CDN कैश के समाप्त होने की अवधि से थोड़ा कम सेट करें।
इस वातावरण में, अनुरोध 60 सेकंड के लिए कैश में संग्रहीत किए जाते हैं।