React2Shell: how to determine if my website is vulnerable?

Viewed 28

React2Shell is a critical vulnerability, with a CVSS score of 10 out of 10, that allows remote code execution (RCE) without authentication. It affects web applications that use React Server Components and the Next.js framework.

Besides the name "React2Shell", this vulnerability is also known as:
CVE-2025-55182 for React.
CVE-2025-66478 for the Next.js framework

Now, if you are wondering if your web application is vulnerable to it, this article provides some methods to determine this:

Using the React2Shell Scanner

This simple method requires no login to the server that hosts the website. It uses React2Shell Scanner, a Python script that connects to a website, and determines whether it is vulnerable to React2Shell or not. While other similar tools and PoC exist, this one can be deemed reliable, as it follows the methodology thoroughly described on this page.

Prerequesite: a computer able to run Python code. The example usages below assume you are using Linux or a unix-based operating system.

Disclaimer: this method is for preventive and educational use only. Only use it on your own website to determine if it is vulnerable and needs to be patched.

  • Start by downloading or cloning the react2shell-scanner repo
  • Try starting the scanner.py script. If it fails due to missing dependencies, you can install them using the provided requirements.txt file:
pip install -r ./requirements.txt
  • Then, check your website using this command:
./scanner.py -u https://your.domain.ext
  • The result is provided as output, indicating either "[NOT VUNERABLE]" or "VULNERABLE"
    React2Shell.PNG

By reviewing the packages used by your web application

Here is a list of the vulnerable packages. If you use one of them, your application is likely to be vulnerable and you need to upgrade to the indicated fixed version:

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
Next.js 14.3.0-canary.77 and later canary versions Downgrade to the latest stable 14.x release by running npm install next@14
Other Frameworks Any framework/library that bundles the vulnerable React RSC implementation (e.g. Vite RSC plugin, Parcel RSC plugin, React Router RSC preview, RedwoodSDK, Waku)
0 Answers