React2Shell Explained: Understanding CVE-2025-55182 & CVE-2025-66478 in React Server Components

React2Shell Explained: Understanding CVE-2025-55182 & CVE-2025-66478 in React Server Components

December 10, 2025 9 min read

A clear, accurate, and developer-friendly deep dive into the React2Shell vulnerability (CVE-2025-55182 / CVE-2025-66478), how it works, what is confirmed, what remains theoretical, and how teams can mitigate risk safely.




Disclaimer

This article is for educational and defensive purposes only. It explains a publicly disclosed vulnerability to help teams understand, assess, and mitigate risk. No executable exploit details or harmful instructions are included.


Introduction

On December 3, 2025, the React team published a coordinated security advisory addressing a critical vulnerability in React Server Components (RSC). The issue, cataloged as CVE-2025-55182, affects several packages used in React-powered server environments. Around the same time, the Next.js ecosystem published a related advisory (CVE-2025-66478), which industry tracking later classified as a duplicate of the React CVE.

This vulnerability quickly gained the informal name React2Shell, a label popularized by security researchers to describe its potential impact. At its core, the issue stems from unsafe deserialization of RSC payloads - a condition in which specially crafted data might cause React to interpret untrusted content as structured server metadata.

While much discussion online leaned toward dramatic terminology, official sources remain careful and measured. Many advisories emphasize potential for remote code execution (RCE) under specific conditions, yet also note that misleading or invalid proofs-of-concept were circulating, and that confirmed successful exploitation had not been broadly documented during the early advisory window.

This article walks through what is confirmed, what is not fully confirmed, and what engineering teams should do to secure their applications - all without speculation.


Understanding the Vulnerability

React Server Components (RSC) rely on a serialized protocol sometimes referred to informally as the “RSC Flight protocol.” It allows the server to send structured information to the client in a controlled format. This mechanism is powerful, but it also means that the server must deserialize structured data carefully.

The React advisory identifies that certain affected packages:

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack

performed unsafe deserialization under certain conditions.

Unsafe deserialization vulnerabilities occur when data supplied to a server is processed as though it were trusted internal metadata. When this happens, an attacker may be able to craft input that influences server behavior in unexpected ways.

What official advisories confirm

  • The vulnerability allows potential arbitrary code execution in affected versions.
  • The attack surface is unauthenticated, meaning a publicly reachable endpoint that processes RSC payloads could be at risk.
  • The vulnerability is rated CVSS 10.0, the highest severity level.
  • React released patched versions the same day: 19.0.1, 19.1.2, 19.2.1.

What is not confirmed

  • There is no verified public disclosure of attackers successfully reaching internal modules or performing specific environment-secret extraction via this vulnerability.
  • There is no confirmed case of supply-chain modification or persistent build tampering linked to React2Shell.
  • Several security vendors emphasize that early PoCs were fake or oversimplified, highlighting confusion in the community.

What is widely reported and aligned

Multiple independent vendors (cloud providers, SIEM vendors, research groups) report:

  • Exploit attempts and scanning activity appeared shortly after disclosure.
  • Attack patterns focusing on structured RSC payloads were observed.
  • Organizations are urged to patch immediately and consider this a high-risk issue due to how widespread RSC usage is.

The vulnerability should therefore be taken seriously - but represented accurately.

Diagram illustrating the communication flow and serialization boundaries of React Server Components, highlighting potential points for unsafe deserialization.


Why React Server Components became the focal point

RSC enables React apps to offload work to the server while shipping minimal JavaScript to the client. To do this, frameworks exchange structured metadata describing:

  • Components
  • Props
  • Bound server functions
  • Streaming updates

This metadata is serialized and deserialized frequently. Any weakness in this boundary becomes high-impact.

React2Shell illustrates this structural reality: serialization layers must treat all untrusted input as untrusted, even when dealing with internal component references.


How unsafe deserialization fits into the picture

Below is a safe, non-exploit illustration of what an RSC metadata token might look like:

{
  "type": "$RSC",
  "payload": {
    "kind": "component",
    "id": "some-server-marker"
  }
}
JSON

The vulnerability existed because certain RSC server-side handlers:

  • Did not sufficiently validate that incoming structured data was trustworthy.
  • Accepted, under some conditions, deserialization patterns that could cause internal logic to process attacker-controlled content.

This type of issue is conceptually similar to many deserialization vulnerabilities across programming ecosystems.

Why unsafe deserialization is dangerous

When a server interprets structured data without enforcing strict validation, an attacker may be able to:

  • Influence code paths
  • Trigger unintended functions
  • Cause internal misrouting of metadata
  • Possibly reach a state where arbitrary code execution becomes feasible

This explains why the CVE was scored so high, even without confirmed exploitation.


Affected Versions and Patch Guidance

According to the React advisory:

Affected React packages

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack

Vulnerable versions include:

  • 19.0.0
  • 19.1.0
  • 19.1.1
  • 19.2.0

Patched versions:

  • 19.0.1
  • 19.1.2
  • 19.2.1

Official guidance recommends:

Upgrade immediately to the nearest patched version.

What about Next.js?

Next.js published its own CVE (CVE-2025-66478), which industry trackers now treat as a duplicate of CVE-2025-55182. The vulnerability ultimately originates in the React RSC packages, not in Next.js itself.

Next.js users should:

  • Ensure they run a patched React version.
  • Redeploy applications so that patched packages take effect.
  • Verify serverless/edge runtimes also refreshed cached layers.

How exploitation might occur (high-level, theoretical only)

To maintain AdSense safety and avoid providing harmful guidance, the following explanation describes only the conceptual direction of exploitation - not a payload, not a technique, and not actionable details.

A possible exploitation sequence could look like this:

  1. An attacker identifies an endpoint that accepts or passes through structured RSC data.
  2. The attacker supplies specially shaped data that resembles internal metadata.
  3. An affected server interprets this data during deserialization.
  4. Under vulnerable versions, this may lead to unsafe behavior.
  5. Arbitrary code execution becomes theoretically possible.

This is similar to how many major deserialization vulnerabilities behave across languages - it is not unique to React.

What is confirmed

  • Arbitrary code execution is a documented possible outcome under vulnerable versions.

What is not confirmed

  • There is no public, validated evidence of real-world attackers achieving RCE in major production deployments using this vulnerability as of this writing.
  • Claims about internal module abuse, environment secret extraction, or persistent build modification remain theoretical risks, not confirmed events.

Maintaining a clear boundary between “possible” and “confirmed” is critical for credibility and safety.

A high-level conceptual graphic showing the journey of malformed structured data reaching a server, designed for educational purposes.


Risk Context: Why This Matters Even Without Confirmed Breaches

Organizations treat this as an urgent security event because:

  • React Server Components are widely deployed.
  • Many production servers process RSC payloads by default.
  • The vulnerability is triggered pre-authentication.
  • A CVSS 10.0 score indicates worst-case potential impact.

In incident response, “no confirmed breaches yet” does not reduce the priority of remediation when official assessments show that unsafe deserialization may enable RCE.

An impact diagram illustrating the severity levels, potential risk areas, and the broad ecosystem reach of the vulnerability in React applications.


Safe Example: Recognizing Metadata-Like Payloads

Below is a safe, sanitized, educational example of content that resembles structured metadata a server may need to validate.

{
  "kind": "metadata",
  "data": {
    "ref": "component-marker",
    "props": {}
  }
}
JSON

This is not reflective of any exploit; it simply illustrates the shape of content that a framework might parse.

The key lesson is:

Any input that is structured, nested, or serialized should be validated as if it came from an untrusted source.


How Organizations Should Mitigate Risk

Below are general-purpose defensive measures aligned with React's advisory and common industry practice.

1. Patch immediately

This is the only definitive mitigation. Any system running vulnerable RSC packages should upgrade to:

  • 19.0.1, 19.1.2, or 19.2.1

2. Redeploy and clear stale layers

Some environments cache Node layers or serverless runtimes. A redeploy ensures patched packages propagate.

3. Validate serialization boundaries

Even after patching:

  • Treat all data inputs as untrusted.
  • Enforce strict schema validation.
  • Avoid automatic deserialization unless the format is validated.

Serialization boundaries are one of the most common root causes of high-severity vulnerabilities.

4. Review logging around RSC endpoints

Look for:

  • Unexpected shapes in request bodies
  • Large or deeply nested objects
  • Requests during the patch-window related to RSC paths

5. Harden CI/CD pipelines (precautionary)

While there are no confirmed reports of supply-chain intrusion, CI hardening is widely recommended in any deserialization incident.

Measures include:

  • Using ephemeral build agents
  • Verifying checksums
  • Minimizing privileges during builds
  • Enforcing dependency auditing

These steps help reduce the blast radius of any future serialization-related issue.


What This Teaches About Secure Application Design

React2Shell reminds us of a broader engineering truth:

Whenever systems deserialize structured data, they must enforce trust boundaries explicitly.

Lessons organizations can apply anywhere

  • Never assume serialized metadata is safe.
  • Always validate object shapes and fields.
  • Explicit allowlists are safer than deny-lists.
  • Auto-resolving identifiers should be tightly restricted.
  • Framework convenience features must be paired with security review.

Serialization issues recur across:

  • Java
  • Python
  • Node.js
  • PHP
  • Ruby
  • Cloud function runtimes

React2Shell is another example of why serialization boundaries require deep attention.

An illustration outlining best practices for secure serialization, including validation checkpoints and defining trust boundaries in a modern web application.


Table: Confirmed Facts vs Theoretical Risks

Topic Confirmed by official advisories Theoretical / Risk-based (not confirmed)
Vulnerability enables potential RCE ✔ Yes -
CVSS 10.0 severity ✔ Yes -
Unsafe deserialization root cause ✔ Yes -
Exploit attempts observed (scanning) ✔ Yes (multiple vendors) -
Successful real-world RCE events ❌ Not confirmed ⚠ Possible in theory
Supply-chain modification via this flaw ❌ Not confirmed ⚠ Discussed as theoretical risk
Internal module or secret extraction ❌ Not confirmed ⚠ Theoretical worst-case scenario

This separation maintains accuracy while still conveying legitimate security stakes.


Final Thoughts

CVE-2025-55182 (React2Shell) will be remembered as one of the most significant JavaScript-ecosystem vulnerabilities of its year. Not because of confirmed large-scale exploitation, but because of how broadly the affected code is deployed and how deeply it touches the serialization model powering modern server-driven React applications.

Advisories from the React team, Next.js maintainers, cloud vendors, and multiple security research groups reach the same fundamental conclusion:

  • Patch immediately
  • Validate untrusted input
  • Review your serialization boundaries
  • Strengthen CI/CD integrity

Strong engineering hygiene - and quick adoption of patched versions - ensures systems remain safe not only from this vulnerability, but from future serialization issues as well.


References

  • React Security Advisory - CVE-2025-55182 (Dec 3, 2025)
  • Carnegie Mellon CERT Notes on CVE-2025-55182
  • Unit 42 Sector Analysis
  • Radware Statement Regarding Misleading PoCs
  • Next.js Advisory (CVE-2025-66478)
  • Multiple cloud provider threat-intelligence notices

Join the Security Intel.

Get weekly VAPT techniques, ethical hacking tools, and zero-day analysis delivered to your inbox.

Weekly Updates No Spam
Herish Chaniyara

Herish Chaniyara

Web Application Penetration Tester (VAPT) & Security Researcher. A Gold Microsoft Student Ambassador and PortSwigger Hall of Fame (#59) member dedicated to securing the web.

Read Next

View all posts
Why I’m Starting to Write Blogs: My Journey in Cybersecurity and Beyond
August 28, 2025
Why I’m Starting to Write Blogs: My Journey in Cybersecurity and Beyond
Lab Writeup: PortSwigger – 0.CL Request Smuggling
September 9, 2025
Lab Writeup: PortSwigger – 0.CL Request Smuggling
Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
September 23, 2025
Lab: SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
The Ultimate Guide to SQL Injection (SQLi): Types & Prevention
October 5, 2025
The Ultimate Guide to SQL Injection (SQLi): Types & Prevention
Lab: SQL injection vulnerability allowing login bypass
October 6, 2025
Lab: SQL injection vulnerability allowing login bypass
Lab: SQL injection UNION attack - determining number of columns returned by the query
October 7, 2025
Lab: SQL injection UNION attack - determining number of columns returned by the query
Lab: SQL injection UNION attack - finding a column containing text
October 8, 2025
Lab: SQL injection UNION attack - finding a column containing text
Lab: SQL injection UNION attack - retrieving data from other tables
October 9, 2025
Lab: SQL injection UNION attack - retrieving data from other tables
Lab: SQL injection UNION attack - retrieving multiple values in a single column
October 10, 2025
Lab: SQL injection UNION attack - retrieving multiple values in a single column
Lab: SQL injection attack - querying the database type and version on MySQL and Microsoft
October 11, 2025
Lab: SQL injection attack - querying the database type and version on MySQL and Microsoft
Lab: SQL injection attack - listing the database contents on non-Oracle databases
October 12, 2025
Lab: SQL injection attack - listing the database contents on non-Oracle databases
Lab: Blind SQL injection with conditional responses
October 13, 2025
Lab: Blind SQL injection with conditional responses
Lab: Blind SQL injection with conditional errors
October 14, 2025
Lab: Blind SQL injection with conditional errors
Lab: Visible error-based SQL injection
October 15, 2025
Lab: Visible error-based SQL injection
Lab: Blind SQL injection with time delays and information retrieval
October 16, 2025
Lab: Blind SQL injection with time delays and information retrieval
Lab: Blind SQL injection with out-of-band interaction
October 17, 2025
Lab: Blind SQL injection with out-of-band interaction
Lab: Blind SQL injection with out-of-band data exfiltration
October 18, 2025
Lab: Blind SQL injection with out-of-band data exfiltration
Lab: SQL injection with filter bypass via XML encoding
October 19, 2025
Lab: SQL injection with filter bypass via XML encoding
Lab: SQL injection attack, querying the database type and version on Oracle
October 20, 2025
Lab: SQL injection attack, querying the database type and version on Oracle
Lab: SQL injection attack, listing the database contents on Oracle
October 21, 2025
Lab: SQL injection attack, listing the database contents on Oracle
Lab: Blind SQL injection with time delays
October 22, 2025
Lab: Blind SQL injection with time delays
The $500 Stored XSS Bug in SideFX's Messaging System - Hacking the Inbox
October 23, 2025
The $500 Stored XSS Bug in SideFX's Messaging System - Hacking the Inbox
Hunting IDOR Vulnerabilities with Burp Suite: A $1,000 Bug Bounty Case Study
October 24, 2025
Hunting IDOR Vulnerabilities with Burp Suite: A $1,000 Bug Bounty Case Study
$500 Broken Access Control Bug: Unauthorized Removal of Private Pension Schemes
October 25, 2025
$500 Broken Access Control Bug: Unauthorized Removal of Private Pension Schemes
0-Click Account Takeover via Punycode: How IDNs and String Normalization Break Authentication
October 26, 2025
0-Click Account Takeover via Punycode: How IDNs and String Normalization Break Authentication
Finding a $100 Race Condition: How Two Simultaneous Sign-Ups Broke Email Uniqueness
October 27, 2025
Finding a $100 Race Condition: How Two Simultaneous Sign-Ups Broke Email Uniqueness
How To Earn $1K+/Month Finding Information Disclosure - A Practical, Ethical Playbook
October 28, 2025
How To Earn $1K+/Month Finding Information Disclosure - A Practical, Ethical Playbook
Finding Hope (and $250) in a Forgotten Field: A Beginner Guide to Stored XSS Success
October 29, 2025
Finding Hope (and $250) in a Forgotten Field: A Beginner Guide to Stored XSS Success
Easy $130 Bounty: From User to Admin - The Hidden Power of Role Parameter Injection
October 30, 2025
Easy $130 Bounty: From User to Admin - The Hidden Power of Role Parameter Injection
Can AI Defend Us Against Hackers? A Pentester Reality Check
October 31, 2025
Can AI Defend Us Against Hackers? A Pentester Reality Check
$500 OTP Bypass: The Duplicate That Taught a Bigger Lesson
November 1, 2025
$500 OTP Bypass: The Duplicate That Taught a Bigger Lesson
$1,000 Bounty for a 403 Bypass: Lessons from a Subtle but Powerful Discovery
November 2, 2025
$1,000 Bounty for a 403 Bypass: Lessons from a Subtle but Powerful Discovery
How Hacker an LFI into a $5,000 Payday (And How You Can Too)
November 3, 2025
How Hacker an LFI into a $5,000 Payday (And How You Can Too)
How a Researcher Found a Critical Password Reset Bug (and Earned $4,000)
November 4, 2025
How a Researcher Found a Critical Password Reset Bug (and Earned $4,000)
The Accidental Admin: How a Null Role Parameter Exposed an Entire Company
November 5, 2025
The Accidental Admin: How a Null Role Parameter Exposed an Entire Company
How a Simple URL Parameter Made Products Free - The $2,000 Logic Flaw That Broke an E-Commerce Site
November 6, 2025
How a Simple URL Parameter Made Products Free - The $2,000 Logic Flaw That Broke an E-Commerce Site
Outsmarting the Firewall: XSS in URLs Explained (Educational Purpose Only)
November 7, 2025
Outsmarting the Firewall: XSS in URLs Explained (Educational Purpose Only)
Forgot Password → Forgot Validation: a broken reset flow that enabled account takeover (researcher case study)
November 8, 2025
Forgot Password → Forgot Validation: a broken reset flow that enabled account takeover (researcher case study)
Burp MCP DNS Rebinding: local APIs as a remote SSRF vector (researcher case study)
November 9, 2025
Burp MCP DNS Rebinding: local APIs as a remote SSRF vector (researcher case study)
Unsafe eval() and DOM XSS: How a Single Line of JavaScript Can Compromise Everything
November 10, 2025
Unsafe eval() and DOM XSS: How a Single Line of JavaScript Can Compromise Everything
How Changing a Single Number Exposed an Entire User Database (An IDOR Story)
November 11, 2025
How Changing a Single Number Exposed an Entire User Database (An IDOR Story)
How I Stole an AI’s Brain (Legally) - Model Extraction & Membership Inference Attacks Explained
November 12, 2025
How I Stole an AI’s Brain (Legally) - Model Extraction & Membership Inference Attacks Explained
Access Control Apocalypse: When Broken Permissions Give Master Keys
November 13, 2025
Access Control Apocalypse: When Broken Permissions Give Master Keys
Neural Network Nightmare: Finding Privacy Leaks in Image Recognition APIs
November 14, 2025
Neural Network Nightmare: Finding Privacy Leaks in Image Recognition APIs
Prompt Injection Pandemonium: Exploiting AI Assistants via Malicious Input
November 15, 2025
Prompt Injection Pandemonium: Exploiting AI Assistants via Malicious Input
The AI Eavesdropper: How Voice Assistants Were Secretly Recording Conversations
November 16, 2025
The AI Eavesdropper: How Voice Assistants Were Secretly Recording Conversations
From 403 to Fortune: How an Access Control Bypass Turned a 403 into Admin Access
November 17, 2025
From 403 to Fortune: How an Access Control Bypass Turned a 403 into Admin Access
How Security Researcher Turned a Low-Privilege Agent Into an Admin With a Single Request: The Token Forgery Access Control Breakdown
November 18, 2025
How Security Researcher Turned a Low-Privilege Agent Into an Admin With a Single Request: The Token Forgery Access Control Breakdown
Azure Speech API Key Exposure in a Major Payment Company: A Deep Defensive Breakdown
November 19, 2025
Azure Speech API Key Exposure in a Major Payment Company: A Deep Defensive Breakdown
How Security Researcher Found a DOM XSS Inside NASA’s Systems
November 20, 2025
How Security Researcher Found a DOM XSS Inside NASA’s Systems
SSRF in GitLab Import-URL Feature Enabling Internal Network Probing
November 21, 2025
SSRF in GitLab Import-URL Feature Enabling Internal Network Probing
Critical Auth Bypass in Government App via Hardcoded OTP Logic
November 22, 2025
Critical Auth Bypass in Government App via Hardcoded OTP Logic
Stripe Subscription Escalation: How Default Behavior Enables Free Plan Upgrades
November 23, 2025
Stripe Subscription Escalation: How Default Behavior Enables Free Plan Upgrades
Cache Poisoning Case Studies Part 1: Foundational Attacks Behind a $100K+ Vulnerability Class
November 24, 2025
Cache Poisoning Case Studies Part 1: Foundational Attacks Behind a $100K+ Vulnerability Class
Cache Poisoning Case Studies Part 2: Multi-Bug Chains, Cloud Weaknesses & Framework-Level Exploits
November 25, 2025
Cache Poisoning Case Studies Part 2: Multi-Bug Chains, Cloud Weaknesses & Framework-Level Exploits
Cache Poisoning Case Studies Part 3: OAuth Hijacking, API Gateway Abuse & Supply-Chain Poisoning
November 26, 2025
Cache Poisoning Case Studies Part 3: OAuth Hijacking, API Gateway Abuse & Supply-Chain Poisoning
Meta Spark AR RCE: Package Postinstall Remote Code Execution
November 27, 2025
Meta Spark AR RCE: Package Postinstall Remote Code Execution
IDOR Exposure of 6.4 Million Users: A Real-World Breakdown of a Critical Authorization Failure
November 28, 2025
IDOR Exposure of 6.4 Million Users: A Real-World Breakdown of a Critical Authorization Failure
Cloudflare Bypass via Exposed Origin IP: A Deep Dive Into Smit Gharat’s Discovery
November 29, 2025
Cloudflare Bypass via Exposed Origin IP: A Deep Dive Into Smit Gharat’s Discovery
Reflected XSS to Account Takeover: A Deep Dive Into a Real-World Attack Chain
November 30, 2025
Reflected XSS to Account Takeover: A Deep Dive Into a Real-World Attack Chain
400 Bad Request that earned $$$ - Document-name disclosure via IDOR
December 1, 2025
400 Bad Request that earned $$$ - Document-name disclosure via IDOR
Modern Recon: How AI Amplifies Vulnerability Hunting
December 2, 2025
Modern Recon: How AI Amplifies Vulnerability Hunting
OAuth Authentication Bypass Leading to Massive PII Exposure: A Deep Technical Analysis
December 3, 2025
OAuth Authentication Bypass Leading to Massive PII Exposure: A Deep Technical Analysis
SSRF in ChatGPT Custom Actions Exposing Azure Metadata
December 4, 2025
SSRF in ChatGPT Custom Actions Exposing Azure Metadata
When the Program Wins and the Researcher Loses: Understanding Silent Failures in Modern Bug Bounties
December 5, 2025
When the Program Wins and the Researcher Loses: Understanding Silent Failures in Modern Bug Bounties
Identity Hijacking via Faulty Email Schema Validation: A Deep Dive into a Business Logic Flaw
December 6, 2025
Identity Hijacking via Faulty Email Schema Validation: A Deep Dive into a Business Logic Flaw
Silent Disclosure: How a Simple 401 Error Exposed Critical Credentials
December 7, 2025
Silent Disclosure: How a Simple 401 Error Exposed Critical Credentials
Cracking the Storage Shell: How Misconfigurations Exposed an Azure Blob Flag
December 8, 2025
Cracking the Storage Shell: How Misconfigurations Exposed an Azure Blob Flag
CTF Write-up: SQL Truncation Attack and Account Duplication
December 9, 2025
CTF Write-up: SQL Truncation Attack and Account Duplication

For any queries or professional discussions: herish.chaniyara@gmail.com