Tech Verse Logo
Enable dark mode
CRITICAL: The "React2Shell" Vulnerability (CVE-2025-55182)

CRITICAL: The "React2Shell" Vulnerability (CVE-2025-55182)

Md. Mostafijur RahmanMMd. Mostafijur Rahman

Md. Mostafijur Rahman

•2 min read

A critical vulnerability has been identified in the React Server Components (RSC) protocol. The issue is rated CVSS 10.0 and can allow remote code execution when processing attacker-controlled requests in unpatched environments.

This vulnerability originates in the upstream React implementation (CVE-2025-55182). This advisory (CVE-2025-66478) tracks the downstream impact on Next.js applications using the App Router.

Impact

The vulnerable RSC protocol allowed untrusted inputs to influence server-side execution behavior. Under specific conditions, an attacker could craft requests that trigger unintended server execution paths. This can result in remote code execution in unpatched environments.

All users should upgrade to a patched version immediately. See the required action section for specific instructions.

Affected Next.js Versions

Applications using React Server Components with the App Router are affected when running:

  • Next.js 15.x

  • Next.js 16.x

  • Next.js 14.3.0-canary.77 and later canary releases

Next.js 13.x, Next.js 14.x stable, Pages Router applications, and the Edge Runtime are not affected.

Fixed Versions

The vulnerability is fully resolved in the following patched Next.js releases:

  • 15.0.5

  • 15.1.9

  • 15.2.6

  • 15.3.6

  • 15.4.8

  • 15.5.7

  • 16.0.7

We also released patched canary releases for Next.js 15 and 16:

  • 15.6.0-canary.58 (for 15.x canary releases)

  • 16.1.0-canary.12 (for 16.x canary releases)

These versions include the hardened React Server Components implementation.

Required Action

All users should upgrade to the latest patched version in their release line:

Terminal

npm install next@15.0.5   # for 15.0.x
npm install next@15.1.9   # for 15.1.x
npm install next@15.2.6   # for 15.2.x
npm install next@15.3.6   # for 15.3.x
npm install next@15.4.8   # for 15.4.x
npm install next@15.5.7   # for 15.5.x
npm install next@16.0.7   # for 16.0.x
 
npm install next@15.6.0-canary.58   # for 15.x canary releases
npm install next@16.1.0-canary.12   # for 16.x canary releases

If you are on Next.js 14.3.0-canary.77 or a later canary release, downgrade to the latest stable 14.x release:

Terminal

npm install next@14

If you're currently using canary releases to enable PPR, you can update to 15.6.0-canary.58, which includes a fix for the vulnerability while continuing to support PPR. For other ways to patch older versions, see this discussion post.

Run npx fix-react2shell-next to launch an interactive tool which can check versions and perform deterministic version bumps per the recommended versions above. See the GitHub repository for full details.

Terminal

npx fix-react2shell-next

There is no workaround—upgrading to a patched version is required.

Rotating environment variables

Once you have patched your version and re-deployed your application, we recommend rotating all your application secrets. Learn about working with environment variables in the documentation here.

Md. Mostafijur RahmanMMd. Mostafijur Rahman

WRITTEN BY

Md. Mostafijur Rahman

    Latest Posts

    View All

    Isolating Server Components in React and Next Applications

    Isolating Server Components in React and Next Applications

    Securing Daemons with Systemd Dynamic Users

    Securing Daemons with Systemd Dynamic Users

    Strict Null Safety With Pydantic V2 Validators

    Strict Null Safety With Pydantic V2 Validators

    Diagnosing Async Python Event Loop Stalls

    Diagnosing Async Python Event Loop Stalls

    Synchronizing State Across Parallel Next.js Routes

    Synchronizing State Across Parallel Next.js Routes

    LLM API Circuit Breaker Pattern

    LLM API Circuit Breaker Pattern

    Fixing Next.js Server Action Timeout Errors

    Fixing Next.js Server Action Timeout Errors

    Resilient Polling Loops with React and AbortController

    Resilient Polling Loops with React and AbortController

    Preventing Laravel Queue Worker Memory Exhaustion

    Preventing Laravel Queue Worker Memory Exhaustion

    Controlling LLM Token Costs Through Smart Caching

    Controlling LLM Token Costs Through Smart Caching