상세 컨텐츠

본문 제목

공격자들이 리눅스 컨테이너를 탈출해 호스트의 루트 권한을 탈취할 수 있는 RunC 결점 발견

국내외 보안동향

by 알약(Alyac) 2019. 2. 14. 08:10

본문

RunC Flaw Lets Attackers Escape Linux Containers to Gain Root on Hosts


runC 컨테이너 코드에서 오픈소스 컨테이너 관리 시스템 다수에 영향을 미치는 심각한 보안 취약점이 발견 되었습니다. 이는 공격자들이 리눅스 컨테이너를 탈출하고 호스트 OS의 승인 되지 않은 루트 수준의 접근 권한을 얻을 수 있도록 허용합니다.


CVE-2019-5736으로 등록 된 이 취약점은 오픈 소스 보안 연구원들이 발견했으며, 지난 월요일 SUSE Linux GmbH의 runC 관리자가 이를 공개했습니다.


이 취약점은 컨테이너 생성 및 실행을 위한 가벼운 저레벨 커맨드라인 툴인 runC에 존재했습니다. 컨테이너는 호스트에서 단일 커널을 사용하여 격리 시스템 다수를 실행하기 위한 OS 수준의 가상화 메쏘드입니다.


Docker에서 만든 runC는 Docker, Kubernetes, ContainerD, CRI-O 및 기타 컨테이너 의존 프로그램의 디폴트 컨테이너 런타임이며 많은 주요 클라우드 호스팅 및 서버 제공자들이 사용하고 있습니다.


runC 컨테이너 탈출 취약점 [CVE-2019-5736]


연구원들은 사용자들이 패치할 시간을 주기 위해 이 취약점에 대한 기술적 세부사항 전체를 공개하지는 않았습니다. Red Hat은 권고문을 통해 “이 결점은 컨테이너를 실행할 때 runC가 시스템 파일 디스크립터를 처리하는 방식에 존재합니다.”라고 밝혔습니다.


따라서 컨테이너에 대한 루트 접근 권한을 얻은 특수하게 제작된 악성 컨테이너 또는 공격자가 이 결점을 악용하여(약간의 사용자 상호작용 포함) 해당 컨테이너를 실행하는 호스트 기기의 관리자 권한을 얻어 여기에서 실행 되는 수백 수천 개의 다른 컨테이너를 손상시킬 수 있게 됩니다.


컨테이너의 루트 권한을 얻기 위해서 공격자는 공격자가 제어하는 이미지를 사용하여 새로운 컨테이너를 생성하거나 공격자가 쓰기 권한을 가진 기존 컨테이너에 (docker exec)를 붙이면 됩니다.


“이후 악성 컨테이너는 이 결점을 악용해 runC 바이너리의 내용을 덮어쓰기하고 결국 컨테이너 호스트 시스템에서 임의 명령을 실행할 수 있게 됩니다.”


이 취약점은 얼마나 심각한가요?


Red Hat의 컨테이너 제품 담당 매니저인 Scott McCarty는 “기업 IT를 붕괴시킬 수 있는 수준의 공격 시나리오는 거의 없지만, 다양한 상호 연결 생산 시스템에 영향을 미치는 악용 사례가 꽤 있습니다.”라고 밝혔습니다.


runC 결점을 위한 보안 패치 업데이트 및 완화법


Red Hat에 따르면, 이 취약점은 SELinux에서 enforcing 모드가 활성화 된 상태일 경우 이 문제를 완화시킬 수 있습니다. 이는 RedHat Enterprise 리눅스, CentOS, Fedora에서 디폴트로 활성화 되어 있습니다.


runC의 관리자들은 이 보안 결점을 해결하기 위한 git 커밋을 발행했습니다. runC 위에 구축 된 모든 프로젝트는 해당하는 제품에 패치를 통합해야 합니다.


Debian과 Ubuntu는 그들의 리눅스 배포판이 이 결점에 취약하다는 것을 인정했습니다. 이 문제는 LXC, Apache Mesos 컨테이너 코드를 사용하는 컨테이너 시스템에도 영향을 미칩니다.


 Google, Amazon, Docker, Kubernetes를 포함한 주요 공급 업체들과 클라우드 서비스 제공 업체들은 이미 이 문제 해결을 위한 보안 업데이트를 발행하고 있습니다.


오픈소스 Kubernetes 관리 소프트웨어의 제작자인 Rancher는 Docker의 레거시 버전용 패치 스크립트를 공개했습니다.


현재 컨테이너를 사용 중이라면, 취약한 것으로 간주하고 가능한 빨리 수정된 runC 버전으로 이미지를 업그레이드하여 사이버 공격을 예방하시기 바랍니다.



출처 : 


관련글 더보기

댓글 영역