
CVE-2025-55182 (React2Shell) RSC Flight डीसेरियलाइज़ेशन RCE का एडवाइज़री और विश्लेषण, जिसमें रूट-कॉज़ ब्रेकडाउन, अटैक फ़्लो, पैच डिफ़, और Sigma/Suricata/WAF डिटेक्शन नियम शामिल हैं।
अंतिम सत्यापन तिथि: 2026-11-04 (KST)। प्रत्येक आंकड़ा केवल नीचे References में दिए गए स्रोतों से सत्यापित मान के रूप में दर्ज किया गया है, और जहाँ स्रोतों के बीच मान भिन्न हैं, वहाँ सभी मान साथ में दिए गए हैं।
Function कंस्ट्रक्टर तक पहुँचकर मनमाना JavaScript निष्पादित कर सकता है।react-server-dom-webpack / -parcel / -turbopack 19.0.0, 19.1.0, 19.1.1, 19.2.0 और इनका उपयोग करने वाले फ्रेमवर्क — विशेष रूप से Next.js 15.x / 16.x App Router। Server Function को सीधे परिभाषित न करने पर भी, केवल RSC का समर्थन होने पर प्रभावित होता है।| आइटम | विवरण |
|---|---|
| CVE ID | CVE-2025-55182 (React) / Next.js के लिए CVE-2025-66478 को डुप्लिकेट के रूप में अस्वीकृत (Rejected) कर दिया गया |
| उपनाम | React2Shell |
| प्रकाशन तिथि | 2025-12-03 (React टीम की सलाह, उसी दिन पैच जारी) |
| खोजकर्ता | Lachlan Davidson (2025-11-29 को Meta Bug Bounty के माध्यम से रिपोर्ट किया) |
| प्रभावित उत्पाद/संस्करण | react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack 19.0.0, 19.1.0, 19.1.1, 19.2.0 / Next.js 14.3.0-canary.77 और उसके बाद के canary, 15.x, 16.x (App Router) |
| पैच संस्करण | RCE फ़िक्स: React 19.0.1 / 19.1.2 / 19.2.1, Next.js 15.0.5 / 15.1.9 / 15.2.6 / 15.3.6 / 15.4.8 / 15.5.7 / 16.0.7 अनुशंसित अंतिम संस्करण (बाद की कमज़ोरियों सहित): React 19.0.3 / 19.1.4 / 19.2.3 (नीचे "बाद की कमज़ोरियाँ" देखें) |
| CVSS v3.1 | 10.0 Critical — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| CVSS v4.0 | इस दस्तावेज़ को तैयार करने के समय प्राथमिक स्रोतों में नहीं मिला |
| CWE | CWE-502 Deserialization of Untrusted Data (Vercel GHSA-9qr9-h5gf-34mp, GitLab Advisory DB)। CISA KEV प्रविष्टि में CWE नहीं दिया गया है |
| वास्तविक शोषण की स्थिति | शोषण की पुष्टि। CISA KEV में सूचीबद्ध 2025-12-05, संघीय एजेंसियों के लिए कार्रवाई की समय-सीमा 2025-12-12, रैनसमवेयर अभियानों में उपयोग: Known। AWS ने सार्वजनिक होने के कुछ ही घंटों के भीतर शोषण के प्रयास देखे |
| घटक | प्रभावित संस्करण | ठीक किया गया संस्करण |
|---|---|---|
react-server-dom-webpack / -parcel / -turbopack | 19.0.0 | 19.0.1 (अनुशंसित 19.0.3) |
| 〃 | 19.1.0, 19.1.1 | 19.1.2 (अनुशंसित 19.1.4) |
| 〃 | 19.2.0 | 19.2.1 (अनुशंसित 19.2.3) |
| Next.js 15.x (App Router) | 15.0 ~ 15.5 पैच से पहले | 15.0.5 / 15.1.9 / 15.2.6 / 15.3.6 / 15.4.8 / 15.5.7 |
| Next.js 16.x (App Router) | 16.0.7 से कम | 16.0.7 |
| Next.js canary | 14.3.0-canary.77 और उससे अधिक | 15.6.0-canary.58 / 16.1.0-canary.12 (14.3 canary उपयोगकर्ता 14.x stable पर डाउनग्रेड करें) |
| अन्य RSC एकीकरण उपकरण | React Router(unstable RSC API), Waku, Parcel RSC प्लगइन, Vite RSC प्लगइन(@vitejs/plugin-rsc), RedwoodSDK, Expo आदि | प्रत्येक उपकरण का नवीनतम संस्करण + पैच किया गया react-server-dom-* |
प्रभावित नहीं: सर्वर का उपयोग न करने वाले शुद्ध क्लाइंट React ऐप्स, Next.js 13.x / 14.x stable, Pages Router ऐप्स, Edge Runtime पर तैनाती।
React2Shell पैच के बाद RSC पर अतिरिक्त शोध के कारण RCE न होने वाली कमज़ोरियाँ लगातार प्रकाशित हुईं। RCE स्वयं 19.0.1 / 19.1.2 / 19.2.1 में ठीक किया गया था, लेकिन नीचे दी गई कमज़ोरियों को भी रोकने के लिए नवीनतम संस्करण आवश्यक है।
| CVE | प्रकार | CVSS v3.1 | प्रकाशित | फ़िक्स्ड संस्करण |
|---|---|---|---|---|
| CVE-2025-55184 | सेवा इनकार (DoS) | 7.5 | 2025-12-11 | 19.0.2 / 19.1.3 / 19.2.2 (अपूर्ण) |
| CVE-2025-55183 | स्रोत कोड प्रकटीकरण | 5.3 | 2025-12-11 | 19.0.2 / 19.1.3 / 19.2.2 |
| CVE-2025-67779 | CVE-2025-55184 के अपूर्ण पैच के कारण DoS | 7.5 | 2025-12-12 | 19.0.3 / 19.1.4 / 19.2.3 |
कुछ सुरक्षा विक्रेता लेख (उदा. Zscaler अपडेट) कहते हैं कि "CVE-2025-55182 का मूल पैच अपूर्ण था।" हालाँकि, React और GitLab सलाह के अनुसार अपूर्ण वह DoS फ़िक्स (CVE-2025-55184) था, और RCE फ़िक्स को बायपास किए जाने का कोई प्राथमिक स्रोत हमें नहीं मिला। किसी भी स्थिति में अनुशंसित कार्रवाई 19.0.3 / 19.1.4 / 19.2.3 या उससे ऊपर है।
| तिथि | घटना |
|---|---|
| 2025-11-29 | Lachlan Davidson ने Meta Bug Bounty के माध्यम से रिपोर्ट किया |
| 2025-11-30 | Meta सुरक्षा शोधकर्ताओं ने पुष्टि की, React टीम के साथ फ़िक्स शुरू |
| 2025-12-03 | React सलाह और पैच (19.0.1 / 19.1.2 / 19.2.1), Next.js सलाह (CVE-2025-66478) प्रकाशित। क्लाउड और WAF विक्रेताओं को पहले से साझा किया गया और उन्होंने सुरक्षा नियम तैनात किए |
| 2025-12-03 ~ 04 | AWS ने प्रकाशन के कुछ ही घंटों के भीतर चीन-संबद्ध समूहों (Earth Lamia, Jackpot Panda) द्वारा शोषण के प्रयास देखे। Zscaler ने पहले 2 घंटों में 4,100 से अधिक शोषण प्रयास देखे |
| 2025-12-05 | CISA KEV में सूचीबद्ध (समय सीमा 12-12)। Microsoft ने इस दिन से वास्तविक शोषण गतिविधि का पता लगाया |
| 2025-12-11 | अनुवर्ती कमज़ोरियाँ CVE-2025-55184 / 55183 प्रकाशित |
| 2025-12-12 | CVE-2025-67779 (अपूर्ण पैच) प्रकाशित, 19.0.3 / 19.1.4 / 19.2.3 जारी |
| 2025-12-15 | Microsoft ने शोषण-पश्चात गतिविधि विश्लेषण और हंटिंग गाइड प्रकाशित किया |
RSC क्लाइंट और सर्वर के बीच डेटा को Flight नामक अपने स्वयं के सीरियलाइज़ेशन प्रोटोकॉल के माध्यम से आदान-प्रदान करता है। जब क्लाइंट किसी Server Function को कॉल करता है, तो ब्राउज़र तर्कों को multipart/form-data POST अनुरोध के रूप में भेजता है, और प्रत्येक फ़ॉर्म फ़ील्ड एक क्रमांकित चंक बन जाता है।
$<id> किसी अन्य चंक के मान का संदर्भ है, $@<id> चंक ऑब्जेक्ट का स्वयं का संदर्भ है, $B<id> Blob प्रोसेसिंग है।then() मेथड होता है। JavaScript का await जब किसी thenable से मिलता है तो then() को कॉल करता है, और यदि परिणाम फिर से thenable हो तो इसे पुनरावर्ती रूप से कॉल करता रहता है।getOutlinedModel() में बिना सत्यापन के प्रॉपर्टी ट्रैवर्सलसर्वर-साइड Flight प्रतिक्रिया प्रोसेसर (packages/react-server/src/ReactFlightReplyServer.js) में getOutlinedModel() $<id>:<prop1>:<prop2> रूप के संदर्भ को : के आधार पर विभाजित करता है और लक्ष्य चंक में chunk[prop1][prop2] के क्रम में प्रॉपर्टी का अनुसरण करता है।
इस समय यह सत्यापित नहीं किया गया कि प्रॉपर्टी नाम ऑब्जेक्ट की स्वयं की प्रॉपर्टी (own property) है या नहीं। इसलिए __proto__, constructor, prototype जैसे नामों से विरासत में मिली प्रॉपर्टी तक भी पहुँचा जा सकता था।
JavaScript में किसी भी ऑब्जेक्ट का constructor.constructor वैश्विक Function कंस्ट्रक्टर होता है, जो एक स्ट्रिंग लेकर निष्पादन योग्य फ़ंक्शन बनाता है। सार्वजनिक विश्लेषण (OPSWAT, Zscaler) के अनुसार, हमलावर निम्नलिखित दो चीज़ों को संयोजित करता है।
| तत्व | शोषण का तरीका (अवधारणा) |
|---|---|
| प्रोटोटाइप ट्रैवर्सल | संदर्भ पथ के माध्यम से आंतरिक मेथड (Chunk.prototype.then) और Function कंस्ट्रक्टर तक पहुँच |
then() पुनरावर्ती रिज़ॉल्यूशन | हमलावर द्वारा बनाए गए नकली चंक को thenable माना जाता है और डीसीरियलाइज़ेशन इंजन उसकी स्थिति पर सीधे भरोसा करता है |
$B (Blob) प्रोसेसर | आंतरिक प्रतिक्रिया ऑब्जेक्ट के मेथड कॉल पथ को इंटरसेप्ट करके Function कंस्ट्रक्टर को हमलावर का कोड सौंपने के लिए प्रेरित करता है |