/

CVE-2026-53999

Severity:

HIGH RISK

(7.7)

Confused Deputy (CWE-441) in Radius K8s Controller

CVE-2026-53999

Deferred

Vulnerability type

Category:

Confused Deputy

CWE:

CWE-20, CWE-441

Impact:

Cross-tenant resource deletion and denial of service

Severity:

HIGH RISK

(7.7)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

A confused-deputy vulnerability in the Radius Kubernetes controller allows an attacker who can modify Deployment annotations to forge controller status and disable a managed resource. In multi-tenant deployments, this may cause the controller to delete another tenant's recoverable container resource, disrupting service.

A confused-deputy vulnerability in the Radius Kubernetes controller allows an attacker who can modify Deployment annotations to forge controller status and disable a managed resource. In multi-tenant deployments, this may cause the controller to delete another tenant's recoverable container resource, disrupting service.

Affected context

The issue occurs in Radius Kubernetes controller deployments that process user-controlled radapp.io/status and radapp.io/enabled annotations. Risk is greatest in multi-tenant installations where the controller has permission to delete Radius-managed resources belonging to different tenants and does not verify that the referenced resource is owned by the Deployment being reconciled.

The issue occurs in Radius Kubernetes controller deployments that process user-controlled radapp.io/status and radapp.io/enabled annotations. Risk is greatest in multi-tenant installations where the controller has permission to delete Radius-managed resources belonging to different tenants and does not verify that the referenced resource is owned by the Deployment being reconciled.

Exploit preconditions

  • Attack surface: Kubernetes Deployment annotations processed by the Radius controller
  • Required access: Permission to modify annotations on a Deployment
  • Additional knowledge: Awareness of a target Radius container resource identifier
  • Trigger point: Controller reconciliation after forged status and disabled-state annotations are submitted
  • Why exploitation is possible: The controller trusts the supplied resource identifier and reaches a privileged deletion path without confirming ownership by the originating Deployment
  • Attack surface: Kubernetes Deployment annotations processed by the Radius controller
  • Required access: Permission to modify annotations on a Deployment
  • Additional knowledge: Awareness of a target Radius container resource identifier
  • Trigger point: Controller reconciliation after forged status and disabled-state annotations are submitted
  • Why exploitation is possible: The controller trusts the supplied resource identifier and reaches a privileged deletion path without confirming ownership by the originating Deployment

Why this happens

The underlying flaw combines insufficient validation of controller input with a confused-deputy authorization failure. The controller deserializes a user-controlled status annotation and uses the embedded container resource identifier for deletion without establishing that the referenced resource is owned by the Deployment under reconciliation. This maps primarily to CWE-441, Unintended Proxy or Intermediary ('Confused Deputy'), with CWE-20 reflecting inadequate validation of externally supplied annotation data.

The underlying flaw combines insufficient validation of controller input with a confused-deputy authorization failure. The controller deserializes a user-controlled status annotation and uses the embedded container resource identifier for deletion without establishing that the referenced resource is owned by the Deployment under reconciliation. This maps primarily to CWE-441, Unintended Proxy or Intermediary ('Confused Deputy'), with CWE-20 reflecting inadequate validation of externally supplied annotation data.

Potential impact

  • A multi-tenant deployment may delete another team's recoverable container resource
  • Affected applications may experience service disruption or denial of service
  • Reconciliation may perform privileged actions on resources outside the requester's intended scope
  • A single-tenant installation may experience self-inflicted denial of service
  • The vulnerability does not inherently provide data disclosure, privilege escalation, or persistence
  • A multi-tenant deployment may delete another team's recoverable container resource
  • Affected applications may experience service disruption or denial of service
  • Reconciliation may perform privileged actions on resources outside the requester's intended scope
  • A single-tenant installation may experience self-inflicted denial of service
  • The vulnerability does not inherently provide data disclosure, privilege escalation, or persistence

General mitigation guidance

Mitigation generally focuses on reducing trust in annotations and enforcing

resource ownership at every privileged operation.

Common defensive patterns include:

  • Treating annotation content as untrusted input and applying strict schema and type validation
  • Binding referenced resources to the reconciled Deployment through server-side ownership checks
  • Revalidating tenant, namespace, and resource identity immediately before deletion
  • Using allowlisted state transitions instead of allowing annotations to directly select privileged actions
  • Applying least-privilege permissions and tenant-scoped authorization to controller service accounts
  • Making destructive reconciliation actions fail closed when ownership or identity cannot be established

Mitigation generally focuses on reducing trust in annotations and enforcing

resource ownership at every privileged operation.

Common defensive patterns include:

  • Treating annotation content as untrusted input and applying strict schema and type validation
  • Binding referenced resources to the reconciled Deployment through server-side ownership checks
  • Revalidating tenant, namespace, and resource identity immediately before deletion
  • Using allowlisted state transitions instead of allowing annotations to directly select privileged actions
  • Applying least-privilege permissions and tenant-scoped authorization to controller service accounts
  • Making destructive reconciliation actions fail closed when ownership or identity cannot be established

How teams detect issues like this

Organizations can look for:

  • Static analysis rules that flag privileged operations using identifiers obtained from annotations or other user-controlled metadata
  • Code review signals involving deserialization without schema validation or deletion without an ownership check
  • Tests that attempt cross-namespace and cross-tenant resource references during reconciliation
  • Audit-log correlation between Deployment annotation changes and unexpected resource deletion events
  • Admission and policy controls that restrict who may modify controller-consumed annotations
  • Automated security review tools that identify missing authorization checks on resource-specific operations

Organizations can look for:

  • Static analysis rules that flag privileged operations using identifiers obtained from annotations or other user-controlled metadata
  • Code review signals involving deserialization without schema validation or deletion without an ownership check
  • Tests that attempt cross-namespace and cross-tenant resource references during reconciliation
  • Audit-log correlation between Deployment annotation changes and unexpected resource deletion events
  • Admission and policy controls that restrict who may modify controller-consumed annotations
  • Automated security review tools that identify missing authorization checks on resource-specific operations

Sources

SourceLink
github.comgithub.com/radius-project/radius/commit/c4174fc205b838d5eab4f64b4909001ab08c0587
github.comgithub.com/radius-project/radius/pull/11967
github.comgithub.com/radius-project/radius/releases/tag/v0.58.0
github.comgithub.com/radius-project/radius/security/advisories/GHSA-fp5j-4fj2-4jvq

Frequently asked

questions

It may be exploitable through the Kubernetes API when an attacker can modify

Deployment annotations and knows or can obtain a target Radius resource

identifier. Exploitability depends on cluster permissions and controller

deployment architecture.

Not necessarily. The key requirement is permission to modify annotations on a

Deployment that the Radius controller reconciles. The attacker does not

inherently need permission to delete the target resource directly.

Treat annotation data as untrusted, validate it against a strict schema, and

verify resource ownership, tenant scope, and namespace before performing any

privileged deletion.

Use least-privilege controller permissions, enforce admission policies for

controller-consumed metadata, add cross-tenant authorization tests, and

monitor for deletion actions that do not match established ownership

relationships.

It may be exploitable through the Kubernetes API when an attacker can modify

Deployment annotations and knows or can obtain a target Radius resource

identifier. Exploitability depends on cluster permissions and controller

deployment architecture.

Not necessarily. The key requirement is permission to modify annotations on a

Deployment that the Radius controller reconciles. The attacker does not

inherently need permission to delete the target resource directly.

Treat annotation data as untrusted, validate it against a strict schema, and

verify resource ownership, tenant scope, and namespace before performing any

privileged deletion.

Use least-privilege controller permissions, enforce admission policies for

controller-consumed metadata, add cross-tenant authorization tests, and

monitor for deletion actions that do not match established ownership

relationships.

Find out what's already
exploitable in your codebase.