Quiz: Least Privilege
한국어 원문으로 표시합니다.
docker run --rm -v /etc:/host-etc alpine:3.20 sh -c 'echo "# injected" >> /host-etc/hosts' 가 호스트 파일을 실제로 수정합니다. 가장 정확한 설명은?
- 도커 데몬의 알려진 버그이며 최신 버전에서는 이미 막혀 있는 동작이다
- alpine 이미지에만 있는 취약점이다
>>추가 리다이렉션만 허용되고 덮어쓰기는 막혀 있다- 유저 네임스페이스를 쓰지 않으면 컨테이너의 UID 0 이 호스트의 UID 0 과 같으므로 마운트된 경로에 그 권한이 그대로 적용된다
Dockerfile 에 USER app 이라고 썼더니 쿠버네티스가 container has runAsNonRoot and image has non-numeric user (app), cannot verify user is non-root 로 파드를 거부했습니다. 올바른 수정은?
runAsNonRoot를 false 로 바꾼다- 파드에
runAsUser: 0을 명시한다 - 이미지에
/etc/passwd를 추가한다 USER 10001:10001처럼 숫자 UID 로 지정한다
비특권 사용자로 실행하는 서비스가 80번 포트를 열어야 합니다. 가장 단순하고 권장되는 해법은?
- 컨테이너를 root 로 되돌린다
- 앱 포트를 8080 으로 바꾸고 서비스 계층에서 80 으로 노출한다
--privileged를 붙인다NET_BIND_SERVICEcapability 를 추가한다
다음 중 컨테이너 기본 capability 세트(약 14개)에 포함되지 않는 것은?
- CAP_SYS_ADMIN
- CAP_CHOWN
- CAP_SETUID
- CAP_NET_RAW
CI 러너 컨테이너에 도커 소켓(/var/run/docker.sock)을 마운트하는 것이 --privileged 와 사실상 같은 위험으로 취급되는 이유는?
- 소켓 파일이 setuid 비트를 가지고 있기 때문
- 소켓 통신은 암호화되지 않기 때문
- 그 소켓으로 호스트 루트 파일시스템을 마운트한 특권 컨테이너를 새로 띄울 수 있기 때문
- 도커 소켓은 seccomp 프로파일을 우회하기 때문
CVE-2019-5736 과 CVE-2024-21626 의 공통점으로 가장 정확한 것은?
- 둘 다 런타임(runc) 의 버그였지만 컨테이너가 호스트와 같은 커널 아래 있기 때문에 호스트 침해로 이어졌다
- 둘 다 커널 취약점이었다
- 둘 다 이미지 레지스트리의 인증 문제였다
- 둘 다 seccomp 프로파일을 끄지 않으면 발생하지 않는다