
CVE-2025-29927 के लिए प्रमाण-अवधारणा शोषण, एक Next.js मिडलवेयर बायपास भेद्यता। इसमें संस्करण-विशिष्ट पेलोड और संरक्षित मार्गों तक अनधिकृत पहुंच के परीक्षण के लिए एक Docker-आधारित प्रयोगशाला शामिल है।

Next.js के 11.1.4 से 13.5.6 तक, 14.x के 14.2.25 से पहले, और 15.x के 15.2.3 से पहले के सभी संस्करण इस भेद्यता से प्रभावित हैं। इसका प्रभाव उन अनुप्रयोगों के लिए विशेष रूप से महत्वपूर्ण है जो एक्सेस नियंत्रण लागू करने के लिए मिडलवेयर पर निर्भर करते हैं, क्योंकि हमलावर प्रमाणीकरण के बिना संरक्षित संसाधनों तक अनधिकृत पहुंच प्राप्त कर सकते हैं।
CVE-2025-29927 में भेद्यता Next.js के x-middleware-subrequest हेडर को संसाधित करने के तरीके में एक डिज़ाइन दोष से उत्पन्न होती है। यह हेडर मूल रूप से Next.js फ्रेमवर्क के भीतर आंतरिक उपयोग के लिए था ताकि मिडलवेयर निष्पादन के अनंत लूप को रोका जा सके।
जब कोई Next.js एप्लिकेशन मिडलवेयर का उपयोग करता है, तो आने वाले अनुरोधों को संसाधित करने के लिए runMiddleware फ़ंक्शन को कॉल किया जाता है। अपनी कार्यक्षमता के भाग के रूप में, यह फ़ंक्शन x-middleware-subrequest हेडर की उपस्थिति की जाँच करता है। यदि यह हेडर मौजूद है और इसमें एक विशिष्ट मान है, तो मिडलवेयर निष्पादन पूरी तरह से छोड़ दिया जाता है, और अनुरोध को NextResponse.next() के माध्यम से सीधे उसके मूल गंतव्य पर अग्रेषित कर दिया जाता है।
भेद्यता इस तथ्य में निहित है कि इस हेडर जांच का बाहरी उपयोगकर्ताओं द्वारा शोषण किया जा सकता है। किसी अनुरोध में सही मान के साथ x-middleware-subrequest हेडर जोड़कर, एक हमलावर किसी भी मिडलवेयर-आधारित सुरक्षा तंत्र को पूरी तरह से बायपास कर सकता है।
रिपॉजिटरी क्लोन करें:
git clone <repository_url>
प्रोजेक्ट निर्देशिका पर जाएं:
cd nextjs-docker-app
Docker इमेज बनाएं:
docker build -t nextjs-app .
Docker कंटेनर चलाएं:
docker run -p 3000:3000 nextjs-app
अपने ब्राउज़र में http://localhost:3000 पर एप्लिकेशन तक पहुंचें।
शोषण विधि Next.js संस्करण के आधार पर थोड़ी भिन्न होती है:
इन संस्करणों में, मिडलवेयर फ़ाइलों का नाम _middleware.ts होना आवश्यक था और उन्हें pages फ़ोल्डर के अंदर रखा जाना था। middlewareInfo.name का मान निर्देशिका नाम और फ़ाइल नाम से मिलकर बना था:
x-middleware-subrequest: pages/_middleware
नेस्टेड रूट्स के लिए, विभिन्न स्तरों पर कई मिडलवेयर फ़ाइलें हो सकती हैं, जिसके परिणामस्वरूप हेडर के लिए कई संभावित मान होते हैं:
x-middleware-subrequest: pages/dashboard/_middleware
या
x-middleware-subrequest: pages/dashboard/panel/_middleware
संस्करण 12.2 से शुरू करते हुए, Next.js ने मिडलवेयर कन्वेंशन बदल दिए। फ़ाइल का नाम middleware.ts (अंडरस्कोर के बिना) होना चाहिए और इसे अब pages फ़ोल्डर में नहीं रखा जाना चाहिए। इन संस्करणों के लिए, पेलोड सरल है:
x-middleware-subrequest: middleware
इसके अतिरिक्त, Next.js /src निर्देशिका के साथ एक वैकल्पिक प्रोजेक्ट संरचना की अनुमति देता है। ऐसे मामलों में, पेलोड होगा:
x-middleware-subrequest: src/middleware
13.2.0 और उससे ऊपर के संस्करणों के लिए, Next.js ने मिडलवेयर निष्पादन के लिए अधिकतम पुनरावृत्ति गहराई शुरू की। इसे अनंत लूप को रोकने के लिए लागू किया गया था लेकिन यह भेद्यता को प्रभावित नहीं करता है। शोषण वही रहता है, क्योंकि हेडर जांच किसी भी पुनरावृत्ति गहराई जांच से पहले होती है।
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
वैकल्पिक रूप से, /src निर्देशिका संरचना का उपयोग करने वाली परियोजनाओं के लिए:
x-middleware-subrequest: src/middleware:src/middleware:src/middleware:sr
=======
# cve-2025-29927
>>>>>>> 56c7b2dcd548caf771750519107bf7c57749a864