VHOST-NET 게스트에서 호스트로의 탈출 - 커널 보안 취약점 - CVE-2019-14835

Public Date: September 18, 2019, 14:38
갱신됨 October 2, 2019, 10:06 - Chinese, Simplified 영어 (English) French Japanese
Resolved 상태
Important Impact

Insights vulnerability analysis

View exposed systems

요약  

Linux 커널의 네트워크 가상화 기능에서 가상 머신 게스트의 실시간 마이그레이션 중에 악용될 수 있는 버퍼 오버 플로우 취약점이 발견되었습니다. 권한있는 게스트 사용자는 라이브 마이그레이션 중에 잘못된 길이의 디스크립터를 호스트에 전달하여 호스트에서 권한을 상승시킬 수 있습니다.

세부 사항 및 배경 정보 

이 문제점은 CVE-2019-14835로 지정되어 있으며 중요 (Important) 보안 영향을 미치는 것으로 분류하고 있습니다.

이 취약점은 게스트의 라이브 마이그레이션 중에만 악용될 수 있습니다. 패치 및 완화 방법은 아래에 자세히 설명되어 있습니다.


CVE-2019-14835 - kernel: vhost-net: 마이그레이션 중에 게스트에서 호스트로의 커널 탈출

Linux 커널의 네트워크 가상화 기능에서 가상 머신 게스트의 실시간 마이그레이션 중에 악용될 수 있는 버퍼 오버 플로우 취약점이 발견되었습니다. 특정 액세스 권한을 갖는 게스트 사용자는 라이브 마이그레이션 중에 잘못된 길이의 디스크립터를 호스트에 전달하여 호스트에서 권한을 상승시킬 수 있습니다. 이러한 취약점은 게스트의 라이브 마이그레이션이 설정되어 있지 않은 단일 호스트 시스템에는 영향을 미치지 않습니다.

감사 인사

Red Hat은 Tencent Blade Team의 Peter Pi님에게 감사의 말씀을 전합니다.

참고 자료  

https://www.openwall.com/lists/oss-security/2019/09/17/1

https://www.redhat.com/en/blog/introduction-virtio-networking-and-vhost-net

https://www.redhat.com/en/blog/deep-dive-virtio-networking-and-vhost-net 

https://bugzilla.redhat.com/show_bug.cgi?id=1750727

영향을 받는 제품

Red Hat 제품 보안팀은 본 취약점이 중요한 보안 영향을 미치는 것으로 평가하고 있습니다.

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

  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux 8
  • Red Hat Virtualization 
  • Red Hat OpenStack Platform (이미지와 함께 제공되는 커널) 
  • Container-Native Virtualization (CNV)

Red Hat의 Linux 컨테이너는 가상화 문제의 직접적인 영향을 받지 않지만 보안은 호스트 커널 환경의 보안 문제에 따라 달라집니다. Red Hat은 최신 버전의 컨테이너 이미지를 사용할 것을 권장합니다. Red Hat Container Catalog의 일부인 Red Hat Container Catalog를 사용하여 Red Hat 컨테이터의 보안 상태를 확인할 수 있습니다. 사용 중인 컨테이너의 개인 정보를 보호하려면 컨테이너 호스트 (예: Red Hat Enterprise Linux, Red Hat CoreOS 또는 Atomic Host)에 이러한 보안 문제를 해결하는 업데이트가 있는지 확인해야 합니다. Red Hat은 이러한 보안 문제를 위해 업데이트된 Atomic Host를 출시했습니다.

취약점 진단

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

시스템의 취약성 여부 확인

현재 버전: 1.0


해결 방법

영향을 받는 Red Hat 제품 버전을 사용 중인 모든 Red Hat 고객은 관련 패치가 릴리스되는 즉시 업데이트할 것을 권장합니다. 즉시 적절한 업데이트를 적용하십시오.

알림

이 취약점의 악용 수준이 낮기 때문에 현재 시스템에서 취약점이 성공적으로 실행되었는지 감지할 수 있는 확실한 방법이 없습니다.

Red Hat Product Security는 멀티 테넌트 워크로드를 지원하는 시스템에 대한 정보를 참조할 것을 강력히 권장합니다. 게스트 마이그레이션 기능이 필요한 우선 순위가 높은 시스템의 패치를 확인하십시오.

Red Hat Enterprise Linux 7 이상 지원 버전을 사용하는 고객의 경우 kpatch를 사용할 수 있습니다. kpatch를 받으려면 지원 케이스를 작성하십시오.

kpatch에 대한 자세한 내용은 Is live kernel patching (kpatch) supported in RHEL 7 and beyond?에서 참조하십시오.

영향을 받는 제품 업데이트

제품 패키지권고/업데이트
Red Hat Enterprise Linux 8 (z-stream)kernelRHSA-2019:2827
Red Hat Enterprise Linux 8kernel-rtRHSA-2019:2828
Red Hat Enterprise Linux 7 (z-stream)kernelRHSA-2019:2829
Red Hat Enterprise Linux 7kernel-rtRHSA-2019:2830
Red Hat Enterprise Linux 7kpatch-patchRHSA-2019:2854
Red Hat Enterprise Linux 6 (z-stream)kernelRHSA-2019:2863
Red Hat Virtualization 4.3redhat-virtualization-hostRHSA-2019:2889
Red Hat Virtualizationredhat-virtualization-host

보류

완화 방법

옵션 #1 vhost-net 비활성화

게스트별로 Vhost-net 기능을 비활성화할 수 있습니다. VHOST-NET 비활성화를 참조하십시오.

표준 블랙리스트 기술을 사용하여 영향을 받는 코드가 포함 된 'vhost_net'이라는 커널 모듈을 블랙리스트에 추가할 수 있습니다. 자세한 내용은 How do I blacklist a kernel module to prevent it from loading automatically?에서 참조하십시오. 

변경 사항을 적용하려면 vhost-net 기능을 사용하여 게스트를 다시 시작해야합니다.

옵션 #2 게스트 라이브 마이그레이션 비활성화

이 취약점은 게스트의 라이브 마이그레이션 수행 시에만 발생합니다. 자동 마이그레이션을 완전히 비활성화하거나 게스트를 다른 호스트로 수동으로 마이그레이션하지 않도록 하면 취약점이 악용되는 것을 방지할 수 있습니다.

CNV - 라이브 마이그레이션 지원 비활성화

kubevirt 네임 스페이스에 있는 kubevirt-config 설정 파일의 data: feature-gates:에서 "LiveMigration" 필드를 삭제하여 라이브 마이그레이션 기능을 비활성화합니다.

작업 순서
kubevirt-config 설정 파일을 편집하고`feature-gates` 줄에서 LiveMigration을 삭제합니다.

$ oc edit configmap kubevirt-config -n kubevirt
...
data:
  feature-gates: "LiveMigration"
위의 줄에서 "LiveMigration"을 삭제합니다.

변경 사항을 적용하려면 virt-api 및 virt-controller pod를 다시 시작해야합니다.

$ oc delete pod virt-api -n kube-system
$ oc delete pod virt-controller -n kube-system

Red Hat Virtualization - 자동 마이그레이션 비활성화

클러스터 수준 또는 별도의 게스트 시스템에서 마이그레이션을 비활성화할 수 있습니다.  일반적으로 Red Hat Virtualization은 로드 측정, 호환성, 복원력 및 가용성 정책에 따라 게스트를 클러스터 내의 다른 호스트로 자동 마이그레이션합니다.  클러스터 내의 호스트가 유지 관리 모드로 설정되어 있을 때 게스트를 마이그레이션할 수도 있습니다.

자동 마이그레이션 정책은 클러스터 수준 또는 호스트 별 설정에서 제어할 수 있습니다.

  • 클러스터에서 복원 정책 을 “가상 시스템을 마이그레이션하지 않음”으로 설정하면 해당 클러스터 내의 모든 가상 머신이 마이그레이션되지 않습니다.  자세한 내용은 Administration Guide: Migration Policy Settings 에서 참조하십시오.
  • 개별 게스트를 특정 호스트에 고정하거나 마이그레이션 옵션을 “마이그레이션을 허용하지 않음”으로 설정하면 개별 게스트가 마이그레이션되지 않습니다.  자세한 내용은 Management Guide: Preventing Automatic Migration of a Virtual Machine에서 참조하십시오.

호스트가 유지 관리 모드로 전환될 때 게스트가 마이그레이션되지 않도록하려면 게스트를 “마이그레이션을 허용하지 않음”으로 설정하거나 유지 관리 모드로 전환하기 전에 해당 호스트의 모든 게스트를 종료하십시오.

고객은 이 문제를 해결하기 위해 위험 기반 접근 방식을 사용하는 것이 좋습니다. 높은 수준의 보안 및 신뢰가 요구되는 시스템을 먼저 처리해야 하며 악용 위험을 줄이기 위해 대처 방안이 해당 시스템에 적용될 때 까지 신뢰할 수 없는 시스템과 격리해야 합니다.

성능에 미치는 영향

수정 사항이 포함된 릴리스로 커널을 업데이트해도 성능에 별다른 영향을 미치지 않습니다.

vhost-net을 비활성화하는 완화 기능을 사용하면 성능에 영향을 줄 수 있습니다. 실제로 시스템 성능에 미치는 영향은 시스템의 네트워크 로드에 따라 다릅니다.

Ansible Playbook

취약한 커널 모듈이 로드되지 않도록하는 완화 Playbook을 사용할 수 있습니다. 이 Playbook은 시스템을 재부팅하여 관련 모듈이 언로드되도록합니다. Playbook을 사용하려면 HOSTS 변수에 대상 시스템의 인벤토리 이름을 지정합니다. 예를 들면 다음과 같습니다.

ansible-playbook -e HOSTS=myhost1,myhost2 CVE-2019-14835_blacklist_mitigate.yml

분리된 GPG 서명을 사용할 수 있습니다.


Ansible의 완화 방법 사용

현재 버전: 1.0

Comments