ACTIVELY EXPLOITED BY STATE ACTORS

CVE-2025-55182"React2Shell"React Server Components RCE

Unauthenticated Remote Code Execution — Log4Shell-level severity
Weaponized by Chinese APT groups within 6 hours of disclosure

10.0
CVSS Score
<6h
To Weaponize
2+
APT Groups
AWS Confirmed
Exploitation
react-server-dom-webpack
react-server-dom-turbopack
react-server-dom-parcel

Active State-Sponsored Exploitation

Chinese APT groups weaponized this vulnerability within hours of public disclosure

Threat Intelligence

Real-world exploitation observed by AWS and major security firms

Known Threat Actors

Earth LamiaActive
🇨🇳 ChinaState-Sponsored APT
Jackpot PandaActive
🇨🇳 ChinaState-Nexus Group
Dec 3, 2025Public disclosure
< 6 hoursFirst exploitation detected by AWS
OngoingMass scanning & exploitation

How Bad Is This?

Comparing CVE-2025-55182 to the most infamous vulnerabilities in recent history

This is Log4Shell-level bad

Maximum CVSS score, unauthenticated RCE, and faster weaponization than Log4Shell. State actors exploited it in under 6 hours — the fastest we've seen for a JavaScript vulnerability.

VulnerabilityCVSSTypeTime to ExploitAffected
CVE-2025-55182React2ShellCURRENT
10
RCE
< 6 hours
React 19.x, Next.js 15+
CVE-2021-44228Log4Shell
10
RCE
< 24 hours
Java/Log4j
CVE-2014-0160Heartbleed
7.5
Info Leak
< 24 hours
OpenSSL
CVE-2017-5638Struts RCE
10
RCE
< 48 hours
Apache Struts
CVE-2023-44487HTTP/2 Rapid Reset
7.5
DoS
< 1 week
HTTP/2 Servers
1M+Estimated vulnerable apps
<6hTime to weaponization
2+State actors exploiting
10.0Maximum CVSS score

How the Attack Works

CVE-2025-55182 exploits a flaw in how React Server Components decode incoming payloads, allowing attackers to execute arbitrary code on your server without any authentication.

Payload Construction

Attacker crafts a malicious RSC payload containing serialized JavaScript code

Server Processing

The payload is sent to a React Server Function endpoint for processing

Unsafe Decoding

React's payload decoder unsafely deserializes the malicious content

Remote Code Execution

Arbitrary code executes on the server with full system privileges

Technical Details

Attack VectorNetwork
Attack ComplexityLow
Privileges RequiredNone
User InteractionNone
ScopeChanged
ImpactCritical

Affected Packages & Frameworks

Check if your project uses any of the vulnerable versions below

React Packages

react-server-dom-webpack
Vulnerable
19.0.019.1.019.1.119.2.0
Patched
19.0.119.1.219.2.1
react-server-dom-parcel
Vulnerable
19.0.019.1.019.1.119.2.0
Patched
19.0.119.1.219.2.1
react-server-dom-turbopack
Vulnerable
19.0.019.1.019.1.119.2.0
Patched
19.0.119.1.219.2.1

Affected Frameworks

Next.js
15.x, 16.x, 14.3.0-canary.77+
Affected
React Router
7.x with RSC
Affected
Waku
All RSC versions
Affected
Parcel RSC
All RSC versions
Affected
Vite RSC
All RSC versions
Affected

Vulnerable vs Patched Code

A simplified comparison showing the core vulnerability and how it was fixed

Vulnerable Code
// Vulnerable payload decoding in react-server-dom-*
// This is a simplified representation of the vulnerability

function decodePayload(payload) {
  // ❌ VULNERABLE: Unsafely deserializes incoming data
  // The decoder doesn't properly validate the payload structure
  // before processing serialized function references
  
  const decoded = parseRSCPayload(payload);
  
  // Attacker can inject malicious code through
  // specially crafted server function references
  if (decoded.type === 'function') {
    // This executes attacker-controlled code!
    return eval(decoded.body); // RCE vulnerability
  }
  
  return decoded;
}

// Attack payload example (DO NOT USE)
const maliciousPayload = {
  type: 'function',
  body: 'require("child_process").execSync("whoami")'
};
DO NOT USE IN PRODUCTION
Patched Code
// Patched payload decoding in react-server-dom-*
// Fixed versions: 19.0.1, 19.1.2, 19.2.1

function decodePayload(payload) {
  // ✅ PATCHED: Validates payload structure before processing
  
  const decoded = parseRSCPayload(payload);
  
  // Strict validation of function references
  if (decoded.type === 'function') {
    // Verify function is in the allowed manifest
    if (!isRegisteredServerFunction(decoded.id)) {
      throw new SecurityError(
        'Invalid server function reference'
      );
    }
    
    // Only call pre-registered, validated functions
    return registeredFunctions.get(decoded.id);
  }
  
  return decoded;
}

// Server functions must be explicitly registered
// during build time - no dynamic execution allowed
SECURE IMPLEMENTATION

Key Security Changes

  • Strict validation of all incoming payload structures
  • Server functions must be pre-registered during build time
  • No dynamic code execution from untrusted payloads
  • Function references verified against allowed manifest

Attack Demonstration

See how an attacker can exploit CVE-2025-55182 to gain complete server access

This is a simulated demonstration for educational purposes only
1
Attacker Prepares Payload
2
Payload Sent to Server
3
Server Executes Malicious Code
4
Full System Compromise
attack-demo.sh
$ cat malicious_payload.json
{
  "type": "server_function",
  "id": "__malicious__",
  "args": [],
  "$$typeof": "react.server.reference",
  "body": "process.mainModule.require('child_process').execSync('id')"
}
Attacker crafts a malicious RSC payload that exploits the unsafe deserialization

Impact Assessment

This vulnerability allows complete server takeover without any authentication. Attackers can steal sensitive data, modify databases, pivot to internal networks, and maintain persistent access to your infrastructure.

Live API Demo

Test the vulnerability against simulated vulnerable and patched endpoints

Safe Simulation — No actual code execution

Select Exploit Payload

Request Payload
POST /api/demo/[endpoint]
Content-Type: application/json

{
  "type": "rsc_payload",
  "payload": {
    "exploit": "whoami"
  }
}
Vulnerable Endpoint
v19.2.0
Click "Send Malicious Payload" to test
Patched Endpoint
v19.2.1
Click "Send Malicious Payload" to test

Disclosure Timeline

Key events in the discovery and resolution of CVE-2025-55182

Nov 2025

Vulnerability Discovered

Security researchers identify a critical deserialization flaw in React Server Components payload handling.

Dec 1, 2025

CVE Assigned

CVE-2025-55182 is assigned with a CVSS score of 10.0 (Critical). React team begins emergency patch development.

Dec 3, 2025

Patches Released

React releases patched versions 19.0.1, 19.1.2, and 19.2.1 for all affected packages.

Dec 3, 2025

Public Disclosure

React team publishes official security advisory. All users urged to update immediately.

Mitigation Steps

Follow these steps immediately to protect your application from CVE-2025-55182

1

Identify Affected Packages

Check if your project uses react-server-dom-webpack, react-server-dom-turbopack, or react-server-dom-parcel in vulnerable versions (19.0.0, 19.1.0, 19.1.1, 19.2.0).

2

Update to Patched Versions

Upgrade affected packages to version 19.0.1, 19.1.2, or 19.2.1 depending on your current version track.

3

Rebuild & Redeploy

After updating, rebuild your application and redeploy to all environments immediately.

4

Audit & Monitor

Review logs for suspicious activity and implement additional security monitoring for RSC endpoints.

Quick Update Commands

# Update react-server-dom-webpack
npm update react-server-dom-webpack@19.2.1

# Update react-server-dom-turbopack  
npm update react-server-dom-turbopack@19.2.1

# Update react-server-dom-parcel
npm update react-server-dom-parcel@19.2.1

# Verify versions
npm list | grep react-server-dom
After updating: Verify the patch by checking your lock file and confirming no vulnerable versions remain in your dependency tree.