TL;DR
- Docker의 Mac용 하이퍼바이저에서 컨테이너가 Bash 명령 세 줄로 호스트 파일시스템을 완전히 읽고 쓸 수 있는 취약점이 발견돼 수정됨.
- 취약점 CVE-2026-77179는
virtio-fs파일 서버가 경로 문자열을 다시 해석할 때 심볼릭 링크를 따라가면서 마운트 폴더 밖의 호스트 파일에 접근하는 문제임. - Docker Sandboxes 0.42.0과 Docker Desktop 4.88.0에 수정 사항이 포함됨.
- Docker Desktop은 설정에서 Docker VMM을 켠 경우에만 영향을 받으며, Docker VMM은 2026년 10월 말 기본값으로 전환될 예정임.
- Docker Sandboxes 사용자는
sbx --version으로, Docker Desktop 사용자는 설정과 버전으로 영향을 받는지 확인할 수 있음.
취약점
- 폴더를 컨테이너에 마운트하면 Docker의 가상 머신 관리자(VMM)는
virtio-fs를 사용하며, 파일 서버는 호스트에서 실행됨. - 게스트가 경로에 처음 접근할 때 조회 요청을 보내면 서버는 자체 관리용 번호인 nodeid를 응답함. 이후 게스트는 경로를 다시 보내지 않고 nodeid로 요청하므로, 서버는 매 요청마다 해당 파일을 다시 찾아야 함.
- 서버는 파일을 찾을 때 두 가지 방법을 사용함. 먼저 macOS의
volfs를 통해 아이노드(inode)로 찾고, 실패하면 파일을 처음 조회할 때 저장한 경로 문자열을 사용함. - 파일을 삭제하면
volfs경로가 사라지지만, 파일을 연 상태로 유지하면 nodeid는 남음. 이 둘이 맞물리면 서버에는 경로 문자열만 남게 됨. - 이후 게스트가 부모 폴더를 심볼릭 링크로 바꾸면, 서버는 문자열을 읽고 마운트된 폴더 안의 경로라고 판단해 요청을 허용함. 그러나 커널은 같은 문자열을 읽을 때 심볼릭 링크를 따라가 호스트의 마운트 폴더 바깥에 있는 파일을 엶.
익스플로잇
- 게스트는 읽거나 덮어쓸 호스트 파일을 선택함. 예시는
/Users/you/.zshenv임. pv폴더와 그 안에 대상 파일과 같은 이름의pv/.zshenv파일을 만듦.pv/.zshenv를 열어 둠. 조회 과정에서 서버가 nodeid를 부여하며, 열린 핸들이 서버의 nodeid 삭제를 막음.- 파일과 폴더를 삭제함. 이때
volfs경로도 사라져 서버에는 문자열만 남음. pv라는 이름으로/Users/you를 가리키는 심볼릭 링크를 만듦.- 2단계에서 만든 핸들을 통해 읽거나 씀. 서버가 경로 문자열을 다시 해석할 때
pv는 심볼릭 링크이며 경로의 마지막 이름이 아니므로, 커널이 링크를 따라가 요청이/Users/you/.zshenv에 도달함. - 같은 동작을 수행하는 Bash 명령은
pv를 만들고.canary파일을 연 뒤, 파일과 폴더를 삭제하고/Users/Shared를 가리키는 심볼릭 링크를 만든 다음 열린 파일 핸들을 통해CONFIRMED를 기록함.
공개 및 수정 일정
- 2026년 8월 12일 14:46 UTC: 취약점을
[email protected]에 보고함. - 2026년 8월 12일 21:54 UTC: 보고 약 7시간 뒤 접수 확인 답변을 받음.
- 2026년 8월 13일 22:16 UTC: Sailor 커밋
9f348c0이 생성됨. 이 커밋이 수정 사항이며 보고 약 31시간 뒤임. - 2026년 8월 14일 14:36 UTC: Docker가 취약점을 확인하고 수정 작업이 진행 중이며 CVE를 발급할 계획이라고 알림.
- 2026년 8월 24일: Docker Desktop 4.88.0에 Sailor 0.118.0이 포함됨.
- 2026년 9월 7일: Docker Sandboxes 0.42.0에 CVE-2026-77179 수정 사항이 포함됨.
- Sailor는 Docker 하이퍼바이저의 내부 명칭임.
- Docker 보안팀은 약 7시간 만에 답변하고 이틀 만에 취약점을 확인하는 등 신속하고 전문적으로 대응함. Docker Desktop 수정판은 8월 24일, Docker Sandboxes 수정판은 9월 7일에 출시됨.
영향 여부 확인
- Docker Sandboxes 사용자는
sbx --version을 실행해 0.42.0 이상인지 확인해야 함. - Docker Desktop 사용자는 4.88.0 이상을 사용해야 함. 설정의 General(일반) > Virtual Machine Manager(가상 머신 관리자)에서 Docker VMM이 선택돼 있고 버전이 4.88.0보다 낮으면 영향을 받음.
에이전트 샌드박싱
- 에이전트는 매일 신뢰할 수 없는 코드를 실행하며, 그 코드와 실행 중인 머신 사이에 놓인 유일한 보호 장치는 샌드박스임.
- Accomplish는 모든 에이전트, 모든 모델, 모든 클라우드에 사용할 수 있는 단일 환경을 구축한다고 밝힘.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요