
hostPath 마운트를 통한 Kubernetes 서비스 계정 토큰 노출에 대한 개념 증명(PoC) 익스플로잇; 취약한 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가 기본 projected 볼륨 대신 hostPath를 사용하여 Kubernetes 서비스 계정 토큰 디렉터리를 마운트합니다. 이로 인해 동일한 노드의 다른 Pod가 호스트 파일시스템을 읽을 수 있으면 토큰이 노출되어, 측면 이동 및 클러스터 장악이 가능해집니다.
hostPath로 SA 토큰 디렉터리를 마운트하면 인메모리 토큰 프로젝션이 우회되고 토큰이 노드에 영구 파일로 남게 됩니다.취약한 Pod를 배포한 다음, 호스트 접근 권한이 있는 다른 Pod에서 다음을 실행합니다:
python exploit_sa_token.py
토큰이 읽혀 API 서버 인증에 사용될 수 있습니다.