Skip to main content

More Info:

Allow Kubelet to manage iptables.

Risk Level

High

Address

Security

Compliance Standards

  • APRA CPS 234 (Australia)
  • BSI C5 (Germany)
  • Brazil LGPD
  • CCPA / CPRA (California)
  • CIS Critical Security Controls v8
  • CIS GKE
  • CMMC 2.0
  • CSA Cloud Controls Matrix v4
  • DPDPA
  • Digital Operational Resilience Act (EU)
  • ISO/IEC 27017
  • ISO/IEC 27018
  • ISO/IEC 27701
  • KSA PDPL
  • MAS Technology Risk Management (Singapore)
  • MITRE ATT&CK (Cloud)
  • NIS2 Directive
  • NIST SP 800-171
  • NYDFS 23 NYCRR 500
  • SWIFT Customer Security Controls Framework
  • Sarbanes-Oxley IT General Controls
  • UK NCSC Cyber Assessment Framework

Triage and Remediation

Remediation

Manual Steps

  1. On every worker node, check how kubelet is configured (config file vs. flags):
  2. If kubelet uses a config file at /var/lib/kubelet/config.yaml, edit it and set makeIPTablesUtilChains: true:
    If the file is in JSON format instead (e.g. /etc/kubernetes/kubelet/kubelet-config.json), ensure it contains:
  3. Ensure no systemd drop-in overrides this setting on the worker node:
    If found in /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf, remove that flag:
  4. If your environment configures kubelet only via executable arguments, ensure the flag is present and set to true in /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf on the worker node:
  5. Restart kubelet on the worker node to apply changes:
  6. Verify on the worker node that kubelet is running and (if needed) inspect live config:
kubectl cannot modify kubelet host-level configuration or process flags, so this finding cannot be fixed via the Kubernetes API. The required change must be made directly on every worker node (editing /var/lib/kubelet/config.yaml or the systemd drop-in under /etc/systemd/system/kubelet.service.d/); follow the Manual Steps section to implement and verify the fix.

Additional Reading: