用于通过 hostPath 挂载泄露 Kubernetes 服务账户令牌的概念验证漏洞利用;包含易受攻击的 Pod YAML 和 Python 令牌窃取脚本。
# vulnerable-pod.yaml - Pod that mounts /var/run/secrets/kubernetes.io/serviceaccount into a hostPath
apiVersion: v1
kind: Pod
metadata:
name: sa-token-leak
spec:
containers:
- name: app
image: nginx
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: sa-token
volumes:
- name: sa-token
hostPath:
path: /var/run/secrets/kubernetes.io/serviceaccount # Writable by container? Not needed.
type: Directory
Pod 通过 hostPath 挂载 Kubernetes 服务账户令牌目录,而不是使用默认的投射卷。如果同一节点上的其他 Pod 能够读取宿主文件系统,则该令牌会暴露给它们,从而允许横向移动和集群沦陷。
hostPath 挂载 SA 令牌目录绕过了内存中的令牌投射,并使令牌成为节点上的持久化文件。部署易受攻击的 Pod,然后从另一个具有主机访问权限的 Pod 中运行:
python exploit_sa_token.py
该令牌被读取后,可用于向 API 服务器进行身份验证。