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

