← 질문 목록
#401깊이 0
루트 권한 컨테이너는 왜 위험한가?
인프라 · 보안심화
답변 연습
내 답변 적어보기접힘
이 브라우저에 자동 저장 · 0자
모범답안 확인하기내 답변 뒤에 열어보세요
컨테이너 안의 루트가 호스트의 루트와 같은 사용자라서다. 가르는 층이 뚫리거나 걷히면 그 번호가 그대로 힘이 된다.
- 공격자
그다음은 루트로 도는 앱입니다. 그 프로세스를 잡으면 컨테이너 안에서 무엇이든 할 수 있다
루트로 도는 앱그다음은 호스트입니다. 가르는 울타리를 넘으면 밖에서도 같은 사용자 번호로 움직인다
호스트
네임스페이스는 무엇을 볼 수 있는지를 가를 뿐 사용자 번호를 바꾸지 않는다. 따로 매핑을 켜지 않으면 안의 0번이 밖의 0번이다.
가르는 것이 네임스페이스만은 아니다. 능력을 덜어 내고 시스템 콜을 거르는 층이 겹쳐 있어서, 기본값의 컨테이너 루트는 호스트 루트만큼 할 수 있는 것이 아니다.
붙인 볼륨에서 바로 드러난다. 호스트 경로를 마운트한 컨테이너가 루트로 돌면 그 경로의 파일을 마음대로 고칠 수 있다.
막는 방법은 쉬운 쪽부터다. 이미지에 일반 사용자를 만들어 그것으로 돌리고, 파일 시스템을 읽기 전용으로 두고, 능력을 전부 뺀 뒤 필요한 것만 도로 붙인다.
낮은 포트 때문에 루트를 쓴다는 말은 이제 조건부다. 도커는 컨테이너 안에서 1024 아래를 열 수 있게 기본값을 바꿨고, containerd로 도는 쿠버네티스에서는 여전히 막힌다.
막히는 환경이면 포트를 여는 능력만 따로 붙이거나, 높은 포트로 옮기고 앞단에서 바꿔 준다.