컨테이너/K8s 진단 - Docker Socket 마운트
점검 결과
| Pod/컨테이너 | Docker Socket | 평가 |
|---|
| ci-runner | 마운트됨 | 위험! |
| deploy-agent | 마운트됨 | 위험! |
| app-api | 마운트 안 됨 | 안전 |
Docker Socket 마운트 분석
apiVersion: v1
kind: Pod
metadata:
name: ci-runner
spec:
containers:
- name: runner
image: runner:latest
volumeMounts:
- name: docker-sock
mountPath: /var/run/docker.sock
volumes:
- name: docker-sock
hostPath:
path: /var/run/docker.sock
type: Socket
[위험한 설정]
- Docker Socket을 컨테이너에 마운트
- 호스트의 Docker daemon에 접근 가능
- 임의의 컨테이너 생성/삭제 가능
- 호스트 파일시스템 전체 접근 가능
[공격 시나리오]
1. 컨테이너 내에서 Docker Socket 접근
2. docker run --privileged -v /:/mnt ...
-> 호스트 전체를 호스트 경로 /mnt에 마운트
3. /mnt에서 호스트 파일시스템 수정
4. 호스트 탈출 및 권한 상승
5. 다른 Pod/컨테이너 제어
# docker.sock 확인
docker ps 2>/dev/null && echo "Docker Socket 접근 가능"
# 악의적 사용 예
docker run -d --privileged -v /:/rootfs -w /rootfs alpine
docker exec /bin/sh
cd /rootfs
ls -la /bin/bash
조치 가이드
- Docker Socket 마운트 금지: 보안 정책으로 차단
- 대체 솔루션: Kaniko, Buildah 등 권한 축소 빌드 도구
- Pod Security Policy: hostPath 제한