포스팅 내용

국내외 보안동향

Docker에서 CVE-2018-15664 취약점 발견돼

Unpatched Flaw Affects All Docker Versions, Exploits Ready


모든 Docker 버전에서 공격자가 악용할 경우, 호스트 시스템 내 모든 파일을 읽고 쓸 수 있게 되는 레이스 컨디션(Race Condition) 결함이 발견되었습니다.


이 결함은 CVE-2018-15664로 등록되었으며, PoC 코드 또한 공개된 상태입니다.


해당 결함은 리소스 확인이 완료된 이후 할당된 프로그램이 해당 리소스를 사용하기 전, 리소스의 경로를 수정할 수 있는 기회를 해커들에게 제공합니다.


이는 TOCTOU(Time to Check Time to Use) 버그로 알려져 있습니다.


호스트 파일 액세스


이 취약점은 기본 TOCTOU 공격에 취약한 FollowSymlinkInScope 함수에 존재합니다. 


이 함수의 목적은 Docker 컨테이너 안에 프로세스가 존재하는 것으로 처리하여 안전한 방식으로 지정된 경로를 확인하는 것입니다.


이때, 확인된 경로는 즉시 사용되지 않으며 잠시 후에 사용됩니다. 


공격자는 이 잠깐의 틈을 추측하여 심볼릭 링크(Symlink) 경로를 추가하면 호스트에서 루트 권한으로 리졸브가 가능해집니다.


컨테이너와 로컬 파일시스템 사이의 콘텐츠를 복사할 수 있는 'docker cp' 유틸리티를 사용하면 취약점 익스플로잇이 가능합니다.


SUSE 시니어 소프트웨어 엔지니어인 Aleksa Sarai는 이러한 종류의 공격으로부터 보호받을 수 있는 방법은 없다고 밝혔습니다.


그리고, 실행 중인 컨테이너에서 "docker cp"를 허용하지 않는 방법이 있지만, FollowSymlinkInScope를 통한 특정 공격에만 도움이 된다고 말했습니다. 


또한, AppArmor를 통해 Docker 데몬을 제한하지 않는 이상, 해당 취약점이 호스트 파일 시스템에 영향을 미칠 수 있다고 밝혔습니다.


완화 방법 및 익스플로잇 스크립트


Sarai 연구원이 제시한 방법은 루트가 컨테이너 'rootfs' 환경에서 아카이브 작업이 실행 되도록 'chrootarchive'를 수정하는 것입니다. 


하지만 Docker의 핵심 부분이 변경되기 때문에 실현 가능성이 낮습니다.


가장 좋은 옵션은 파일 시스템을 사용 중일 때는 컨테이너를 일시 중지시키는 것입니다. 


모든 공격을 막을 수는 없지만, 기본적인 공격은 방어해낼 수 있습니다. 


해당 취약점에 대한 패치는 업스트림에 등록되었으나 아직 검토 중인 단계입니다.


또한 이 엔지니어는 읽기와 쓰기 용도의 익스플로잇 스크립트를 2개 만들었습니다. 


이 스크립트들은 symlink의 RENAME_EXCHANGE 바이너리를 "/"와 빈 디렉터리로 반복적으로 실행하여 레이스 컨디션을 발생시킵니다.


호스트 시스템에서 레이스 컨디션을 통해 임의의 콘텐츠를 읽기 위한 공격 코드의 성공률은 1%입니다. 


Sarai는 이 취약점에 대해 Docker 보안 팀과 논의한 결과 공개하는 것이 좋겠다는 결론을 내렸다고 밝혔습니다.




출처:

https://www.bleepingcomputer.com/news/security/unpatched-flaw-affects-all-docker-versions-exploits-ready/

https://seclists.org/oss-sec/2019/q2/131

티스토리 방명록 작성
name password homepage