Translated message

A translation of this page exists in English.

Runc 회귀 문제 -docker-1.13.1-108-CVE-2016-8867, CVE-2020-14298, CVE-2020-14300

Public Date: June 23, 2020, 7:00 pm
Updated -
Resolved Status
Important Impact
Runc 회귀 문제 -docker-1.13.1-108-CVE-2016-8867, CVE-2020-14298, CVE-2020-14300

요약

Red Hat이 릴리스한 Red Hat Enterprise Linux 7 Extras에 포함된 docker 버전에서 이전에 수정된 여러 보안 취약점과 새로운 보안 취약점이 발견되었습니다. 이러한 문제가 있는 버전은 2020년 1월 초에 릴리스되었으며 2020년 2월 초 릴리스된 버전에서 문제가 수정되었습니다. Red Hat 제품 보안팀은 이러한 문제로 인한 보안 심각도 등급을 중요로 분류하고 있습니다. 보안에 취약한 docker 버전을 사용하고 있는 경우 최신 버전으로 업그레이드해야 합니다. 

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

  • Red Hat Enterprise Linux 7 Extras
  • Red Hat Enterprise Linux Atomic Host (버전 7.7.3.1 및 7.7.4)

다음과 같은 Red Hat 제품 및 서비스가 영향을 받을 수 있습니다. 이러한 제품의 보안은 docker에 따라 달라지므로 수정된 버전이 릴리스되기 전 단기간 동안 보안 취약점이 있는 버전이 Red Hat Enterprise 7 Extras 채널을 통해 설치되었을 수 있습니다.

  • Red Hat Ceph Storage 2
  • Red Hat Ceph Storage 3
  • Red Hat OpenStack Platform 10 (*)
  • Red Hat OpenStack Platform 13
  • Red Hat OpenShift Container Platform 3.11
  • Red Hat Quay
  • Microsoft Azure OpenShift v3

현재 사용 중인 시스템에 보안 취약점이 있는지 확인하려면 아래의 “진단” 섹션을 참조하십시오. 이러한 문제를 자동으로 해결할 수 있는 Ansible Playbook도 제공됩니다.

* Red Hat OpenStack Platform 10에서 docker 기능은 기술 프리뷰로 제공되었습니다. 

기술 요약

에라타 RHBA-2020:0053에서 2020년 1월 8일에 릴리스된 Red Hat Enterprise Linux 7 Extras 리포지토리의 docker 패키지 업데이트에는 이전 에라타를 통해 추가된 여러 패치가 누락된 보안 취약점이 있는 runc 버전이 포함되어 있었기 때문에 여러 가지 소프트웨어 버그 및 보안 수정 관련 회귀 문제가 발생했습니다.

이 업데이트에는 3 가지 보안 관련 문제가 포함되어 있습니다. 이러한 보안 문제 중 두 가지는 이전에 해결된 보안 취약점 (CVE-2020-14298 CVE-2020-14300)의 회귀 문제입니다. 세 번째 보안 취약점은 Red Hat Enterprise Linux 7 Extras의 이전 docker 패키지에는 영향을 미치지 않는 새로운 취약점 (CVE-2016-8867)입니다.

세 가지 문제는 모두 보안 심각도에서 중요한 영향을 미치는 것으로 평가되고 있습니다.

기술적 세부 사항 및 완화 방법

CVE-2020-14298

이 CVE는 이전에 RHSA-2019:0304를 통해 Red Hat Enterprise Linux 7 Extras docker 패키지에서 해결된 CVE-2019-5736의 수정 사항에 대한 회귀 문제로 정의됩니다. 이 문제로 인해 악성 컨테이너 또는 손상된 컨테이너가 동일한 호스트에서 실행되는 컨테이너 호스트 및 기타 다른 컨테이너를 손상시킬 수 있습니다.

SELinux의 강제 모드를 사용하면 이 문제의 영향을 완화할 수 있습니다. SELinux 정책은 컨테이너의 프로세스가 컨테이너에 속하지 않은 호스트 시스템의 파일과 다른 컨테이너에 속하는 파일을 덮어 쓰지 못하게 합니다. 호스트에서 권한을 추가로 확대하려면 SELinux를 우회하거나 비활성화할 수 있도록 다른 커널의 취약점을 악용해야 합니다. 또한 이 문제를 사용하여 보안 공격을 수행하려면 docker-runc 바이너리를 덮어 쓰기해야 합니다. 바이너리를 읽기 전용 파일 시스템에 배치하면 덮어 쓰기를 방지하고 이러한 취약점을 악용한 보안 공격을 막을 수 있습니다. Red Hat Enterprise Linux Atomic Host 7은 시스템 바이너리에 읽기 전용 파일 시스템을 사용하기 때문에 이 문제를 완화할 수 있습니다.

CVE-2020-14300

이 CVE는 이전에 RHSA-2017:0116을 통해 Red Hat Enterprise Linux 7 Extras docker 패키지에서 해결된 CVE-2016-9962의 수정 사항에 대한 회귀 문제로 정의됩니다. 이 문제로 인해 악성 컨테이너 또는 손상된 컨테이너가 동일한 호스트에서 실행되는 컨테이너 호스트 및 기타 다른 컨테이너를 손상시킬 수 있습니다.

SELinux의 강제 모드를 사용하면 이 문제의 영향을 완화할 수 있습니다. SELinux 정책은 컨테이너의 프로세스가 컨테이너에 속하지 않은 호스트 시스템의 파일과 다른 컨테이너에 속하는 파일을 덮어 쓰지 못하게 합니다. 호스트에서 권한을 추가로 확대하려면 SELinux를 우회하거나 비활성화할 수 있도록 다른 커널의 취약점을 악용해야 합니다.

CVE-2016-8867
앰비언트 기능을 잘못 설정하면 컨테이너의 root가 아닌 프로세스가 예기치 않은 기능으로 실행되어 해당 컨테이너 내부에서 권한을 root로 상승시킬 수 있습니다.  이 문제가 2016년에 처음 보고되었을 때 Red Hat Enterprise Linux 7 Extras가 제공하는 docker 패키지 버전에는 영향을 미치지 않았습니다. 

문제 회귀로 인해 docker-1.13.1-108.git4ef4b30.el7 패키지는 컨테이너 내에서 이러한 권한 상승으로 인한 보안 취약점의 영향을 받았습니다.  이 특정 빌드는 문제 회귀를 포함하는 버전으로 이 문제의 영향을 받는 유일한 버전입니다.

--cap-add 및 --cap-drop 옵션을 사용하여 컨테이너 내부에서 프로세스에 사용 가능한 기능을 제한하면 이 문제를 완화할 수 있습니다. 그러나 이러한 제한은 root가 아닌 프로세스와 root 프로세스 모두에 적용되므로 각 컨테이너마다 필요한 기능을 유지하면서 제거할 수 있는 기능을 결정해야하며 권한 상승이 발생하지 않도록 막을 수 없습니다. 따라서 Red Hat은 이러한 완화 솔루션을 사용하는 대신 보안 취약점을 해결한 docker 패키지를 설치하는 것을 권장합니다.

배경 정보

2020년 1월 8일, Red Hat은 docker-1.13.1-108.git4ef4b30.el7을 포함하는 RHBA-2020:0053 을 릴리스했습니다. 릴리스 직후 docker-1.13.1-108.git4ef4b30.el7에 여러 회귀 문제가 포함되어 있음을 발견하고 조사 과정에서 이러한 회귀 문제는 Red Hat 특정 브랜치가 아니라 마스터 브랜치에서 빌드되는 runc에 의해 발생하는 것으로 나타났습니다. 따라서 이 버전의 패키지에는 주요 패치 (버그 수정, 개선 사항 및 보안 수정)가 포함되지 않았습니다.

2020년 2월 4일, Red Hat은 docker-1.13.1-109.gitcccb291.el7_7을 포함하는 RHBA-2020:0427 을 릴리스했습니다. 여기에는 올바른 runc 브랜치를 기반으로 다시 빌드되었기 때문에 이전에 누락된 모든 패치가 포함되어 있습니다. 이 버전이 릴리스된 이후로 더 이상 회귀 문제가 발행하지 않았습니다.

2020년 6월 23일, Red Hat은 docker-1.13.1-162.git64e9980.el7_8을 포함하는 RHSA-2020:2653을 릴리스했습니다. 이 업데이트에는 이전에 릴리스된 docker-1.13.1-161.git64e9980.el7_8 (RHSA-2020:1234)과 비교하여 새로운 보안 수정 사항이 포함되어 있지 않습니다. 또한 docker-1.13.1-109.gitcccb291.el7_7과 비교하여 CVE-2020-14298, CVE-2020-14300, CVE-2016-8867과 관련된 새로운 보안 수정 사항도 포함되어 있지 않습니다. 위의 세 가지 보안 취약점은 docker-1.13.1-109.gitcccb291.el7_7에서 해결되었습니다. 이 에라타는 docker-1.13.1-108.git4ef4b30.el7 패키지에 의해 발생한 회귀 문제에 대해 고객이 명확하게 이해할 수 있도록 하기 위해 릴리스되었습니다. 이전에는 RHSA (Security Advisory) 대신 RHBA (bug fix advisory)를 통해서만 해결되었습니다. 또한 이 에라타는 보안 검사 도구와 관련된 문제를 명확하게 이해하기 위한 목적도 있습니다.

제품에 미치는 영향

Red Hat Enterprise Linux Atomic Host 버전 7.7.3.1 및 7.7.4와 Red Hat Enterprise Linux 7 Extras만이 docker 버전에 보안 취약점을 제공합니다. 하지만 Red Hat Enterprise Linux 7 Extras의 docker 패키지에 의존하는 다른 제품이나 서비스도 영향을 받을 수 있습니다. Red Hat Enterprise Linux 7 Extras를 사용하는 제품은 docker 패키지를 업데이트하여 이러한 취약점을 완화해야 합니다. 현재 사용 중인 시스템에 보안 취약점이 있는지 확인하려면 아래의 “진단” 섹션을 참조하십시오.

OpenShift Container Platform OCP 3.11

OCP 3.11에서 SELinux는 활성화되어 강제 모드가 설치 절차의 일부이기 때문에 CVE-2020-14298 및 CVE-2020-14300은 기본적으로 OCP 3.11에서 완화됩니다.
보안 취약점이 있는 docker 버전이 포함된 OCP 3.11을 설치하면 CVE-2016-8867의 영향을 받지만 각 컨테이너 내에서 권한 상승이 제한되므로 보안 취약점으로 인한 영향이 완화됩니다.

2020년 1월 8일과 2월 4일 사이에 3.11 클러스터를 설치하거나 업그레이드한 사용자의 경우 보안 취약점이 있는 docker 버전을 설치했을 가능성이 높으므로 가능한 신속하게 확인하십시오.

Red Hat Ceph Storage 버전 2 및 3

Red Hat Ceph Storage 버전 3은 Red Hat Enterprise Linux 7 Extras 리포지토리에서 제공하는 docker 패키지를 사용합니다. Red Hat Ceph Storage Dashboard 설치 시 docker 패키지는 Ceph Storage에서Grafana 및 Prometheus와 같은 컨테이너를 사용하여 애플리케이션을 생성, 배포, 실행합니다.
 
Red Hat Ceph Storage 2를 컨테이너 이미지로 배포할 때 Red Hat Ceph Storage 버전 2도 Red Hat Enterprise Linux 7 Extras 리포지토리의 docker를 사용합니다.

Red Hat Ceph Storage 2 및 3에서 SELinux 강제 모드가 기본적으로 활성화되어 있기 때문에 CVE-2020-14298 및 CVE-2020-14300를 완화할 수 있습니다. 그러나 이러한 두 가지 Ceph Storage 버전의 컨테이너에서 보안 취약점이 있는 docker 버전을 사용하는 경우 CVE-2016-8867의 영향을 받습니다.

Red Hay Quay

Red Hat Quay 설치 프로세스에서 Red Hat Enterprise Linux 7 Extras 리포지토리를 활성화하여 제품의 컨테이너 이미지를 실행하기 위한 컨테이너 런타임으로 docker를 설치합니다.  SELinux는 기본적으로 활성화되어 있으므로 CVE-2020-14298 및 CVE-2020-14300의 영향을 완화합니다. 세 번째 취약점인 CVE-2016-8867은 시스템에서 실행되는 컨테이너 (Red Hat Quay 컨테이너 포함)에 존재합니다.

Red Hat OpenStack Platform 버전 10 및 13

Red Hat OpenStack 버전 10과 Red Hat OpenStack 버전 13 모두에서 Red Hat Enterprise Linux 7 Extras 리포지터리를 활성화할 수 있으며 이 위치에서 docker가 설치됩니다. Red Hat OpenStack 버전 10의 docker 및 컨테이너 사용은 기술 프리뷰 기능입니다. Red Hat OpenStack 버전 13에서는 docker 및 컨테이너가 보다 광범위하게 사용되며 모든 서비스는 docker에 따라 컨테이너로 실행됩니다.

컨테이너 이스케이프 보안 취약점이 악용되면 이러한 서비스가 전체 Red Hat OpenStack 인프라를 관리하므로 보다 큰 영향을 받습니다. 다행히도 Red Hat OpenStack의 기본 설정에서 SELinux가 강제 모드로 실행되므로 컨테이너 이스케이프 가능성을 줄일 수 있습니다. 또한 오버 클라우드 서비스에 사용되는 이미지는 신뢰할 수 있으므로 악의적인 공격 위험이 줄어 듭니다.

서비스에 미치는 영향

Red Hat은 다음 서비스가 보안 취약점이 있는 docker 버전을 실행하고 있지 않음을 확인했습니다. 따라서 다음과 같은 서비스는 이러한 취약점의 영향을 받지 않습니다.

    •    Red Hat OpenShift Dedicated v3
    •    Red Hat OpenShift Dedicated v4
    •    Red Hat OpenShift Online
    •    Red Hat Managed Integration
    •    Quay.IO
    •    cloud.redhat.com
    •    Microsoft Azure OpenShift v4

Microsoft Azure OpenShift v3

버전 16 및 17의 Microsoft Azure OpenShift v3 클러스터를 사용하는 고객은 정기적인 업데이트로 인해 이러한 취약점의 영향을 받지 않는 것으로 확인되고 있습니다. 버전 15를 실행하는 두 종류의 이전 클러스터는 부분적으로 영향을 받습니다. OpenShift Container Platform 3.11에 대한 세부 정보를 참조하십시오.

    • CVE-2020-14298 및 CVE-2020-14300은 SELinux에 의해 완화됩니다.
    • CVE-2016-8867 취약점이 존재하지만 취약점은 각 컨테이너 내에서 권한 상승으로 제한됩니다.

Red Hat은 Microsoft와 협력하여 영향을 받는 고객에게 안내해 드리고 있습니다.

영향을 받는 제품의 업데이트

영향을 받는 Red Hat 제품 버전을 실행 중인 모든 Red Hat 고객은 에라타를 사용할 수 있는 즉시 해당 제품을 업데이트할 것을 권장합니다. 사용 가능한 업데이트를 즉시 적용하고 필요에 따라 완화 조치를 활성화하십시오. 인증된 클라우드 공급 업체 파트너를 통해 Red Hat 제품을 사용하는 고객은 관련 클라우드 공급 업체에게 자세한 정보를 문의하십시오.

제품패키지권고/업데이트
Red Hat Enterprise Linux 7 ExtrasdockerRHSA-2020:2653

진단

진단 스크립트를 사용하여 현재 사용 중인 시스템에 보안 취약점이 있는지 확인합니다. 정규 스크립트임을 확인하려면GPG 분리 서명을 다운로드합니다.

시스템의 보안 취약점 확인

버전 1.0

취약점 진단 스크립트는 현재 지원되는 Red Hat Enterprise Linux 버전을 대상으로 합니다. 진단 스크립트는 스크립트를 실행할 수있는 Red Hat Enterprise Linux의 계층 제품에서도 사용할 수 있습니다.

또는 간단한 쉘 명령을 사용하여 설치된 docker 패키지 버전을 확인할 수 있습니다.

$ rpm -q docker

출력된 버전이 docker-1.13.1-108.git4ef4b30.el7인 경우 이 문제의 영향을 받을 수 있습니다.

Ansible Playbook

이러한 문제를 자동으로 해결할 수 있는 Ansible Playbook "CVE-2020-14297-14300-update_fixit--2020-06-23-1248_0.yml"도 제공됩니다. 이 Playbook은 영향을 받는 docker 패키지를 업데이트합니다. Playbook을 사용하려면 HOSTS 변수로 업데이트할 호스트를 지정하십시오.

ansible-playbook -e HOSTS=container_host,dev01 CVE-2020-14297-14300-update_fixit--2020-06-23-1248_0.yml

Playbook의 진위 여부를 확인하려면 GPG 분리 서명을 다운로드합니다.

완화 자동화

버전 1.0

자주하는 질문 (FAQ)

Q: 업데이트된 docker 패키지를 설치한 후 일부 시스템을 재부팅하거나 다시 시작해야합니까?
A: docker 데몬은`yum update` 중에 다시 시작되어 실행중인 모든 컨테이너를 중지시킵니다. `yum update`를 실행하기 전에 실행했던 모든 컨테이너를 다시 시작해야합니다. OpenShift Container Platform 3.11에서 docker를 업데이트하려면 다음 지침을 따르십시오.

https://docs.openshift.com/container-platform/3.11/upgrading/os_upgrades.html

Q : docker 패키지 버전 docker-1.13.1-109.gitcccb291.el7_7 또는 docker-1.13.1-161.git64e9980.el7_8을 이미 사용중인 경우 docker-1.13.1-162.git64e9980.el7_8을 설치하여 이 문제를 해결해야 합니까?
A: 즉시 대응할 필요는 없습니다. CVE-2016-8867, CVE-2020-14298, CVE-2020-14300의 문제는 모두 docker-1.13.1-109.gitcccb291.el7_7에서 이미 해결되었습니다. RHSA-2020:2653에 포함된 업데이트는 사용자가 이러한 문제를 올바르게 이해하도록 하기 위한 것입니다. 자세한 내용은 위의 배경 정보를 참조하십시오.

Q: Red Hat OpenShift Container Platform OCP 4.x는 영향을 받습니까?
A: Red Hat OpenShift Container Platform 4.x는 docker 대신 CRI-O 컨테이너 엔진을 사용하므로 이 회귀 문제의 영향을 받지 않습니다.  Red Hat Enterprise Linux 7은 작업자 노드에서 실행할 수는 있지만 CRI-O를 사용하므로 이 취약점의 영향을 받지 않습니다.

Q: Red Hat OpenShift Container Storage (OCS)는 영향을 받습니까?
A: OCS 4.x는 OCP 4.x를 기반으로 사용하고 OCS 3.x는 OCP 3.x를 기반으로 사용합니다. 따라서 OCP는 OCS에 미치는 영향을 커버합니다.

Q: Red Hat Enterprise Linux 8은 영향을 받습니까?
A: Red Hat Enterprise Linux 8은 이 회귀 문제의 영향을 받지 않습니다. 이에는 취약한 docker 패키지 버전이 포함되어 있지 않습니다.

Q: 다른 공급 업체의 docker 패키지는 CVE-2020-14298 및 CVE-2020-14300의 영향을 받습니까?
A: 이 CVE는 Red Hat Enterprise Linux 7 Extras를 통해 Red Hat에서 제공하는 docker 패키지와 관련된 보안 회귀 문제에 할당되었습니다. 따라서 이러한 CVE는 Docker Inc.또는 기타 Linux 배포판에 제공하는 업스트림 빌드를 포함하여 다른 공급 업체에서 제공한 docker 빌드에는 적용되지 않습니다. CentOS와 같은 Red Hat Enterprise Linux 소스 코드를 기반으로하는 프로젝트는 적용 대상이 될 수 있습니다.

참고 자료

이 문제와 관련된 이전의 두 가지 보안 취약점에 대한 자세한 내용은 다음을 참조하십시오.

runc - Malicious container escape - CVE-2019-5736
On-entry container attack - CVE-2016-9962