{"id":31386,"date":"2025-12-04T21:06:48","date_gmt":"2025-12-04T21:06:48","guid":{"rendered":"https:\/\/gridinsoft.com\/blogs\/?p=31386"},"modified":"2025-12-04T21:06:48","modified_gmt":"2025-12-04T21:06:48","slug":"react2shell-cve-2025-55182-rce","status":"publish","type":"post","link":"https:\/\/gridinsoft.com\/blogs\/react2shell-cve-2025-55182-rce\/","title":{"rendered":"React2Shell: Hot December for React and Next.js as Critical 10.0 CVSS Vulnerability Hits RSC"},"content":{"rendered":"<p>CVE-2025-55182 dropped yesterday evening, and predictably, everyone&#8217;s losing their minds. Cloudflare rolling out emergency WAF rules, Unit 42 counting nearly a million vulnerable servers, Wiz reporting 40% of cloud infrastructure exposed \u2014 all the usual suspects chiming in. The vulnerability affects default configurations across multiple frameworks including Next.js, React Router, Waku, and others; exploitation is possible in any library that simply supports RSC. Unsafe deserialization of payloads, malicious request leads to RCE. Mass exploitation is inevitable, patch analysis is already underway right now, and half the web runs on React and its frameworks. In other words, it might be time to start applying patches.<\/p>\n<p>The name alone is catchy: <a href=\"https:\/\/react2shell.com\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">React2Shell<\/a>. But behind the marketing, there&#8217;s a genuinely nasty vulnerability earning its perfect 10.0 CVSS score. This isn&#8217;t some theoretical edge case requiring exotic configurations \u2014 it hits default setups, requires no authentication, and works over plain HTTP.<\/p>\n<p>The flaw lives in React Server Components&#8217; handling of serialized payloads. Specifically, unsafe deserialization in the React Flight protocol. An attacker crafts a malicious HTTP POST request to any Server Function endpoint, React deserializes it without proper validation, and boom \u2014 arbitrary JavaScript execution on the server with Node.js process privileges.<\/p>\n<p>The technical culprit is the <code>requireModule<\/code> function in the <code>react-server-dom-webpack<\/code> package. By weaponizing <code>vm.runInThisContext<\/code>, attackers can force React to execute malicious code supplied in the payload. <a href=\"https:\/\/www.upwind.io\/feed\/cve-2025-55182-react-rce-deep-dive\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Upwind&#8217;s deep dive<\/a> explains that while React itself doesn&#8217;t expose the vulnerable endpoint, Next.js absolutely does, turning theoretical vulnerability into real remote attack surface.<\/p>\n<h2>The Blast Radius<\/h2>\n<p>This affects React Server Components packages in versions 19.0, 19.1.0, 19.1.1, and 19.2.0:<\/p>\n<ul>\n<li><code>react-server-dom-webpack<\/code><\/li>\n<li><code>react-server-dom-parcel<\/code><\/li>\n<li><code>react-server-dom-turbopack<\/code><\/li>\n<\/ul>\n<p>Patches are available in versions 19.0.1, 19.1.2, and 19.2.1. Security researcher <a href=\"https:\/\/www.linkedin.com\/in\/lachlan-s-davidson\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Lachlan Davidson<\/a> from New Zealand discovered and reported the issue to Meta on November 29, 2025.<\/p>\n<p>For Next.js using App Router, the vulnerability is present in versions >=14.3.0-canary.77, >=15, and >=16. Patched versions are 16.0.7, 15.5.7, 15.4.8, 15.3.6, 15.2.6, 15.1.9, and 15.0.5. Initially assigned CVE-2025-66478, it was later rejected by NIST as a duplicate of CVE-2025-55182.<\/p>\n<p>But wait, there&#8217;s more. Any library bundling RSC is potentially vulnerable: Vite RSC plugin, Parcel RSC plugin, React Router RSC preview, RedwoodJS, Waku. The ecosystem damage extends far beyond just React and Next.js.<\/p>\n<p><a href=\"https:\/\/www.wiz.io\/blog\/critical-vulnerability-in-react-cve-2025-55182\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Wiz&#8217;s analysis<\/a> found 39% of cloud environments have instances vulnerable to this CVE. Palo Alto Networks Unit 42 identified over 968,000 servers running affected frameworks. That&#8217;s not vulnerable repositories or codebases \u2014 that&#8217;s actual servers exposed to the internet, ready to be exploited.<\/p>\n<p>Justin Moore from Unit 42 nailed it: &#8220;This is a master key exploit, succeeding not by crashing the system, but by abusing its trust in incoming data structures. The system executes the malicious payload with the same reliability as legitimate code because it operates exactly as intended, but on malicious input.&#8221;<\/p>\n<p>Translation: Your application isn&#8217;t broken. It&#8217;s doing exactly what it&#8217;s supposed to do. The problem is what you&#8217;re asking it to handle.<\/p>\n<h2>The Industry Scramble<\/h2>\n<p>Cloud providers and security vendors moved fast. <a href=\"https:\/\/blog.cloudflare.com\/waf-rules-react-vulnerability\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Cloudflare deployed WAF rules<\/a> protecting all customers (free and paid) as long as React traffic is proxied through their service. <a href=\"https:\/\/www.akamai.com\/blog\/security-research\/cve-2025-55182-react-nextjs-server-functions-deserialization-rce\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Akamai<\/a>, <a href=\"https:\/\/aws.amazon.com\/security\/security-bulletins\/rss\/aws-2025-030\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">AWS<\/a>, <a href=\"https:\/\/www.fastly.com\/blog\/fastlys-proactive-protection-critical-react-rce-cve-2025-55182\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Fastly<\/a>, and <a href=\"https:\/\/cloud.google.com\/blog\/products\/identity-security\/responding-to-cve-2025-55182\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Google Cloud<\/a> all rolled out similar protections.<\/p>\n<p>Multiple security firms published detailed analyses: <a href=\"https:\/\/www.endorlabs.com\/learn\/critical-remote-code-execution-rce-vulnerabilities-in-react-and-next-js\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Endor Labs<\/a>, <a href=\"https:\/\/www.miggo.io\/post\/react2shell-cve-2025-55182-cve-2025-66478-critical-rce-vulnerabilities-in-react-and-nextjs\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Miggo Security<\/a>, <a href=\"https:\/\/www.vulncheck.com\/blog\/cve-2025-55182-react-nextjs\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">VulnCheck<\/a>, <a href=\"https:\/\/www.aikido.dev\/blog\/react-nextjs-cve-2025-55182-rce\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Aikido<\/a>, and <a href=\"https:\/\/www.ox.security\/blog\/rce-in-react-server-components\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">OX Security<\/a> all emphasized the same point: no special setup required, exploitable without authentication, affects default configurations.<\/p>\n<h2>What to Do Right Now<\/h2>\n<p>If you&#8217;re running React Server Components or Next.js with App Router:<\/p>\n<ol>\n<li><strong>Patch immediately<\/strong> \u2014 update to the fixed versions listed above<\/li>\n<li><strong>Deploy WAF rules<\/strong> if patching takes time (and if you have WAF infrastructure)<\/li>\n<li><strong>Monitor HTTP traffic<\/strong> to Server Function endpoints for suspicious payloads<\/li>\n<li><strong>Consider temporary network restrictions<\/strong> to affected applications until patches are deployed<\/li>\n<li><strong>Check your dependencies<\/strong> \u2014 if you&#8217;re using Vite, Parcel, React Router, RedwoodJS, Waku or similar, verify their RSC implementations<\/li>\n<\/ol>\n<h3>How to Patch?<\/h3>\n<p>Run the following in your terminal:<\/p>\n<p><code language=\"bash\"># For Next.js Users (npm)<br \/>\nnpm install next@latest react@latest react-dom@latest<\/code><\/p>\n<p><code language=\"bash\"># For Next.js Users (yarn)<br \/>\nyarn upgrade next react react-dom<\/code><\/p>\n<p>The React Team&#8217;s <a href=\"https:\/\/react.dev\/blog\/2025\/12\/03\/critical-security-vulnerability-in-react-server-components\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">official advisory<\/a> is clear: &#8220;Even if your app does not implement any React Server Function endpoints, it may still be vulnerable if your app supports React Server Components.&#8221;<\/p>\n<h2>The Supply Chain Reality<\/h2>\n<p>This vulnerability highlights modern web development&#8217;s fundamental challenge: framework trust. React Server Components were meant to improve performance and developer experience. Instead, they introduced a deserialization vulnerability affecting millions of applications.<\/p>\n<p>The issue wasn&#8217;t in some obscure optional feature. It was in the core protocol handling, affecting default configurations. You didn&#8217;t need to misconfigure anything or enable experimental flags. Just using RSC the way it was designed made you vulnerable.<\/p>\n<p>Exploit development is happening right now. Security researchers are analyzing patches to reverse-engineer attack methods. Proof-of-concept code will be public soon if it isn&#8217;t already. With nearly a million exposed servers identified, automated scanning and mass exploitation are inevitable.<\/p>\n<p>React moved from Meta to the React Foundation in October 2025. This is one of their first major security incidents under the new governance. How they handle communication, coordination, and future prevention will set the tone for the foundation&#8217;s credibility.<\/p>\n<p>For now, the message is simple: patch. This isn&#8217;t theoretical. This isn&#8217;t low-severity. This is a maximum CVSS score vulnerability in one of the web&#8217;s most popular frameworks, affecting default configurations, requiring no authentication, and trivial to exploit.<\/p>\n<p>Half the web runs on React. If you&#8217;re part of that half, it&#8217;s time to update.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CVE-2025-55182 dropped yesterday evening, and predictably, everyone&#8217;s losing their minds. Cloudflare rolling out emergency WAF rules, Unit 42 counting nearly a million vulnerable servers, Wiz reporting 40% of cloud infrastructure exposed \u2014 all the usual suspects chiming in. The vulnerability affects default configurations across multiple frameworks including Next.js, React Router, Waku, and others; exploitation is [&hellip;]<\/p>\n","protected":false},"author":15,"featured_media":31388,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"categories":[15],"tags":[388],"class_list":{"0":"post-31386","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-security-news","8":"tag-patch"},"featured_image_src":"https:\/\/gridinsoft.com\/blogs\/wp-content\/uploads\/2025\/12\/A-hot-December-for-React-and-Next.js-scaled.jpg","author_info":{"display_name":"Brendan Smith","author_link":"https:\/\/gridinsoft.com\/blogs\/author\/brendan\/"},"_links":{"self":[{"href":"https:\/\/gridinsoft.com\/blogs\/wp-json\/wp\/v2\/posts\/31386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gridinsoft.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gridinsoft.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gridinsoft.com\/blogs\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/gridinsoft.com\/blogs\/wp-json\/wp\/v2\/comments?post=31386"}],"version-history":[{"count":4,"href":"https:\/\/gridinsoft.com\/blogs\/wp-json\/wp\/v2\/posts\/31386\/revisions"}],"predecessor-version":[{"id":31390,"href":"https:\/\/gridinsoft.com\/blogs\/wp-json\/wp\/v2\/posts\/31386\/revisions\/31390"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gridinsoft.com\/blogs\/wp-json\/wp\/v2\/media\/31388"}],"wp:attachment":[{"href":"https:\/\/gridinsoft.com\/blogs\/wp-json\/wp\/v2\/media?parent=31386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gridinsoft.com\/blogs\/wp-json\/wp\/v2\/categories?post=31386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gridinsoft.com\/blogs\/wp-json\/wp\/v2\/tags?post=31386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}