Files
nuclei-templates/cloud/kubernetes/security-compliance/k8s-apiserver-anonymous-access.yaml
2025-10-23 06:01:47 +00:00

45 lines
1.9 KiB
YAML

id: k8s-apiserver-anonymous-access
info:
name: Ensure kube-apiserver --anonymous-auth is explicitly disabled
author: songyaeji
severity: high
description: Checks whether kube-apiserver explicitly sets --anonymous-auth=false in its startup arguments.
impact: |
If --anonymous-auth is not explicitly disabled, anonymous unauthenticated requests might be allowed,
enabling unauthenticated access to cluster resources.
remediation: |
Edit the kube-apiserver manifest (e.g., /etc/kubernetes/manifests/kube-apiserver.yaml) or startup flags
and ensure "--anonymous-auth=false" is present in the apiserver arguments.
reference:
- https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/
tags: cloud,devops,kubernetes,security,devsecops,api-server,k8s,k8s-cluster-security
variables:
argument: "--anonymous-auth=false"
self-contained: true
code:
- engine:
- sh
- bash
source: |
kubectl get pods -n kube-system -l component=kube-apiserver -o jsonpath="{.items[*].spec.containers[*].command}" 2>/dev/null || \
kubectl get pods -n kube-system -l k8s-app=kube-apiserver -o jsonpath="{.items[*].spec.containers[*].command}" 2>/dev/null || \
kubectl get pods -n kube-system -o jsonpath="{.items[?(@.metadata.name.indexOf('kube-apiserver')>=0)].spec.containers[*].command}" 2>/dev/null || \
echo ""
matchers-condition: and
matchers:
- type: word
words:
- 'kube-apiserver'
- type: word
words:
- "{{argument}}"
negative: true
extractors:
- type: dsl
dsl:
- '"kube-apiserver configuration does not explicitly set " + argument + ". This may allow anonymous access."'
# digest: 490a004630440220019d7b1dd8d0b77ed0b9b6fa171afa88e474571b7a027ad8791c380cb864529602205064f1a46b4ce132d3ead43b5408fb7f403a3ceb376d9f9ba23a240056e297d3:922c64590222798bb761d5b6d8e72950