Threat Intelligence
diskordia,
Dec 10
2025
When a vulnerability hits CVSS 10.0, it calls for more than a routine advisory. Enter, CVE-2025-55182, now widely referred to as React2Shell, the most severe vulnerability to hit the React ecosystem in years. In short, it enables unauthenticated remote code execution across millions of production environments built on React Server Components (RSC) and Next.js App Router.
Try our ReactOOPS challenge now
This issue is already being exploited by state-aligned threat groups. Proof-of-concept exploits are public, and the widespread adoption of React means the global attack surface is enormous.
TL;DR: If you run React 19.x or Next.js 15.x/16.x and haven’t applied patches yet, your environment is in serious danger. Here’s what you need to know and do right now.
CVE-2025-55182 is an unsafe deserialization vulnerability in React Server Components, specifically in how the React Flight Protocol handles streamed data between server and client.
React processes server-to-client data in “chunks.” During deserialization, the framework resolves references between these chunks. The flaw lies in how React handles the __proto__ property during this process.
By injecting malicious chunk references, an attacker can:
Overwrite prototype methods during deserialization
Manipulate .then() behavior
Trigger the JavaScript Function constructor
Execute arbitrary code remotely and without authentication
Only a single crafted HTTP request is needed.
React server components
19.0.0 → 19.2.0
Next.js app router
14.x Canary Builds, 15.x, 16.x (From 16.0.0 (including) up to 16.0.7 (excluding)
Related libraries
react-server-dom-webpack
react-server-dom-parcel
react-server-dom-turbopack
The timeline of React2Shell is another reminder that modern threat actors move faster than most patch cycles.
Nov 29, 2025: Vulnerability responsibly disclosed to React maintainers.
Dec 3, 2025: Public disclosure and assigned CVE, alongside the vendor patch.
Within hours: Exploitation attempts detected in AWS MadPot honeypots.
A China-nexus threat cluster, linked to groups such as Earth Lamia and Jackpot Panda, immediately incorporated React2Shell into their exploitation workflows.
In one observed case:
Attacker spent nearly an hour iterating on exploit attempts
Sent repeated malicious POST requests using headers such as:
next-action
rsc-action-id
Verified access with common recon commands:
whoami
id
Attempted file creation:
/tmp/pwned.txt
Both automated scanners and manual operators are now actively abusing the flaw.
React and Next.js underpin a huge share of modern web stacks, including enterprise applications, retail platforms, SaaS infrastructure, and government services. A full compromise of an RSC environment often means a compromise of the core application itself.
No memory corruption. No privilege requirements. No authentication. Just a crafted request exploiting a logic flaw in serialization. Public PoCs are available, lowering the barrier further.
Because the exploit executes during deserialization, before application-level validation runs, many WAFs fail to detect it unless specifically updated. Even then, obfuscated payloads make signature-based blocking unreliable.
A successful React2Shell exploit grants attackers:
Full server-side code execution
Access to environment variables and cloud credentials
Database access
Ability to deploy ransomware or webshells
A foothold for lateral movement
This is an incident response-level event, not a routine patch.
The React and Next.js teams moved rapidly. Fixed versions include:
React: 19.2.1+
Next.js: 16.0.7+
If you're still unpatched, assume exposure until proven otherwise.
Because attackers can access server memory and environment variables, rotate:
API keys
Environment variables
Database credentials
Cloud access tokens
Use temporary detection rules for:
Suspicious React Flight chunk structures
Requests containing __proto__ references
Abnormal next-action/rsc-action-id header usage
This won’t stop every variant but will disrupt common payloads.
Recommended practices:
Run RSC servers with minimal privileges
Enforce isolation between app and data layers
Use read-only file systems where possible
Enable strict monitoring on file write attempts in /tmp or userland directories
Monitor for:
Unexpected .then() behavior in logs
Suspicious POST requests to RSC endpoints
Creation of unexpected files (e.g., /tmp/pwned.txt)
Shell command execution from Node processes
Unusual outbound network traffic from app servers
We’ve released the ReactOOPS Challenge, available for both Individual and Enterprise customers. This is a dedicated Dockerized environment running a vulnerable Next.js instance, allowing teams to safely simulate the _rsc payload injection without risking production systems.
React2Shell is the kind of vulnerability that reshapes security priorities overnight. With widespread adoption, trivial exploitation, and active use by advanced threat groups, it’s already one of the most consequential web security stories of the year.
Patch immediately. Assume exposure if unpatched. And if you operate in a high-value environment, treat every RSC and Next.js server as potentially compromised until proven otherwise.