A maximum-severity (CVSS 10.0) vulnerability in React Server Components is being actively exploited by Chinese state-sponsored actors and ransomware groups. The flaw allows unauthenticated remote code execution on servers running default configurations of Next.js and other React frameworks.

Chinese state-sponsored cyber espionage groups and ransomware operators began exploiting a critical security flaw in the popular React JavaScript library within hours of its public disclosure earlier this month. The vulnerability, tracked as CVE-2025-55182 and dubbed "React2Shell," allows an unauthenticated attacker to remotely execute code on a target server simply by sending a malicious HTTP request.
Security researchers at AWS and CISA have confirmed that the vulnerability affects the fundamental transport layer of React Server Components (RSC), meaning that even applications not explicitly using "Server Functions" are vulnerable if they support the RSC architecture. With a CVSS score of 10.0, this is a "break the glass" emergency for any organization running modern React frameworks like Next.js.
On December 3, 2025, the React team at Meta and Vercel (the makers of Next.js) simultaneously released emergency security updates. They disclosed a critical vulnerability in how React Server Components handle data sent from the client to the server. While the initial advisories were sparse on details to prevent widespread abuse, the barrier to entry for attackers proved incredibly low.
According to threat intelligence from AWS, threat actors identified as Earth Lamia and Jackpot Panda—groups with historic links to the People's Republic of China—were observed scanning for and exploiting this vulnerability on December 3, the same day the patch was released.
The U.S. Cybersecurity and Infrastructure Security Agency (CISA) added the flaw to its Known Exploited Vulnerabilities (KEV) catalog on December 5, mandating that federal agencies patch by December 12. However, for private sector organizations, the window to patch before compromise has likely already closed.
This vulnerability is a classic case of unsafe deserialization, but it manifests in a modern, complex architectural layer: the "React Flight" wire protocol.
React Server Components introduce a blurring of the line between client and server. To make this work, React uses an implicit Remote Procedure Call (RPC) system. When a client interacts with a Server Component, it sends a serialized payload to the server. The server must deserialize this payload to understand which function to run and with what arguments.
The flaw lies in the react-server-dom-* packages (webpack, turbopack, and parcel). The server-side deserializer takes metadata supplied by the user—specifically module and export names—and uses them to look up functions to execute.
Crucially, the vulnerable code performed this lookup without verifying that the requested property belonged to the module itself. It lacked a hasOwnProperty check.
Technical discussions surfacing on Hacker News and security mailing lists describe the root cause code flow roughly as follows:
1// Simplified representation of the vulnerable logic2function resolveModule(metadata) {3 // metadata.name is attacker-controlled4 return moduleExports[metadata.name]; 5}Because metadata.name is not validated, an attacker can request properties that exist on the JavaScript Object prototype, such as constructor or __proto__.
next-action headers or requests to /_next/static/chunks/react-flight.moduleExports['constructor'], which returns the global Function constructor. The attacker can then pass a string of JavaScript code (e.g., require('child_process').exec('...')) to this constructor./etc/passwd), or installing persistent backdoors.This vulnerability is particularly dangerous because it bypasses application-level authentication. The exploit occurs during the request processing pipeline, before the application's own business logic or auth checks typically run.
The impact is massive because the vulnerability exists in the underlying libraries used by major meta-frameworks. If you are using Next.js App Router (introduced in version 13), you are almost certainly vulnerable by default.
Meta (React) |
| 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
Meta (React) |
| 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
Meta (React) |
| 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
Vercel | Next.js | 13.3.x - 13.5.x | Upgrade to v14+ fixed |
Vercel | Next.js | 14.0.0 - 14.2.34 | 14.2.35 |
Note: Even if your application does not explicitly use "Server Actions" or the "use server" directive, the mere presence of the RSC build artifacts in node_modules and the default routing configuration in frameworks like Next.js exposes the vulnerable endpoints.
The exploitation of CVE-2025-55182 is not theoretical; it is active, widespread, and dangerous.
Threat Actor Profiles:
react2shell), attackers can easily encrypt server files or exfiltrate databases.Indicators of Compromise (IoCs): Defenders analyzing their logs should look for the following activity dating back to November 29, 2025:
next-action or rsc-action-id.$@ or the JSON snippet "status":"resolved_model".whoami, id, uname, or cat /etc/passwd./tmp, specifically /tmp/pwned.txt or suspicious shell scripts.If you run React Server Components or Next.js, assume you are a target.
This is the only effective long-term fix.
npm install next@latest (or the specific patch version for your major line from the table above). Verify the version in your package.json matches the fixed versions.react-server-dom-* packages are updated to the x.x.1 or x.x.2 patch releases (e.g., 19.0.1).If you cannot patch immediately, you must block the attack vector at the network edge.
AWSManagedRulesKnownBadInputsRuleSet version 1.24 or higher. AWS has updated this rule set to block the specific serialization patterns used in the exploit.next-action headers AND suspicious body content (like $@ or prototype keywords), though this carries a risk of false positives.Because exploitation began immediately upon disclosure:
whoami or /etc/passwd access, initiate your full incident response plan.CVE-2025-55182 highlights a growing risk in modern web development: the "magic" abstraction of the network boundary. Frameworks like React Server Components aim to make the server and client feel like a single cohesive codebase. However, this abstraction requires an implicit transport layer that, if flawed, exposes the server's internals directly to the public internet.
Just as we saw with Log4Shell in the Java ecosystem, widespread dependencies that handle data deserialization remain a prime target for attackers. In this case, the vulnerability was not in the application code written by developers, but in the glue that holds the modern web together.
Vercel
Next.js |
15.0.0 - 15.0.6 |
15.0.7 |
Vercel | Next.js | 15.1.0 - 15.1.10 | 15.1.11 |
Vercel | Next.js | 15.2.0 - 15.2.7 | 15.2.8 |
Vercel | Next.js | 15.3.0 - 15.3.7 | 15.3.8 |
Vercel | Next.js | 15.4.0 - 15.4.9 | 15.4.10 |
Vercel | Next.js | 15.5.0 - 15.5.8 | 15.5.9 |
Vercel | Next.js | 16.0.0 - 16.0.9 | 16.0.10 |
Various |
| All versions prior to Dec 3 | Upgrade dependencies |