More Info:
Enable docker/default seccomp profile in your pod definitionsRisk Level
HighAddress
SecurityCompliance Standards
- CIS Kubernetes
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
List and inspect pods missing an explicit seccompProfile
- Run on: any machine with kubectl access
- Command to list pods and show securityContext:
- Identify pods where the third column is empty (no pod-level seccompProfile), or not
RuntimeDefault.
-
Check container-level overrides within those pods
- For each pod of interest (NAMESPACE and POD_NAME from step 1), inspect the full spec:
- Under
.spec.containers[].securityContext.seccompProfile.type, note any containers that specify a different profile, or none at all.
- For each pod of interest (NAMESPACE and POD_NAME from step 1), inspect the full spec:
-
Decide which workloads must use RuntimeDefault vs. a custom profile
- For each workload owner (Deployment/StatefulSet/DaemonSet/Job/CronJob), determine whether
RuntimeDefaultis acceptable or whether a justified, documented custom seccomp profile is required. - To find the owning controller:
- Record exceptions where
RuntimeDefaultcannot be used, along with justification.
- For each workload owner (Deployment/StatefulSet/DaemonSet/Job/CronJob), determine whether
-
Update workload manifests to set seccompProfile: RuntimeDefault
- Retrieve the manifest for the owning controller (example for a Deployment):
- Edit
deployment-seccomp-fix.yamlto add or update: - If any container-level
securityContext.seccompProfileexists and is not required, remove or change it toRuntimeDefaultas well.
- Retrieve the manifest for the owning controller (example for a Deployment):
-
Apply the updated manifests and roll out changes
- Apply changes:
- If needed, trigger rollouts or restarts according to your operational process (e.g., for Deployments, they will roll out automatically when the Pod template changes).
- Apply changes:
-
Verify that pods now use RuntimeDefault
- After rollouts complete, re-run:
- For any remaining pods without
RuntimeDefault(or with container-level overrides), confirm they are explicitly approved exceptions; otherwise, repeat steps 3–5 to correct them.
- After rollouts complete, re-run:
Using kubectl
Using kubectl
kube-system).seccompProfile at pod level.spec: section, look for:securityContext:at pod level:- And/or
securityContext:under each container:
- No
seccompProfileat pod or container level at all: - A
seccompProfilewithtypenot set toRuntimeDefault(or explicitly set toUnconfined):
seccompProfile to use type: RuntimeDefault (which aligns with the provided remediation).seccompProfile.type is either not set or not RuntimeDefault. Each printed line is a candidate for manual review. Note it does not check container-level overrides—those still require inspecting the full YAML as in step 3.Automation
Automation
- Any line printed by the script indicates a container that does not comply with the benchmark expectation of
seccompProfile.type: RuntimeDefault:SECCOMP_PROFILEisNONE: no seccomp profile configured at Pod or container level.SECCOMP_PROFILEis any value other thanRuntimeDefault(e.g.,Localhost).

