
React2Shell: The Critical Vulnerability That Briefly Knocked Cloudflare Offline
In early December 2025, a maximum-severity remote code execution (RCE) flaw in React Server Components—dubbed React2Shell (CVE-2025-55182)—sent shockwaves through the web development world. Rated CVSS 10.0, this unauthenticated bug allowed attackers to run arbitrary code on vulnerable servers with a single crafted request. While the vulnerability itself didn't directly exploit Cloudflare, the company's rapid emergency mitigation efforts accidentally triggered a 25-minute global outage on December 5, 2025, flooding millions of sites with 500 errors. This incident highlighted the real-world risks of modern web frameworks and the high-stakes race to patch critical threats.
What Happened: A Timeline of Events
| Date | Event |
|---|---|
| November 29, 2025 | Independent researcher Lachlan Davidson responsibly reports the vulnerability to Meta via bug bounty. |
| December 3, 2025 | React team publicly discloses CVE-2025-55182 and releases patches. Exploitation begins almost immediately, with scanning and attacks observed in the wild. |
| December 5, 2025 | Cloudflare rolls out emergency WAF changes (including increasing request body buffer to 1MB) to block exploits for customers. This breaks internal tools, causing a 25-minute outage starting ~8:47 UTC, affecting ~28% of HTTP traffic (millions of requests per second returning 500 errors). |
| Ongoing (as of Dec 15, 2025) | Active exploitation by threat actors, including China-nexus groups. CISA adds to Known Exploited Vulnerabilities (KEV) catalog. |
The outage was not from direct exploitation of Cloudflare's systems—it was a self-inflicted side effect of proactive defenses. As Cloudflare's postmortem explained: changes to body parsing logic disrupted service while aiming to protect users.
The Key Players
- Lachlan Davidson: The discoverer who responsibly disclosed the flaw, earning credit for helping safeguard the ecosystem.
- React Team (Meta): Quickly patched the core issue in React's Flight protocol.
- Cloudflare: Deployed automatic WAF protections for all customers but accidentally caused downtime during rollout. Their Rust-rewritten components remained stable, while Lua-based parts faltered—sparking renewed praise for Rust's memory safety.
- Threat Actors: Rapid weaponization by sophisticated groups, targeting cloud instances and critical infrastructure.
Why React2Shell Terrifies Security Experts
At its core, React2Shell exploits unsafe deserialization in React's Flight protocol—the mechanism for streaming server-rendered components to clients. Attackers craft malicious payloads (using special "model strings" and promise hijacking) that trick the server into executing arbitrary JavaScript via the Function constructor. This echoes classic serialization bugs (like old Java issues) but in a widely used modern stack. No authentication needed—just one HTTP POST to a server action endpoint.
Who Is Affected?
- Apps using React 19.x Server Components (RSC) with vulnerable versions.
- Frameworks like Next.js (App Router), React Router, Waku, and others bundling RSC.
- Not affected: Pure client-side React apps or those without server actions.
Vulnerable Versions
| Package | Vulnerable Range |
|---|---|
| React | 19.0.0 – 19.2.0 |
| Next.js | Various 15.x/16.x pre-patch |
Patched Versions
| Package | Safe Versions |
|---|---|
| React | 19.0.1, 19.1.2, 19.2.1+ |
| Next.js | 15.5.7+, 16.0.7+ |
Attack Vectors and Indicators
Exploits involve crafted Flight payloads in POST requests. Early signs included scanning for vulnerable endpoints and attempts to steal credentials or deploy malware. WAF providers (Cloudflare, AWS, etc.) deployed blocking rules, but patches are essential—some bypasses exist.
Lessons Learned: Rust Shines, Proactive Defense Matters
The Cloudflare outage underscored a silver lining: their newer Rust-based proxy layers stayed up, while legacy Lua code crashed on a nil value. This real-world example fueled discussions on memory-safe languages like Rust for critical infrastructure.
Why This Matters for Developers
React2Shell is a wake-up call: experimental features like Server Components bring power but also risks. Deserialization from untrusted sources remains a perennial threat.
Best Practices:
- Upgrade immediately to patched versions.
- Minimize exposure of server actions.
- Use WAFs as a temporary layer.
- Audit dependencies and avoid unneeded RSC features in production.
- Monitor for exploitation attempts.
What's Next?
With active exploits ongoing, expect more patches for related issues and increased adoption of safer patterns. Tools for detecting RSC vulnerabilities are emerging fast. This event showed how quickly critical flaws can ripple across the internet—and how heroic mitigation can sometimes cause temporary chaos. Stay patched, stay vigilant.
Patch now. Serialize safely. The web depends on it.
For details: React Advisory Cloudflare Postmortem


