React Vulnerabilities: Risks and Mitigation | Sonatype

Three New React Vulnerabilities Surface on the Heels of React2Shell

December 12, 2025
By Sonatype Research Team

6 minute read time

CVE-2025-55183, CVE-2025-55184, and CVE-2025-67779 require immediate attention

On December 3, the React team disclosed React2Shell — a set of two critical bugs in React Server Components (tracked as CVE-2025-55182 and CVE-2025-66478) that together enable Remote Code Execution (RCE) through a deserialized HTTP request.

It's classic "worst case" material:

Within hours, Cloudflare was already seeing scanning and attempted exploitation in the wild, including traffic tied to Asia-linked threat actor infrastructure. Since then, three more RSC vulnerabilities have been disclosed that live in the same neighborhood as React2Shell: CVE-2025-55183, CVE-2025-55184 and CVE-2025-67779.

Think of these as a family of RSC issues, not separate, one-and-done events.

What's New Beyond React2Shell?

React2Shell (-55182 + -66478) is the RCE everyone is rightly worried about. The new issues widen the impact. Importantly, two new CVEs are not related to React2Shell at all. We should expect to continue to see heavy scrutiny on packages with Critical flaws, which typically results in additional vulnerabilities disclosed.

CVE-2025-55183 – Server-side Source Code Exposure

Under specific conditions, an attacker can coerce RSC Server Functions into returning a specifically-defined "Server Function" instead of just data.

If that source includes:

…then a "medium" CVSS bug becomes a very practical way to leak secrets and map your application internals.

CVE-2025-55184 and CVE-2025-67779 – Pre-auth Denial-of-Service

By sending an RSC Flight payload with cyclic Promise references, an attacker can push the server into unbounded recursion / event-loop lockup and effectively take it offline — no credentials, no user interaction.

That's a clean pre-auth DoS against any Internet-facing RSC deployment. CVE-2025-67779 was released as a follow-on to -55184 due to the initial fixed version failing to address the full problem.

These issues don't replace React2Shell; they stack on top of it. While one bug gives you RCE, the others give you ways to knock over servers and leak code, all in the same RSC machinery.

Exploitation Isn't Theoretical

Several research organizations have shown this is already being worked at scale: in the first days after disclosure, Cloudflare's WAF saw hundreds of millions of React2Shell-related hits and thousands of unique IPs and User-Agent strings probing for exposure.

A few takeaways from that:

These vulnerabilities should be a cause for concern — by nature, these vulnerabilities are very difficult for an attacker to discover. But, once they are discovered, they are incredibly easy to exploit. Essentially, any unpatched system on the public web is exploitable, and with attackers relying more and more on automation to find and attack those systems, their owners should assume they will be attacked.

What You Should Do Now

Treat all the RSC CVEs as one incident: CVE-2025-55182 (RCE) + 55183 (source leak) + 55184 (DoS) [+ 67779 patch follow-up].

1. Upgrade to the Current Fixed Versions

Follow the React team's updated guidance, which now explicitly includes the DoS and source-exposure issues as well as a follow-up case, CVE-2025-67779. If your framework supports RSC, assume you're affected even if you don't think you "use" server functions.

React Packages react-server-dom-webpack
react-server-dom-parcel
react-server-dom-turbopack
Move to the latest available versions (React recommends upgrading to the newest 19.x and associated RSC packages, not just the first React2Shell patch).
Frameworks Next.js
React Router
Waku
RedwoodJS/RedwoodSDK
Expo (apps using RSC features)
@parcel/rsc (Parcel RSC plugin)
@vitejs/plugin-rsc (Vite RSC plugin)
Upgrade to the fixed releases in your line (for example, specific Next.js versions like 14.2.35, 15.0.7, 16.0.10, etc., as documented in the React and Next.js advisories).

2. Inventory Where React RSC Actually Lives

You can't patch what you don't know you have.

This is where decent dependency visibility and SBOM/SCA tooling really pays off — especially as more RSC variants show up over time.

3. Harden the Edge While You Patch

You shouldn't rely on a WAF as your only control, but it's an important pressure valve while you roll out fixes.

4. Assume Probing and Hunt Accordingly

If you were slow to apply the initial React2Shell patches, plan as if somebody at least tried to hit you. Look for:

If you find evidence of source leakage through 55183, treat any exposed secrets as compromised and rotate them.

Bigger Picture: Vulnerability Families, Not Single Bugs

The real lesson here isn't just "patch React2Shell quickly" — it's that:

So the mindset shift is:

If you design your processes around that — good dependency visibility, reliable upgrade paths, and realistic incident response — you're much better positioned for whatever the next RSC variant looks like.