runc - 악의적인 컨테이너 이스케이프 취약점 - CVE-2019-5736

Public Date: February 11, 2019, 08:13
갱신됨 March 8, 2019, 11:11 - Chinese, Simplified 영어 (English) Japanese
Resolved 상태
Important Impact

Insights vulnerability analysis

View exposed systems

악의적인 컨테이너가 호스트 시스템에서 root 레벨 액세스 권한을 얻을 수 있도록 허용하는 결함이 runc에서 발견되었습니다. 이 문제점은 CVE-2019-5736로 지정되어 있으며 중요 (Important) 보안 영향을 미치는 것으로 분류하고 있습니다.

배경 정보

runc에서 발견된 취약점으로 인해 악의적인 컨테이너를 허용하여 호스트 시스템에서 root 레벨의 액세스 권한을 얻을 수 있습니다.

이 취약점은 Red Hat Enterprise Linux 7에서 제공되는 docker 및 runc 패키지에 영향을 미치며 Extras 채널을 통해 제공됩니다. OpenShift Container Platform (OCP) 3.x는 Red Hat Enterprise Linux 7 Extras의 패키지에 따라 다르게 영향을 받습니다.

SELinux가 강제 모드 (enforcing mode)인 경우 이 취약점은 Red Hat Enterprise Linux 7에서 완화됩니다. OpenShift Container Platform 3.x에서는 SELinux를 강제 모드로 실행하는 것이 전제 조건입니다.

해결 방법

영향을 받는 Red Hat 제품 버전을 실행 중인 모든 고객은 에라타가 제공되는 즉시 RHEL 7 Extras 채널에서 RPM 업데이트를 적용할 것을 권장합니다. OpenShift Online 또는 OpenShift Dedicated 고객은 클러스터 전반의 모든 호스트에서 강제 모드 (enforcing mode)로 SELinux를 활성화합니다. OSO/OSD의 완화 방법의 일환으로 다음 예정된 유지 관리 기간 중에 보안 패치를 적용할 계획입니다.

감사의 말

Red Hat은 이 문제를 보고해 주신 업스트림 Open Containers Security Team에 감사드립니다. 이러한 취약점을 발견한 업스트림의 연구원 Adam Iwaniuk 및 Borys Popławski 님에게도 감사드립니다.

추가 자료

Red Hat 블로그

https://seclists.org/oss-sec/2019/q1/119

영향을 받는 제품

Red Hat 제품 보안팀은 본 취약점 (CVE-2019-5736)이 이번 업데이트에서 중요한 보안 영향를 미치는 것으로 분류하고 있습니다.

영향을 받는 Red Hat 제품 버전은 다음과 같습니다:

  • Red Hat Enterprise Linux 7

  • Red Hat OpenShift Container Platform 3.x

  • Red Hat OpenShift Online*

  • Red Hat OpenShift Dedicated*

*OpenShift Online 및 OpenShift Dedicated는 강제 모드로 SELinux를 사용하기 때문에 악용될 위험이 없습니다.


무단 액세스 시도 감지

SELinux를 강제 모드로 사용하는 고객은 감사 로그에서 AVC 이벤트를 통해 악용될 위험에 노출되어 있는지 확인할 수 있습니다. 예:

$ aureport -a

AVC Report

===============================================================

# date time comm subj syscall class permission obj result event

===============================================================

1. 11/02/19 00:00:00 script system_u:system_r:container_t:s0:c530,c886 2 file write system_u:object_r:container_runtime_exec_t:s0 denied 81359

위의 이벤트는 system_u:system_r:container_t 컨텍스트가 system_u:object_r:container_runtime_exec_t 컨텍스트로 파일에 쓰기 시도하는 프로세스를 설명하고 있으며 이는 Red Hat Enterprise Linux 7에서 기본 정책에 의해 실행 거부됩니다.

주의: SELinux가 허용 모드 (permissive mode)로 설정되어 있을 때 AVC 이벤트가 감사 로그에 계속 나타나더라도 시스템의 root 레벨 액세스 권한을 가진 공격자가 로그를 수정할 수 있으므로 이에 의존해서는 안됩니다.


취약점 진단

시스템의 취약성 여부 확인

시스템에 보안 취약점이 존재하는지 확인하십시오. 다음의 진단 스크립트를 사용하여 시스템이 현재 이러한 결함에 대해 취약한 상태인지 확인하십시오. 정규 스크립트임을 확인하려면 GPG 분리 서명을 다운로드할 수 있습니다.

수정 사항은 Red Hat Enterprise Linux Extras 채널에서 제공됩니다. OpenShift Container Platform 3.4 이상 버전을 사용하는 고객은 이러한 수정 사항을 적용해야 합니다.

이러한 취약점의 완화 방법으로 SELinux를 강제 모드 (enforcing mode)로 사용함으로써 이러한 취약점이 악용되는 것을 완전히 차단할 수 있습니다. Red Hat Enterprise Linux 7에서 SELinux는 기본적으로 강제 모드로 설정되어 있습니다.

SELinux가 기본 강제 모드에서 허용 모드로 변경된 경우 다음의 지침에 따라 SELinux를 강제 모드로 다시 설정할 수 있습니다:

SELinux 활성화

최신 버전으로 업데이트한 사용자의 경우 추가 완화 조치를 적용할 필요가 없지만 업데이트를 적용하지 않은 경우 완화 조치를 적용합니다.

OpenShift Online 및 OpenShift Dedicated에 대한 완화 조치는 이미 적용되어 있습니다. 보안 패치는 다음 예정된 유지 관리 기간 중에 배포됩니다.

OpenShift Container Platform 3.x에서는 SELinux를 강제 모드 (enforcing mode)로 실행하는 것이 전제 조건입니다.

영향을 받는 제품 업데이트

제품 패키지권고/업데이트
Red Hat Enterprise Linux 7 ExtrasdockerRHSA-2019:0304
Red Hat Enterprise Linux 7 Extrasdocker (1.12.x)보류 중
Red Hat Enterprise Linux 7 Extrasrunc

RHSA-2019:0303

Red Hat Enterprise Linux 7 Atomic Hostdocker보류 중
Red Hat Enterprise Linux 7 Atomic Hostrunc보류 중

docker (또는 docker-latest*)를 사용하는 고객은 runc 자체 버전이 번들로 제공되는 docker 패키지를 업데이트해야 합니다. CRI-O, podman 또는 runc에 의존하는 다른 컨테이너 엔진을 사용하는 고객은 runc 패키지를 업데이트해야 합니다. docker 및 runc에 대한 업데이트는 Red Hat Enterprise Linux 7 Extras 채널을 통해 제공됩니다.

OpenShift Container Platform (OCP) 3.9 이후 버전에서는 기본 구성에서 docker 1.13 버전을 사용하지만 CRI-O 를 사용할 수도 있습니다. OCP 3.9 이후 버전을 사용하는 고객은 Red Hat Enterprise Linux 7 Extras 채널에서 docker 또는 runc에 대한 각각의 업데이트를 적용해야 합니다.

OCP 3.4에서 3.7 버전은 docker 1.12 버전을 사용하며 Red Hat Enterprise Linux 7 Extras 채널에서도 사용합니다. docker 1.12 버전에 대한 보안 에라타는 현재 보류중입니다.

Red Hat Enterprise Linux Atomic Host 7은 Red Hat Enterprise Linux 7 Extras에서 동일한 'docker' 및 'runc' 패키지를 사용하지만 변경 불가능한 운영 체제 트리 (ostrees)를 통해 제공합니다. 업데이트된 'docker' 및 'runc' 패키지가 ostrees를 통해 제공되기 전 까지 Atomic Host 사용자는 Extras 채널에서 제공하는 패키지의 최신 버전을 다음과 같이 사용할 수 있습니다.

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux_atomic_host/7/html/installation_and_configuration_guide/managing_atomic_hosts#overriding_an_existing_rpm_package

*참고: docker-latest는 Red Hat Enterprise Linux 7.5에서 더이상 사용 및 지원되지 않습니다. docker-latest 패키지를 사용하는 고객은 Red Hat Enterprise Linux 7 Extras에 탑재된 docker 패키지로 업그레이드해야 합니다. 자세한 내용은 https://access.redhat.com/solutions/3092401에서 참조하십시오.

**참고: OpenShift Container Platform 3.9는 OCP 3.9 리포지터리에 자체적인 runc 버전 패키지를 제공하고 있습니다. Red Hat Enterprise Linux 7 Extras의 runc 버전은 OCP 3.9에 있는 버전 보다 우선합니다. OCP 3.9 클러스터를 실행하는 경우 Red Hat Enterprise Linux Extras 채널에서 runc를 업데이트해야 합니다.



Ansible 플레이북

패키지가 이미 설치되어 있는 경우 패키지를 업데이트하는 Ansible 플레이북을 사용할 수 있습니다. docker-latest의 지원이 종료되었기 때문에 docker-latest에 대한 스크립트를 실행할 수 없습니다. 정규 스크립트인지를 확인하기 위해 GPG 분리 서명을 다운로드할 수 있습니다.

플레이북은 HOSTS라는 변수에 대해 실행되며 다음과 같이 호출될 수 있습니다 ('hostname'이 인벤토리 파일에 정의되어 있다고 가정):

# ansible-playbook -e HOSTS=hostname cve-2019-5736-update_fixit.yml 	

이 플레이북에는 root 권한이 필요하므로 적절한 권한이 있는 계정을 사용해야 합니다.


Comments