
react CVE-2025-55182
गंभीरता: क्रिटिकल — CVSS 10.0
CWE: CWE-502 (अविश्वसनीय डेटा का डिसीरियलाइज़ेशन)
विक्रेता: Meta (Facebook)
प्रकटीकरण तिथि: 3 दिसंबर, 2025
CVE-2025-55182 React Server Components (RSC) में एक अधिकतम-गंभीरता वाली बिना प्रमाणीकरण के दूरस्थ कोड निष्पादन (RCE) कमजोरी है, जिसे React2Shell नाम दिया गया है। यह दोष इस बात में है कि React Flight प्रोटोकॉल के माध्यम से React Server Function एंडपॉइंट्स पर भेजे गए पेलोड को कैसे डिकोड करता है। एक हमलावर किसी भी कमजोर सर्वर पर एक एकल, विशेष रूप से तैयार HTTP POST अनुरोध भेज सकता है और मनमाना कोड निष्पादित कर सकता है — कोई क्रेडेंशियल, कोई उपयोगकर्ता सहभागिता आवश्यक नहीं।
जो अनुप्रयोग स्पष्ट Server Function एंडपॉइंट्स को उजागर नहीं करते हैं, वे अभी भी कमजोर हैं यदि वे React Server Components का समर्थन करते हैं।
| पैकेज | कमजोर संस्करण | पैच किए गए संस्करण |
|---|---|---|
react-server-dom-webpack | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | ≥ 19.0.1 / 19.1.2 / 19.2.1 |
react-server-dom-parcel | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | ≥ 19.0.1 / 19.1.2 / 19.2.1 |
react-server-dom-turbopack | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | ≥ 19.0.1 / 19.1.2 / 19.2.1 |
प्रभावित फ्रेमवर्क (जब कमजोर React पैकेज का उपयोग करते हैं): Next.js 15.x / 16.x (App Router), React Router, Waku, RedwoodSDK, Parcel RSC, Vite RSC प्लगइन।
वेक्टर स्ट्रिंग: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
React Server Components सर्वर से क्लाइंट तक घटक पेड़ों को स्ट्रीम करने के लिए Flight प्रोटोकॉल नामक एक बाइनरी वायर फॉर्मेट का उपयोग करते हैं। वही प्रोटोकॉल Server Functions (पूर्व में Server Actions) को संभालता है — कॉल करने योग्य एंडपॉइंट जो ब्राउज़र से सीरियलाइज़ किए गए आर्गुमेंट स्वीकार करते हैं।
कमजोरी डिसीरियलाइज़र में है: जब React एक Flight पेलोड को प्रोसेस करता है, तो इसे मनमाने सर्वर-साइड ऑब्जेक्ट्स को इंस्टैंशिएट करने में धोखा दिया जा सकता है, जिससे पूर्ण RCE हो जाता है। क्योंकि RSC सक्षम होने पर Flight एंडपॉइंट डिफ़ॉल्ट रूप से उजागर होता है, और प्रोटोकॉल स्तर पर कोई प्रमाणीकरण गेट मौजूद नहीं है, इसलिए शोषण के लिए केवल सर्वर तक नेटवर्क पहुंच की आवश्यकता होती है।
शामिल टेम्पलेट CVE-2025-55182.yaml तीन पूरक पहचान विधियों का उपयोग करता है।
रूट पथ पर Content-Type: text/x-component के साथ एक न्यूनतम POST भेजता है। एक कमजोर (या पहुंच योग्य) RSC सर्वर समान कंटेंट-टाइप और एक Flight स्ट्रीम बॉडी के साथ प्रतिक्रिया देता है, जिसकी पंक्तियाँ अल्फ़ान्यूमेरिक पंक्ति आईडी से शुरू होती हैं, जिसके बाद कोलन (जैसे 0:, 1:) या React संदर्भ चिह्न ($L, $S, $I, $@) होते हैं।
POST / HTTP/1.1
Content-Type: text/x-component
Accept: text/x-component, */*
मिलान शर्त: HTTP 200 + text/x-component हेडर + बॉडी में Flight स्ट्रीम regex।
Next.js RSC अनुरोधों को RSC: 1 हेडर और ?_rsc= क्वेरी पैरामीटर के माध्यम से संकेतित करता है। यह अनुरोध App Router Flight एंडपॉइंट तक पहुंच की पुष्टि करने के लिए ब्राउज़र प्रीफ़ेच का अनुकरण करता है।
GET /?_rsc=1 HTTP/1.1
Accept: text/x-component
RSC: 1
Next-Router-State-Tree: %5B%22%22%2C%7B%7D%5D
मिलान शर्त: HTTP 200 + text/x-component हेडर।
Next-Action हेडर (Server Functions को आमंत्रित करने के लिए उपयोग किया जाने वाला तंत्र) के साथ एक न्यूनतम विकृत Flight पेलोड पोस्ट करता है। एक कमजोर सर्वर पेलोड को डिसीरियलाइज़ करने का प्रयास करता है; यहां तक कि एक त्रुटि प्रतिक्रिया जिसमें RSC-विशिष्ट हेडर शामिल हैं, यह पुष्टि करती है कि एंडपॉइंट मौजूद है।
POST / HTTP/1.1
Content-Type: text/x-component
Next-Action: 0000000000000000000000000000000000000000
मिलान शर्त: HTTP 200/400/500 + text/x-component या x-action-revalidated हेडर।
स्थानीय *.json फ़ाइलों (जैसे package-lock.json, yarn.lock) को कमजोर पैकेज नामों के साथ 19.0.0, 19.1.0, 19.1.1, या 19.2.0 से मेल खाने वाले संस्करण regex के साथ स्कैन करता है। बिना कोई नेटवर्क ट्रैफ़िक भेजे रिपॉजिटरी या CI पाइपलाइनों की ऑडिटिंग के लिए उपयोगी।
# Nuclei स्थापित / अपडेट करें
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
nuclei -target CVE-2025-55182.yaml -u https://target.example.com
nuclei -target CVE-2025-55182.yaml -l targets.txt
nuclei -target CVE-2025-55182.yaml -target ./path/to/project
nuclei -target CVE-2025-55182.yaml -u https://target.example.com -v -je results.json
nuclei -target CVE-2025-55182.yaml -u https://target.example.com -rl 10 -timeout 10
तुरंत अपग्रेड करें पैच किए गए संस्करण में:
# npm
npm install react-server-dom-webpack@latest
# yarn
yarn upgrade react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack
# pnpm
pnpm update react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack
प्रति शाखा न्यूनतम सुरक्षित संस्करण:
| शाखा | न्यूनतम सुरक्षित संस्करण |
|---|---|
| 19.0.x | 19.0.1 |
| 19.1.x | 19.1.2 |
| 19.2.x | 19.2.1 |
अस्थायी शमन (यदि अपग्रेड तुरंत संभव नहीं है):
text/x-component सामग्री प्रकार को लक्षित करने वाला एक WAF नियम तैनात करें (इस CVE के लिए Google Cloud Armor नियम सार्वजनिक रूप से उपलब्ध हैं)।package-lock.json, node_modules, या SBOM का निरीक्षण आवश्यक है।यह टेम्पलेट केवल अधिकृत सुरक्षा परीक्षण और भेद्यता मूल्यांकन के लिए है। इसे उन प्रणालियों के विरुद्ध चलाना जिनके आप मालिक नहीं हैं या जिनके लिए आपके पास स्पष्ट लिखित अनुमति नहीं है, अवैध हो सकता है। लेखक दुरुपयोग के लिए कोई जिम्मेदारी स्वीकार नहीं करते हैं।
| मीट्रिक | मान |
|---|
| आक्रमण वेक्टर | Network |
| आक्रमण जटिलता | Low |
| आवश्यक विशेषाधिकार | None |
| उपयोगकर्ता सहभागिता | None |
| दायरा | Changed |
| गोपनीयता | High |
| अखंडता | High |
| उपलब्धता | High |
| समग्र स्कोर | 10.0 (Critical) |