TL;DR: React2Shell (CVE-2025-55182) is a 10.0 CVSS remote code execution flaw in React 19 that attackers began exploiting within hours, while Palo Alto Networks said nearly 1 million vulnerable instances remained live and React sees 55 million weekly downloads, according to AccuKnox analysis. Static scanning, container gating, and runtime enforcement now have to work as one control chain, because discovery without execution blocking leaves production exposed.
NHIMG editorial — based on content published by AccuKnox: Combat React2Shell with runtime detection beyond static scanning
By the numbers:
- React is downloaded 55 million times per week and powers a massive share of modern web applications.
- Cloudflare’s deployment caused a 25-minute service interruption during emergency patching.
Questions worth separating out
Q: What breaks when static scanning is the only control for React2Shell exposure?
A: Static scanning breaks at the point of production reality.
Q: Why do vulnerable workloads increase identity and access risk beyond the CVE itself?
A: Because the exploit runs inside a service that already has permissions.
Q: How do security teams know whether runtime controls are actually reducing exposure?
A: They should look for blocked exploit attempts, quarantined images, and workload policies that stop unknown processes from executing in production.
Practitioner guidance
- Implement continuous runtime enforcement for critical workloads Block suspicious process execution in containers, Kubernetes pods, and VMs so a known exploit cannot run just because a vulnerable package exists in production.
- Re-enable authenticated scanning across all environments Run authenticated DAST and continuous SAST against production, staging, and internal services so hidden deployments do not remain outside the vulnerability inventory.
- Quarantine vulnerable container images before promotion Gate image promotion on container scanning and SBOM checks, then quarantine images that still carry affected React dependencies or transitive packages.
What's in the full article
AccuKnox's full article covers the operational detail this post intentionally leaves for the source:
- Step-by-step CNAPP control mapping across SAST, DAST, image scanning, and runtime enforcement.
- The staged Acme Corporation example showing how authenticated scanning, quarantine, and runtime blocking fit together.
- Specific workload policy actions such as virtual patching and process execution controls for React Server Components.
- The remediation sequence used to correlate vulnerability findings with cloud and Kubernetes workloads.
👉 Read AccuKnox's analysis of React2Shell runtime detection and CNAPP controls →
React2Shell and runtime enforcement: are your controls keeping up?
Explore further
Static scanning is necessary, but it is not a production control. SAST and DAST can tell teams where vulnerable code exists, yet they do not stop exploitation once a service is live. React2Shell shows that the security boundary must move from detection to enforcement, especially where container images and deployed workloads drift away from repository state. Practitioners should treat runtime blocking as the control that converts discovery into actual risk reduction.
A few things that frame the scale:
- 91.6% of secrets remain valid five days after the targeted organisation is notified, showing a critical gap in remediation procedures, according to the Ultimate Guide to NHIs.
- 97% of NHIs carry excessive privileges, increasing unauthorised access and broadening the attack surface, according to the Ultimate Guide to NHIs.
A question worth separating out:
Q: Who is accountable when a fixed vulnerability reappears in production?
A: Accountability usually sits across engineering, security, and release ownership, because recurrence often means the fix was not preserved during build, test, or deployment. The important governance question is who owns verification after the fix. Without that ownership, reopened exposure can be treated as a new issue instead of a failed control.
👉 Read our full editorial: React2Shell exposes the limits of static scanning in production