Symlink-Exchange 공격-runc-(CVE-2021-30465)

Public Date: May 18, 2021, 14:57
갱신됨 May 20, 2021, 23:32 - Chinese, Simplified 영어 (English) French Japanese
Resolved 상태
Important Impact

Insights vulnerability analysis

View exposed systems

Red Hat은 runc에서 발견된 취약점을 인지하고 있으며 이러한 취약점으로 인해 컨테이너를 배포할 수 있는 공격자가 컨테이너에서 호스트 시스템으로 빠져나갈 수 있습니다. 이 문제는 CVE-2021-30465로 지정되어 있으며 중요 (Important) 보안 영향을 미치는 것으로 분류하고 있습니다. SELinux를 강제 모드(Enforcing Mode)로 실행중인 경우 이 문제로 인한 영향이 감소됩니다.

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

  • Red Hat Enterprise Linux 8

  • Red Hat OpenShift Container Platform 4.x

  • Red Hat Enterprise Linux 7

  • Red Hat OpenShift Container Platform 3.x

Red Hat Enterprise Linux 플랫폼에서 지원되는 모든 Red Hat 제품도 영향을 받을 수 있습니다. 여기에는 RHEL 채널에서 패키지를 가져오는 제품이 포함됩니다.  이러한 제품 환경에서 기본 Red Hat Enterprise Linux runc 또는 docker 패키지가 최신 버전인지 확인하십시오.

현재 사용 중인 시스템에 보안 취약점이 있는지 확인하려면 아래의 진단 섹션을 참조하십시오.

runc에서 발견된 보안 취약점으로 인해 컨테이너에서 탈출하여 호스트 파일 시스템에 대한 액세스 권한을 얻을 수 있습니다.

이 취약점은 RHEL (Red Hat Enterprise Linux) 8에서 사용할 수 있는 runc 및 모든 종속 컨테이너 툴 패키지에 영향을 미칩니다. OpenShift Container Platform (OCP) 4.x도 cri-o를 통해 runc를 사용하므로 이 취약점의 영향을 받습니다.

이 취약점은 Extras 채널을 통해 제공되는 Red Hat Enterprise Linux 7에서 사용할 수 있는 docker 및 runc 패키지 모두에 영향을 미칩니다. OpenShift Container Platform (OCP) 3.x는 Red Hat Enterprise Linux 7 Extras의 패키지에 따라 다르며 보안 취약점의 영향을 받기도 합니다.

SELinux가 강제 모드에서 container-selinux 정책을 사용하고 있는 경우 취약점의 영향을 줄일 수 있습니다. container-selinux 정책은 기본적으로 RHEL 7 및 8과 OpenShift Container Platform 3.x 및 4.x에 설치 및 활성화되어 있습니다.

영향을 받는 RHEL 버전을 실행중인 고객은 에라타가 제공되는 즉시 RHEL 8 채널 및 RHEL 7 Extras 채널에서 RPM 업데이트를 적용하는 것이 좋습니다.  

영향을 받는 OpenShift Container Platform을 실행 중인 모든 고객은 에라타를 사용할 수 있는 즉시 해당 제품을 업데이트할 것을 권장합니다.

OpenShift Online 또는 OpenShift Dedicated 고객은 모든 클러스터의 모든 호스트에서 SELinux를 강제 모드로 사용하도록 설정되어 있습니다. 따라서 OSO/OSD는 향후 유지 관리 기간 동안 사용할 수 있는 보안 패치를 통해 이 문제로 인한 영향을 줄일 수 있을 것으로 예상됩니다.

runc 패키지는 symlink exchange라는 보안 공격에 취약하여 공격자가 무해해 보이는 컨테이너 설정을 요청하여 호스트 파일 시스템을 컨테이너에 바인딩할 수 있습니다.

runc 패키지는 단독으로 사용하여 컨테이너를 실행할 수 있지만 일반적으로 다른 패키지에서 컨테이너를 실행하는 데도 사용됩니다. RHEL 8에서 container-tools 모듈 패키지인 podman은 runc를 사용하므로 runc에 대한 종속성으로 인해 공격에 취약합니다.  OCP 4는 cri-o 패키지를 통해 runc를 사용하므로 공격에 취약합니다. RHEL-7에서 docker 패키지에는 runc가 내장되어 있으므로 이 문제에 취약합니다. OCP 3은 기본 구성에서 docker 패키지를 사용하므로 이 문제의 영향을 받습니다. OCP 3은 docker 대신 cri-o를 사용하도록 설정할 수 있으며이 경우에도 문제의 영향을 받습니다.

컨테이너가 시작되고 runc가 다른 컨테이너 (symlink-exchange 공격을 수행하는)와 공유되는 볼륨 내부에 마운트되는 경우 TOCTTOU (time-of-check-to-use) 결함으로 인해 마운트 대상을 심볼릭 링크와 교체하여 runc를 컨테이너 루트 파일 시스템 외부에 마운트하도록 속일 수 있습니다.

그러나 "/"에 "MS_SLAVE"가 적용된 마운트 네임 스페이스 내에서 발생하기 때문에 이것만으로는 보안에 영향을 미칠 수 없습니다 (마운트가 호스트에 표시되지 않고 컨테이너의 네임스페이스 안에 있는 "호스트 측 마운트"만 표시). 이를 악용하려면 마운트된 호스트 경로의 일부 하위 경로를 후속 마운트의 소스로 사용하는 구성에 추가 마운트 항목이 설정되어 있어야 합니다.

OpenShift Container Platform의 경우 이 문제는 볼륨을 소싱하는 최상위 디렉토리 (예 : "/var/lib/kubelet/pods/$MY_POD_UID/volumes/kubernetes.io~empty-dir")에 대한 심볼릭 링크를 볼륨에 생성하여 악용할 수 있으며 해당 심볼릭 링크를 마운트 대상으로 사용합니다. 

마운트 소스는 공격자가 제어하는 디렉토리이므로 후속 마운트가 발생하는 소스 디렉토리는 공격자가 제어하는 디렉토리입니다. 공격자는 먼저 볼륨 이름이 포함된 악의적인 소스 디렉토리 "/"에 대한 심볼릭 링크를 배치하고 컨테이너의 후속 마운트는 컨테이너에 "/"를 바인딩하고 마운트합니다.

SELinux가 강제 모드에서 container-selinux 정책을 사용하고 있는 경우 취약점의 보안 영향을 줄일 수 있습니다. container-selinux 정책은 기본적으로 OpenShift Container Platform 3.x 및 4.x에 설치 및 활성화됩니다.

OpenShift Dedicated (OSD)에서 각 고객은 하나 이상의 전용 클러스터를 가지고 있으며 이러한 클러스터를 공유하지 않습니다. 따라서 보안 취약점은 해당 고객 내부에서만 노출 제한됩니다.

OpenShift Online 및 OpenShift Dedicated 고객은 모든 클러스터의 모든 호스트에서 SELinux를 강제 모드로 사용하도록 설정함으로써 보안 취약점의 영향을 줄일 수 있습니다. (자세한 내용은 아래 FAQ 참조).

이 취약점은 공격자가 컨테이너를 배포할 수 있는 경우에만 악용될 수 있습니다. OSD에서 컨테이너를 배포하는 것은 인증되고 권한이 있는 사용자만 가능합니다.  Red Hat은 신뢰할 수 있는 컨테이너만 배포할 것을 권장합니다. (예: 신뢰할 수 있는 소스에서 가져온 컨테이너인지 확인, Health Index 상태가 양호한지 확인 [6])

Red Hat Developer Sandbox에는 다른 패키지의 전이적 종속성으로 취약한 패키지가 있습니다. 이는 사용되거나 필요하지 않으며 서비스에 영향을 미치지 않습니다. 향후 유지 관리 기간 동안 불필요한 패키지가 제거됩니다.

Red Hat OpenShift API Management 코드베이스에 취약한 패키지가 있습니다. 관리 서비스의 관리자만 배포 전에 확인되고 신뢰할 수 있는 컨테이너를 배포할 수 있습니다. 따라서 서비스는 영향을 받지 않았으며 보안 위험이 낮습니다. 향후 유지 관리 기간 동안 취약한 패키지가 업그레이드됩니다. 

영향을 받는 Red Hat 제품 버전을 실행 중인 모든 Red Hat 고객은 에라타를 사용할 수 있는 즉시 해당 제품을 업데이트할 것을 권장합니다. 사용 가능한 업데이트를 즉시 적용하고 필요에 따라 완화 조치를 활성화하십시오.  

제품

변형

구성 요소

권고/업데이트

OpenShift Enterprise 3

3.11

runc

[1]

OpenShift Enterprise 3

3.11

docker

[1]

OpenShift 4

4.7

runc

[1]

OpenShift 4

4.6

runc

[1]

OpenShift 4

4.5

runc

[1]

Red Hat Enterprise Linux 7


runc

[1]


Red Hat Enterprise Linux 7


docker

[1]

Red Hat Enterprise Linux 8

z-stream

container-tools:1.0/runc

[1]

Red Hat Enterprise Linux 8

z-stream

container-tools:rhel8/runc

[1]

Red Hat Enterprise Linux 8

z-stream

container-tools:2.0/runc

[1]

Red Hat Enterprise Linux 8

z-stream

container-tools:3.0/runc

[1]


[1] 업데이트가 릴리스된 후 권고/업데이트 링크가 추가됩니다.

[2] Red Hat Enterprise Linux Extended Update Support (EUS)서브스크립션이란 무엇입니까?

[3] Advanced mission critical Update Support (AUS)이란 무엇입니까?

[4] Red Hat Enterprise Linux SAP Solutions 서브스크립션이란 무엇입니까?

[5] 이 패치에 액세스하려면 활성 ELS (Extended Life-cycle Support) 서브스크립션이 필요합니다.  해당 계정에 활성 ELS 서브스크립션이 없는 경우 Red Hat 영업 부서 또는 영업 담당자에게 문의하십시오.

[6] Red Hat Enterprise Linux 기본 이미지를 사용하는 제품 컨테이너입니다. 기본 이미지는 이러한 취약점에 대한 수정 사항을 포함하도록 업데이트됩니다. 컨테이너가 최신 상태인지 확인하십시오. Red Hat Container Catalog의 일부인 Container Health Index를 사용하여 Red Hat 컨테이터의 보안 상태를 확인할 수 있습니다.

[7] RHEL 채널에서 패키지를 가져오는 제품입니다.  기본 Red Hat Enterprise Linux runc 또는 docker 패키지가 이러한 제품 환경에서 최신 버전인지 확인하십시오.

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

현재 버전: 1.0


Q: SELinux가 이 취약점을 완화시킬 수 있습니까?

A: SELinux가 강제 모드로 실행되고 있을 때 이 취약점은 여전히 악용될 수 있지만 취약점의 영향을 줄일 수 있습니다. 공격자는 SELinux 레이블이 있는 컨테이너 프로세스에 호스트 파일 시스템을 마운트할 수 있습니다. SELinux는 레이블에서 허용하지 않는 파일이나 소켓에 대한 액세스를 차단합니다. 하지만 이러한 취약점을 악용하여 호스트 운영 체제의 기밀성, 무결성 또는 가용성에 어느 정도 영향을 미칠 수 있습니다.

Q: 이 취약점이 악용될 가능성은 얼마나 됩니까?

A: 신뢰할 수 없는 사용자가 환경에서 컨테이너를 실행하도록 허용하거나 신뢰할 수 있는 사용자가 환경에 신뢰할 수 없는 컨테이너를 배포하도록 허용하면 이 문제의 영향을 받을 가능성이 높아집니다.

Red Hat은 이 문제를 보고해 주신 업스트림 Open Containers Security Team에 감사드립니다. 업스트림에서는 이 취약점을 발견한 Etienne Champetier님 에게도 감사드립니다.

Comments