{"id":24982,"date":"2025-12-04T14:12:46","date_gmt":"2025-12-04T19:12:46","guid":{"rendered":"https:\/\/me-en.kaspersky.com\/blog\/react4shell-vulnerability-cve-2025-55182\/24982\/"},"modified":"2025-12-05T14:45:14","modified_gmt":"2025-12-05T10:45:14","slug":"react4shell-vulnerability-cve-2025-55182","status":"publish","type":"post","link":"https:\/\/me-en.kaspersky.com\/blog\/react4shell-vulnerability-cve-2025-55182\/24982\/","title":{"rendered":"React4Shell vulnerability: protecting web servers from CVE-2025-55182"},"content":{"rendered":"<p>On December 3, the coordinated <a href=\"https:\/\/react.dev\/blog\/2025\/12\/03\/critical-security-vulnerability-in-react-server-components\" target=\"_blank\" rel=\"noopener nofollow\">elimination of the critical vulnerability<\/a> CVE-2025-55182 (CVSSv3 \u2014 10) became known. It was found in React server components (RSC), as well as in a number of derivative projects and frameworks: Next.js, React Router RSC preview, Redwood SDK, Waku, and RSC plugins Vite and Parcel. The vulnerability allows any unauthenticated attacker to send a request to a vulnerable server and execute arbitrary code. Considering that tens of millions of websites, including Airbnb and Netflix, are built on React and Next.js, and vulnerable versions of the components were found in approximately <a href=\"https:\/\/www.wiz.io\/blog\/critical-vulnerability-in-react-cve-2025-55182\" target=\"_blank\" rel=\"noopener nofollow\">39% of cloud infrastructures<\/a>, the scale of exploitation could be very serious. Measures to protect your online services must be taken immediately.<\/p>\n<p>A separate <a href=\"https:\/\/www.cve.org\/CVERecord?id=CVE-2025-66478\" target=\"_blank\" rel=\"noopener nofollow\">CVE-2025-66478<\/a> was initially created for the Next.js vulnerability, but it was deemed a duplicate, so the Next.js defect also falls under <a href=\"https:\/\/www.cve.org\/CVERecord?id=CVE-2025-55182\" target=\"_blank\" rel=\"noopener nofollow\">CVE-2025-55182<\/a>.<\/p>\n<h2>Where and how does the React4Shell vulnerability work?<\/h2>\n<p>React is a popular JavaScript library for creating user interfaces for web applications. Thanks to RSC components, which appeared in React 18 in 2020, part of the work of assembling a web page is performed not in the browser, but on the server. The web page code can call React functions that will run on the server, get the execution result from them, and insert it into the web page. This allows some websites to run faster \u2014 the browser doesn\u2019t need to load unnecessary code. RSC divides the application into server and client components, where the former can perform server operations (database queries, access to secrets, complex calculations), while the latter remains interactive on the user\u2019s machine. A special lightweight HTTP-based protocol called Flight is used for fast streaming of serialized information between the client and server.<\/p>\n<p>CVE-2025-55182 lies in the processing of Flight requests, or to be more precise \u2014 in the unsafe deserialization of data streams. React Server Components versions 19.0.0, 19.1.0, 19.1.1, 19.2.0 \u2014 or, more specifically, the react-server-dom-parcel, react-server-dom-turbopack, and react-server-dom-webpack packages \u2014 are vulnerable. Vulnerable versions of Next.js are: 15.0.4, 15.1.8, 15.2.5, 15.3.5, 15.4.7, 15.5.6, and 16.0.6.<\/p>\n<p>To exploit the vulnerability, an attacker can send a simple HTTP request to the server, and even before authentication and any checks, this request can initiate the launch of a process on the server with React privileges.<\/p>\n<p>There\u2019s no data on the exploitation of CVE-2025-55182 in the wild yet, but experts agree that it\u2019s possible, and will most likely be large-scale. Wiz <a href=\"https:\/\/www.wiz.io\/blog\/critical-vulnerability-in-react-cve-2025-55182\" target=\"_blank\" rel=\"noopener nofollow\">claims that<\/a> its test RCE exploit works with almost 100% reliability. A prototype of the exploit is already available on GitHub, so it won\u2019t be difficult for attackers to adopt it and launch mass attacks.<\/p>\n<p>React was originally designed to create client-side code that runs in a browser; server-side components containing vulnerabilities are relatively new. Many projects built on older versions of React, or projects where React server-side components are disabled, are not affected by this vulnerability.<\/p>\n<p>However, if a project doesn\u2019t use server-side functions, this doesn\u2019t mean it\u2019s protected \u2014 RSCs may still be active. Websites and services built on recent versions of React with default settings (for example, an application on Next.js built using create-next-app) will be vulnerable.<\/p>\n<h2>Protective measures against exploitation of CVE-2025-55182<\/h2>\n<p><strong>Updates. <\/strong>React users should update to the versions 19.0.1, 19.1.2 or 19.2.1. Next.js users should update to versions 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, or 16.0.7. Detailed instructions for updating the react-server component for React Router, Expo, Redwood SDK, Waku, and other projects <a href=\"https:\/\/react.dev\/blog\/2025\/12\/03\/critical-security-vulnerability-in-react-server-components\" target=\"_blank\" rel=\"noopener nofollow\">are provided in the React blog<\/a>.<\/p>\n<p><strong>Cloud provider protection. <\/strong>Major providers have released rules for their application-level web filters (WAF) to prevent exploitation of vulnerabilities:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.akamai.com\/blog\/security-research\/cve-2025-55182-react-nextjs-server-functions-deserialization-rce\" target=\"_blank\" rel=\"noopener nofollow\">Akamai<\/a> (rules for App &amp; API Protector users);<\/li>\n<li><a href=\"https:\/\/aws.amazon.com\/security\/security-bulletins\/rss\/aws-2025-030\/\" target=\"_blank\" rel=\"noopener nofollow\">AWS<\/a> (AWS WAF rules are included in the standard set, but require manual activation);<\/li>\n<li><a href=\"https:\/\/blog.cloudflare.com\/waf-rules-react-vulnerability\/\" target=\"_blank\" rel=\"noopener nofollow\">Cloudflare<\/a> (protects all customers, including those on the free plan. Works if traffic to the React application is proxied through Cloudflare WAF. Customers on professional or enterprise plans should <a href=\"https:\/\/developers.cloudflare.com\/waf\/get-started\/#1-deploy-the-cloudflare-managed-ruleset\" target=\"_blank\" rel=\"noopener nofollow\">verify that the rule is active<\/a>);<\/li>\n<li><a href=\"https:\/\/cloud.google.com\/blog\/products\/identity-security\/responding-to-cve-2025-55182\/\" target=\"_blank\" rel=\"noopener nofollow\">Google Cloud<\/a> (Cloud Armor rules for Firebase Hosting and Firebase App Hosting are applied automatically);<\/li>\n<li><a href=\"https:\/\/vercel.com\/changelog\/cve-2025-55182\" target=\"_blank\" rel=\"noopener nofollow\">Vercel<\/a> (rules are applied automatically).<\/li>\n<\/ul>\n<p>However, all providers emphasize that WAF protection only buys time for scheduled patching, and RSC components still need to be updated on all projects.<\/p>\n<p><strong>Protecting web services on your own servers. <\/strong>The least invasive solution would be to apply detection rules that prevent exploitation to your WAF or firewall. Most vendors have already released the necessary rule sets, but you can also prepare them yourself \u2014 for example, based on <a href=\"https:\/\/securelist.ru\/cve-2025-55182\/114176\/\" target=\"_blank\" rel=\"noopener\">our list of dangerous POST requests<\/a>.<\/p>\n<p>If granular analysis and filtering of web traffic isn\u2019t possible in your environment, identify all servers on which RSC (server function endpoints) are available, and significantly restrict access to them. For internal services, you can block requests from all untrusted IP ranges; for public services, you can strengthen IP reputation filtering and rate limiting.<\/p>\n<p>An additional layer of protection will be provided by an <a href=\"https:\/\/me-en.kaspersky.com\/next?icid=me-en_kdailyplacehold_acq_ona_smm__onl_b2b_kdaily_wpplaceholder_sm-team___knext____655fe72318f39647\" target=\"_blank\" rel=\"noopener\">EPP\/EDR agent<\/a> on servers with RSC. It will help detect anomalies in react-server behavior after the vulnerability has been exploited, and prevent the attack from developing.<\/p>\n<p><strong>In-depth investigation<\/strong>. Although information about exploitation of the vulnerability in the wild hasn\u2019t been confirmed yet, it cannot be ruled out that it\u2019s already happening. It\u2019s recommended to study the logs of network traffic and cloud environments, and if suspicious requests are detected, to carry out a full response \u2014 including the rotation of keys and other secrets available on the server. Signs of post-exploitation activity to look for first: reconnaissance of the server environment, searches for secrets (.env, CI\/CD tokens, etc.), and installation <a href=\"https:\/\/encyclopedia.kaspersky.ru\/glossary\/web-shell\/\" target=\"_blank\" rel=\"noopener\">of web shells<\/a>.<\/p>\n<input type=\"hidden\" class=\"category_for_banner\" value=\"kaspersky-next\">\n","protected":false},"excerpt":{"rendered":"<p>Millions of websites based on React and Next.js contain an easy-to-exploit vulnerability that can lead to complete server takeover. How to check if your server is vulnerable, and protect corporate web assets?<\/p>\n","protected":false},"author":2706,"featured_media":24983,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1318,1916,1917],"tags":[2088,2864,97,321,521,268],"class_list":{"0":"post-24982","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-business","8":"category-enterprise","9":"category-smb","10":"tag-tips","11":"tag-ngfw","12":"tag-security-2","13":"tag-technology","14":"tag-threats","15":"tag-vulnerabilities"},"hreflang":[{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/react4shell-vulnerability-cve-2025-55182\/24982\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/react4shell-vulnerability-cve-2025-55182\/29914\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/react4shell-vulnerability-cve-2025-55182\/29788\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/react4shell-vulnerability-cve-2025-55182\/41002\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/react4shell-vulnerability-cve-2025-55182\/54915\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/react4shell-vulnerability-cve-2025-55182\/35711\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/react4shell-vulnerability-cve-2025-55182\/35339\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/me-en.kaspersky.com\/blog\/tag\/vulnerabilities\/","name":"vulnerabilities"},"_links":{"self":[{"href":"https:\/\/me-en.kaspersky.com\/blog\/wp-json\/wp\/v2\/posts\/24982","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/me-en.kaspersky.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/me-en.kaspersky.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/me-en.kaspersky.com\/blog\/wp-json\/wp\/v2\/users\/2706"}],"replies":[{"embeddable":true,"href":"https:\/\/me-en.kaspersky.com\/blog\/wp-json\/wp\/v2\/comments?post=24982"}],"version-history":[{"count":1,"href":"https:\/\/me-en.kaspersky.com\/blog\/wp-json\/wp\/v2\/posts\/24982\/revisions"}],"predecessor-version":[{"id":24984,"href":"https:\/\/me-en.kaspersky.com\/blog\/wp-json\/wp\/v2\/posts\/24982\/revisions\/24984"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/me-en.kaspersky.com\/blog\/wp-json\/wp\/v2\/media\/24983"}],"wp:attachment":[{"href":"https:\/\/me-en.kaspersky.com\/blog\/wp-json\/wp\/v2\/media?parent=24982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/me-en.kaspersky.com\/blog\/wp-json\/wp\/v2\/categories?post=24982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/me-en.kaspersky.com\/blog\/wp-json\/wp\/v2\/tags?post=24982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}