Date Dec 03, 2025 10:00:00 AM

RSC: Render. Serialize. Compromise

RSC: Render. Serialize. Compromise is an insecure deserialization flaw in React Server Components. There is an unauthenticated remote code execution vulnerability in React Server Components. CVE-2025-55182 allows for Remote Code Execution (RCE) in React Server Functions, specifically as offered by frameworks like Next.js. The exploitation vector leverages insecure prototype references, allowing attackers to escape the sandbox and execute arbitrary code on the server.

RSC Vulnerability

Vulnerability Summary

If you’re running a modern React SSR or Next.js App Router with anything touching RSC, streaming, or Flight, treat this as an incident: patch immediately, verify what’s deployed, then audit exposure and logs. The most likely mass-exploitation path is the default, reachable Next.js applications that expose the RSC/Server Action surface area without teams realizing it.

The Difficulty of RSC: Render. Serialize. Compromise

What makes this vulnerability particularly nasty is its lack of forensic artifacts. React doesn’t log anything, and most people may have base HTTP logs from reverse proxies at best.

Attackers are currently cycling through the full menu of Node.js process execution primitives to see what sticks:

  • exec()
  • spawn()
  • execSync()
  • spawnSync()

Understanding RSC: Render. Serialize. Compromise

Discovered by Lachlan Davidson and disclosed to the React Team on November 29, 2025, CVE-2025-55182 is an unsafe deserialization vulnerability in React Server Components. The vulnerability was named RSC: Render. Serialize. Compromise by security researchers. React and Next.js are widely used frameworks for building modern digital experiences. The vulnerability resides in a part of these frameworks called React Server Components.

Key facts:

  • CVSS score: 10.0 (Maximum severity)
  • Attack vector: Unauthenticated remote code execution
  • Frameworks affected:
    • React Server components in Next.js 14.3.0-canary.77 and later canary releases and 15.x/16.x with App Router
    • React 19.x, including react-server-dom-parcel, react-server-dom-turbopack, react-server-dom-webpack
    • React Router (RSC mode)
    • Waku
    • Parcel RSC (@parcel/rsc)
    • Vite RSC (@vitejs/plugin-rsc)
    • RedwoodSDK (rwsdk)
  • A standard create-next-app production build is vulnerable without modifications. Default configurations are exploitable out of the box.
  • Fixed Next.js Versions: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7

Summary of Affected Versions

Vulnerable Components Vulnerable Versions Fixed Versions
react-server-dom-webpack 19.0.0, 19.1.0 – 19.1.1, 19.2.0 19.0.1, 19.1.2, 19.2.1
react-server-dom-parcel 19.0.0, 19.1.0 – 19.1.1, 19.2.0 19.0.1, 19.1.2, 19.2.1
react-server-dom-turbopack 19.0.0, 19.1.0 – 19.1.1, 19.2.0 19.0.1, 19.1.2, 19.2.1
Next.js 15.0.0–15.0.4, 15.1.0–15.1.8, 15.2.0–15.2.5, 15.3.0–15.3.5, 15.4.0–15.4.7, 15.5.0–15.5.6, 16.0.0–16.0.6 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7

Exploitation Timeline

  • November 29th: Lachlan Davidson reported the security vulnerability via Meta Bug Bounty.
  • November 30th: Meta security researchers confirmed and began working with the React team on a fix.
  • December 1st: A fix was created, and the React team began working with affected hosting providers and open source projects.
  • December 3rd: The fix was published to npm and publicly disclosed as CVE-2025-55182. Attacks began shortly after.
  • December 4th: First exploitation activity observed. AWS honeypots observed near-real-time scans.
  • December 5th: Infrastructure linked to Earth Lamia and Jackpot Panda confirmed to be repurposing for attacks.

React Server Components (RSC)

Before dissecting the exploit chain, we need to understand the architecture that makes this possible.

Understanding React Server Components and the Flight Protocol

React Server Components is a feature introduced in React 19 that allows components to be rendered on the server. The communication between the server and client relies on a protocol called React Flight. This protocol handles the serialisation and deserialisation of data using specific type markers (e.g., $@ for chunk reference, $B for Blob reference).

The Core Vulnerability: Unsafe Deserialization

The vulnerability exists in the requireModule function within the react-server-dom-webpack package. The critical flaw is in the bracket notation access moduleExports[metadata[2]]. An attacker can reference properties that weren’t explicitly exported by the module, such as constructor to access the global Function constructor.

The Exploitation Chain

The exploit begins by sending a multipart form request with a prepared payload containing a malicious chunk object. This object mimics React’s internal Chunk class structure and abuses the then property to create a self-referential structure. It also uses a $B Blob reference to trigger execution of code via the Function constructor.

process.mainModule.require('child_process').execSync('xcalc');

This payload demonstrates RCE by launching a calculator. Real attacks could establish reverse shells or exfiltrate secrets.

Mitigation Actions

  • Upgrade to the Latest Patched Version: Install the appropriate fixed version for your release line (e.g., Next.js 15.0.5, 15.1.9, etc.).
  • Required Downgrade for Vulnerable Canary Builds: If using Next.js 14.3.0-canary.77+, downgrade to stable 14.x.
  • Scan your infrastructure: Run automated scanners (SCA / static analyzers).
  • Deploy runtime detections: Use tools like Falco or Sysdig Secure.
  • Enable WAF protections: Cloudflare, Google Cloud Armor, and others have deployed rules.

Request a Demo : Zisoft's Awareness Training

Ready to revolutionize your cybersecurity awareness program?
Discover how ZiSoft can empower your team with personalized, adaptive, and culturally aligned training.
Request your personalized demo today

https://ZINAD.net/support-page.html