CVE-2025-55182 is a CVSS 10.0 unauthenticated RCE in React Server Components. Learn what attackers do post-exploit and how AI detection helps you respond faster.

React RSC RCE: What CVE-2025-55182 Means Now
A CVSS 10.0 vulnerability that’s unauthenticated, low-complexity, and near-100% reliable is the kind defenders don’t get to “schedule for next sprint.” CVE-2025-55182—an insecure deserialization flaw in the React Server Components (RSC) Flight protocol—is exactly that. It’s also a painful reminder that modern web stacks concentrate risk: when a framework becomes default, exploitation becomes routine.
Unit 42 has already documented post-exploitation behavior in the wild: automated scanning, credential hunting, cryptomining, Cobalt Strike-style access, and new Linux backdoors like KSwapDoor. The takeaway I want you to leave with is simple: patching is mandatory, but patching alone is not a defense strategy. If you run React 19 or Next.js App Router deployments, you need detection that spots exploitation as it happens, and response that contains it fast.
This is where the “AI in Cybersecurity” conversation gets real. When attackers move from disclosure to exploitation in days, AI-driven threat detection isn’t hype—it’s how you keep your SOC from drowning in volume while still catching the weird stuff.
What CVE-2025-55182 actually breaks (and why it’s so exploitable)
CVE-2025-55182 enables remote code execution via logical deserialization in the RSC Flight protocol implementation. In practical terms: a server receives a crafted HTTP payload, the RSC machinery parses it incorrectly, and attacker-controlled data influences server-side execution.
Two details make this one especially dangerous:
- It doesn’t require authentication. The attacker doesn’t need an account, session, or user interaction.
- It’s deterministic. Unlike many memory corruption exploits that can be fragile, this is a logic flaw in parsing/validation. Unit 42 notes testing showed near-100% reliability.
Affected versions and packages (where teams get tripped up)
Most companies get this wrong by only checking “React version” at the app level. The vulnerable behavior lives in specific server-dom packages that frameworks bundle.
Unit 42 highlighted impacted versions in the React 19 ecosystem, including:
- React: 19.0, 19.1, 19.2 (and specific vulnerable package builds)
- Next.js: 15.x and 16.x (App Router), plus canary builds starting from 14.3.0
- Other frameworks/plugins bundling
react-serverimplementations (React Router, Waku, RedwoodSDK, Parcel, Vite RSC plugins)
Patch guidance (non-negotiable):
- React: upgrade to 19.0.1, 19.1.2, or 19.2.1
- Next.js: upgrade to patched releases such as 16.0.7, 15.5.7, 15.4.8, 15.3.6, 15.2.6, 15.1.9, or 15.0.5
If you’re operating during a December change freeze, treat this like the exception that proves the rule. A CVSS 10.0 unauthenticated RCE should override freeze policies.
What attackers did after initial access (and what you should look for)
Post-exploitation behavior is already well-defined and repeatable. That’s good news for defenders: repeatable patterns are exactly what modern detection—especially ML-assisted detection—can learn and flag early.
Unit 42 observed a familiar kill chain:
1) Automated scanning and “am I in?” checks
Attackers scanned broadly, then used short commands to confirm execution and fingerprint the host. Observed behavior included:
- Arithmetic echo checks (a common low-noise validation)
- Base64-encoded command stagers
- OS and privilege discovery (
uname,id), network mapping, and DNS/hosts inspection
Defender stance: Don’t just detect “exploit attempt.” Detect the transition from exploit to interactive control.
2) Recon to find credentials and lateral movement paths
After landing, attackers quickly enumerated:
- Home directories and common config locations
- Cloud credential files and environment indicators
- DNS configuration and internal routing context
Why this matters: With modern stacks, the web server is often adjacent to secrets. Your Next.js server might have access to:
- cloud metadata/instance roles
- CI/CD tokens
- database credentials
- internal APIs protected only by network location
3) Malware staging and commodity payloads
Unit 42 saw:
wget/curldownload-and-execute chains- cryptomining (including XMRig)
- droppers designed for persistent infection
- occasional reverse shells consistent with commodity operator playbooks
This is where many SOCs waste time: by the time “cryptominer detected” fires, the attacker has often already searched for credentials.
4) Web shells disguised as developer tooling
One of the more telling details: an interactive web shell disguised as a “React File Manager” (a JavaScript file manager project). The operator behavior was pragmatic:
- kill existing
nodeprocesses to avoid port conflicts - download a Node-based file manager shell
- cycle ports (13373, 3000, 8080, 8888, 9000) to find an accessible listener
- drop simple marker files in common web roots for external verification
Defender stance: If you run Node in production, watch for Node spawning shell utilities and unexpected Node listeners.
The newer backdoors: why this isn’t “just a web bug” anymore
Once an RCE like this becomes a popular initial access vector, it turns into a delivery mechanism for long-lived implants. Unit 42’s later updates are the signal: actors aren’t merely opportunistic; they’re investing.
KSwapDoor: persistence with real engineering behind it
Unit 42 uncovered KSwapDoor, initially mistaken for BPFDoor. The features described should raise your threat model immediately:
- P2P mesh networking with multi-hop routing for resilient command and control
- AES-256-CFB encryption with Diffie-Hellman key exchange
- Stealth masquerade as a Linux kernel swap daemon (
[kswapd1]-style naming) - watchdog behavior and obfuscated configuration stored encrypted
This is not the profile of “spray and pray.” It’s built to survive cleanup and maintain access even if perimeter indicators get burned.
EtherRAT and blockchain-assisted delivery patterns
Unit 42 also references observed activity consistent with EtherRAT and overlap with DPRK-linked tooling patterns reported elsewhere, including “EtherHiding” techniques that use blockchain components for payload resolution.
Whether or not you care about attribution, the operational point is clear: C2 resolution and payload delivery are getting harder to block with static IOCs. That pushes defenders toward behavioral detection and anomaly detection.
Where AI-driven detection helps (and where it won’t)
AI won’t patch CVE-2025-55182 for you. And it won’t make an internet-exposed vulnerable service safe. But it will help with the part defenders routinely lose: the speed and scale of detection and triage.
Here’s how I’ve seen AI in cybersecurity create real leverage in incidents like this.
AI is strong at “pattern stacks,” not single indicators
Traditional rules often look like: “if node spawns curl, alert.” Attackers adapt by changing tooling. AI-assisted analytics do better when you describe the shape of compromise:
- a
nodeorbunparent process - multiple suspicious child processes in a short time window (
curl,wget,bash,sh,base64,chmod,nohup) - outbound connections to unusual IPs/domains
- new listeners or persistence attempts
That multi-signal correlation is where ML-based detection reduces false positives while still catching new variants.
AI shortens mean time to know (MTTK)
In this incident class, defenders aren’t missing alerts—they’re missing context.
An AI-assisted SOC workflow can:
- cluster related process trees across hosts
- rank incidents by blast radius (which servers share similar child-process chains)
- identify “first seen” behaviors that coincide with exploit timeframes
- surface likely intent (credential access, mining, lateral movement)
When the window between exploitation and data theft is hours (or less), shaving triage time is the difference between “contained” and “breach.”
AI helps most when paired with guardrails
The highest ROI I see is combining AI detection with preventative controls:
- SBOM-aware build gates that block deployments containing known critical CVEs
- runtime policies for “Node should not spawn shells” in production containers
- automated isolation playbooks for suspicious RSC/Next.js servers
AI is the engine; guardrails are the brakes.
Practical response plan: what to do in the next 24 hours
The goal is to reduce risk even if you can’t patch every instance immediately. Here’s a pragmatic sequence that works for real teams.
1) Identify exposure fast (don’t rely on version banners)
- inventory internet-exposed Next.js/React RSC services
- map which ones use App Router/RSC paths in production
- include ephemeral and “forgotten” environments (preview deployments, canaries, old staging)
2) Patch and redeploy with clean artifacts
- upgrade to the patched React/Next.js versions listed above
- rebuild images from scratch (don’t just
npm installinside old layers) - rotate secrets that may have been accessible to the app runtime
3) Hunt for post-exploitation signals
Prioritize signs that indicate interactive control or persistence:
nodespawningbash/sh+curl/wget+chmod/nohup/setsid- downloads to
/tmpfollowed by execution - unexpected
nodelisteners on non-standard ports - marker files dropped into web roots
- evidence of miners, droppers, or “file manager” shells
4) Assume credential exposure if RCE occurred
If you confirm exploitation:
- rotate cloud keys, CI/CD tokens, database passwords used by the service
- check for new users, SSH keys, cron jobs, or suspicious PAM-related artifacts
- review outbound network connections for C2-like patterns
The bigger lesson for the AI in Cybersecurity series
CVE-2025-55182 is a textbook example of why AI-driven threat detection matters: the exploit is reliable, scanning is automated, and post-exploitation is increasingly sophisticated (KSwapDoor is a strong signal of that trend). Security teams that rely on manual triage and static IOCs are going to be late—and being late is the one thing you can’t afford with an unauthenticated RCE.
If you’re responsible for React/Next.js production systems, treat this week as a forcing function: patch quickly, then make sure you have the detection coverage to answer two questions immediately:
- Did anyone exploit us before we patched?
- If yes, did they persist (and where)?
That’s the bar modern attackers set. Your defenses should meet it.