By NHI Mgmt Group Editorial TeamDomain: Breaches & IncidentsSource: terraPublished December 3, 2025

TL;DR: A critical flaw in React Server Components lets unauthenticated attackers trigger remote code execution in default deployments through the Flight protocol, and Terra says the practical fix is framework-level patching rather than WAF-only detection. The case underscores how trusted-deserialization assumptions can collapse when server-rendered endpoints are exposed to the internet.


At a glance

What this is: This is an advisory on an unauthenticated remote code execution flaw in the React Server Components Flight protocol that affects default-facing deployments.

Why it matters: It matters to security and identity practitioners because exposed application endpoints, privileged runtime execution, and patch dependency chains can turn a web-layer flaw into broad environment compromise.

👉 Read terra's analysis of the unauthenticated React and Next.js RCE


Context

React Server Components are a server-side rendering pattern in which the server streams UI data to the client through a serialization format called the Flight protocol. The security problem here is not just a bug in a framework, but a trust boundary failure: a deserializer accepted input that was only safe if it came from a trusted client. In public-facing applications, that assumption no longer holds, and unauthenticated remote code execution becomes possible in the default configuration.

For practitioners, the governance lesson is broader than this single vulnerability. Public application endpoints, framework dependencies, and runtime privileges form a chain, and the weakest assumption in that chain determines exposure. Where application platforms rely on shared server-side components, patch management and release coordination become part of secure identity and access control because code execution on a server can immediately become access to secrets, tokens, and downstream systems.


Key questions

Q: What breaks when insecure deserialization appears in a server-side web framework?

A: Unsafe deserialization turns trusted request parsing into a code execution path, which means the application can be driven to behave as if the attacker were local code. The practical impact is broader than the bug itself because the runtime may already hold secrets, workload credentials, and internal network reach that become accessible after compromise.

Q: Why do public framework defaults create more risk than isolated application bugs?

A: Because default exposure makes the flaw reachable at internet scale, even when no custom code was added by the development team. A framework bug that sits behind authentication is serious; the same bug on a public endpoint is far more dangerous because the attacker does not need to solve access first. Reachability is the risk multiplier.

Q: How can security teams tell whether a patch really closes this kind of issue?

A: They should verify the deployed runtime lineage, not just the source dependency declaration. In framework-driven stacks, the vulnerable component may be bundled through a meta-framework, so the effective fix is the version that pulls in the patched parser. Build artefacts and production images are the evidence that matters.

Q: Who is accountable when a framework-level RCE exposes secrets and service accounts?

A: Accountability usually spans application owners, platform teams, and security operations because the failure crosses code, deployment, and runtime boundaries. The framework owner must ship the fix, but the organisation must prove exposure mapping, patch enforcement, and secret review. If code execution reaches credentials, identity governance becomes part of incident response.


Technical breakdown

Why insecure deserialization in Flight leads to code execution

The Flight protocol is used to serialize and deserialize data between the server and client in React Server Components. In this case, the deserializer accepted crafted payloads that influenced the constructor property of an object, which allowed attackers to reach the global Function constructor. Once an attacker can create executable function content from untrusted input, they can append commands and invoke runtime primitives such as child_process.execSync. The core failure is a trust boundary error in parsing, not a missing authentication check.

Practical implication: treat framework deserialization paths as attack surfaces and patch the underlying runtime before relying on perimeter detection.

Why default exposure in Next.js widens the attack surface

The issue becomes exploitable at scale because modern meta-frameworks expose React Server Components endpoints publicly to serve application UI. That means the vulnerable deserializer is reachable without authentication in ordinary deployments, even when developers have not added custom code. In practice, this is the kind of flaw that bypasses many application assumptions: the application appears to be serving content normally, while the server is still processing attacker-controlled payloads. Public exposure converts a framework defect into an internet-wide risk.

Practical implication: inventory public RSC endpoints and treat default framework exposure as a reachability problem, not just a code quality issue.

Why framework-level patching is the only durable fix

The advisory notes that WAF signatures may detect some payloads, but they do not remove the underlying execution path. The rejected duplicate CVE illustrates a common remediation pitfall: a vulnerability may be tracked under one component, yet the fix requires updating a bundled framework dependency chain. For teams using Next.js or standalone react-server deployments, security depends on the exact version lineage, not on the visible application package alone. Durable remediation therefore lives in dependency governance and release management.

Practical implication: verify the patched framework version in build artefacts and deployment pipelines rather than assuming a library-only update is sufficient.


Threat narrative

Attacker objective: The attacker aims to execute arbitrary system commands on the server and turn a web application flaw into broader environment compromise.

  1. Entry occurs through a publicly reachable React Server Components endpoint that accepts a crafted Flight payload without authentication.
  2. Credential access is not required because the payload abuses server-side deserialization to reach executable runtime primitives directly.
  3. Escalation follows when the attacker uses the Function constructor path to run child_process.execSync or equivalent system commands inside the server process.
  4. Impact is full remote code execution on the application server, with potential access to secrets, tokens, and adjacent services.

Read our 52 NHI Breaches Analysis report for a comprehensive view of breaches impacting Non-Human Identities including AI Agents.


NHI Mgmt Group analysis

Exposed framework defaults are now an application governance issue, not just a developer convenience. When a framework ships with server-side endpoints that are reachable from the internet by default, the security boundary is no longer the codebase alone. The operational question becomes whether the organisation knows which runtime surfaces are exposed, which versions are bundled, and which teams own the patch path. That is a governance problem as much as an AppSec problem, and practitioners should map framework defaults into their control inventory.

Trusted deserialization is a named control gap that keeps reappearing in modern web stacks. The Flight protocol failure shows what happens when server code assumes input provenance rather than enforcing it. This is not just a React issue, because the same pattern appears anywhere that parsers, serializers, or message handlers accept attacker-shaped data. For identity and access programmes, the lesson is that execution control begins before authentication events are even relevant.

Dependency lineage now matters as much as package names. The rejected duplicate CVE is a reminder that the visible component with the bug and the component you must upgrade are not always the same thing. In complex frameworks, security teams need a version-to-runtime map that shows what code is actually deployed, not just what a dependency file claims. That same discipline applies to NHI and agentic systems, where bundled components can silently inherit privilege and exposure.

Public RCE on application servers is an access-control failure in disguise. Once arbitrary command execution is possible, attackers can hunt for secrets, tokens, service accounts, and other non-human identities that live inside the server boundary. The boundary between application security and identity security collapses immediately, because code execution becomes credential discovery and downstream impersonation. Practitioners should treat server RCE as a high-probability NHI exposure event, not only as an application incident.

From our research:

What this signals

Framework RCE is increasingly an identity problem because server compromise is now an identity harvest opportunity. Once an application process is executing attacker commands, the next step is usually to enumerate secrets, service accounts, and tokens that extend access beyond the original system. That makes application hardening and NHI governance inseparable in environments where workloads carry credentials. Teams should assume runtime compromise can become identity compromise in one step.

Version control must now include dependency lineage and credential blast radius. A patch is only operationally meaningful if teams know which deployed images, build pipelines, and runtime bundles carry the vulnerable parser. The same control discipline should extend to any workload that stores API keys or service account material, because the blast radius is determined by what the process can reach. Security programmes should pair patch verification with secret exposure review.

Application security programmes that ignore non-human identities leave a blind spot in post-exploitation handling. If a server can execute commands, the organisation needs to know which tokens, certificates, and automation accounts could be abused next. The 1 in 4 organisations already investing in dedicated NHI security capabilities signals where the market is heading: runtime compromise is being treated as an identity governance event, not a purely developer defect.


For practitioners

  • Audit public-facing RSC endpoints Inventory every application using React Server Components or Next.js App Router, then confirm which endpoints are internet reachable, which authentication checks exist, and which versions are deployed in production and staging.
  • Patch the bundled framework path first Update the framework version that actually pulls in the fixed react-server dependency, and verify the resulting build artefacts rather than stopping at a standalone library bump.
  • Search for server-side secret exposure Assume any exploited server process may have touched tokens, API keys, certificates, or service account credentials, then review runtime logs, crash output, and secret stores for follow-on compromise.
  • Validate deserialization reachability in pre-production Add tests that send malformed or attacker-shaped Flight payloads to staging systems so you can see whether the vulnerable parsing path is actually exposed before release.

Key takeaways

  • Unauthenticated server-side code execution turns a framework flaw into a broad exposure problem, especially when defaults place endpoints on the public internet.
  • The practical blast radius extends beyond the application itself because server compromise can expose secrets, service accounts, and downstream access paths.
  • Teams should verify the deployed framework lineage, patch the bundled dependency chain, and review NHI exposure as part of remediation.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

MITRE ATT&CK address the attack surface, NIST CSF 2.0, NIST SP 800-53 Rev 5 and CIS Controls v8 set the technical controls, and ISO/IEC 27001:2022 define the regulatory obligations.

FrameworkControl / ReferenceRelevance
MITRE ATT&CKTA0002 , Execution; TA0006 , Credential Access; TA0040 , ImpactThe advisory describes execution on a public server, then likely credential exposure and impact.
NIST CSF 2.0PR.AC-4Public framework exposure and access control failures are central to the risk.
NIST SP 800-53 Rev 5SI-10The flaw is an input handling and deserialization failure.
CIS Controls v8CIS-7 , Continuous Vulnerability ManagementImmediate patching and exposure review are the main remediation actions.
ISO/IEC 27001:2022A.8.8The incident is about preventing exploitation of technical vulnerabilities in deployed software.

Map exposed RSC endpoints to execution, credential access, and impact tactics, then prioritise affected builds for containment.


Key terms

  • React Server Components: A server-side rendering pattern in which the server generates component output and streams it to the client. Security risk increases when the server accepts serialized input that can influence runtime behaviour, because parsing bugs can become execution paths.
  • Flight Protocol: The serialization format used by React Server Components to move data between server and client. It is security-sensitive because any unsafe deserialization in the protocol can turn crafted input into code execution when the server trusts attacker-controlled structure.
  • Unsafe Deserialization: Unsafe deserialization happens when software reconstructs objects from untrusted data in a way that can trigger code execution or state corruption. In practice, the risk is not the file or message itself, but the fact that the parser is allowed to invoke behaviour while rebuilding the object.
  • Access Reachability: Access Reachability is the set of data and systems an identity can actually touch, including through indirect paths such as shared folders, delegated permissions, and AI-assisted retrieval. It is a more useful control view than raw entitlement counts because it reflects what can be exposed in practice.

What's in the full analysis

Terra's full article covers the operational detail this post intentionally leaves for the source:

  • Exact version matrix for patched Next.js branches, including the specific upgrade targets for each release line
  • Step-by-step explanation of how the Flight payload reaches the Function constructor path in react-server
  • Practical remediation notes for teams using standalone react-server outside a meta-framework
  • Detection guidance for WAF signatures and why they do not replace framework patching

👉 Terra's full post covers the exploit path, affected versions, and immediate remediation steps

Deepen your knowledge

NHI Foundation Level course, the industry's only accredited NHI security programme, covers NHI governance, machine identity security, and secrets management in the context of modern access risk. It helps practitioners connect application compromise to identity exposure across their wider security programme.
NHIMG Editorial Note
Published by the NHIMG editorial team on August 2, 2026.
NHI Mgmt Group — the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org