POP SS 디버그 예외 - CVE-2018-8897 [중간] & CVE-2018-1087 [중요]

Public Date: May 4, 2018, 09:37
갱신됨 May 14, 2018, 21:34 - Chinese, Simplified 영어 (English) French Japanese
Resolved 상태
Important Impact

Insights vulnerability analysis

View exposed systems

Red Hat은 Linux 커널에서 POP SS 및 MOV SS 명령을 실행한 후에 트리거되는 예외를 처리하는 방식에 결함이 있음을 인지하고 있습니다. 이러한 문제로 인해 관련 패치를 적용하지 않은 시스템에서 DoS (서비스 거부)가 발생할 수 있습니다.

이러한 명령은 명령이 다음 명령의 경계에 도달할 때 까지 인터럽트, 데이터 중단점, 단일 단계 트랩 예외 전달을 보류합니다. 이는 Linux 커널 문제와 KVM 문제로 구분됩니다.

배경 정보

최신 프로세서는 시스템 설계자와 응용 프로그램 개발자가 소프트웨어 문제 해결에 사용할 수 있는 디버깅 인프라를 제공합니다. 여기에는 일련의 디버그 레지스터 (DR0 ... DR7) 및 기타 MSR (Machine Specific Registers)가 포함됩니다. 사용자는 메모리 액세스 (읽기 또는 쓰기), 명령 실행 및 I/O 포트 액세스를 포함하여 이벤트를 모니터하도록 이 레지스터를 구성할 수 있습니다. 프로그램 실행 중에 이러한 이벤트가 발생하면 프로세서는 디버그 예외 (#DB)를 발생시키고 실행 제어를 디버깅 소프트웨어 (예 : gdb)로 전송합니다. 이는 디버그 예외 정보를 캡처하여 개발자가 프로그램 실행 상태를 확인할 수 있게 합니다. 예를 들어, 주소 '0x4007c7'에서 읽기/쓰기 메모리 액세스를 모니터링하려면 사용자가 주소 '0x4007c7'을 디버그 레지스터 DR0 ... DR3 중 하나에 저장하고, 프로그램 실행 중 메모리 위치 '0x4007c7'에 액세스하면 프로세서의 메모리 액세스를 검출하도록 #DB를 발생시킬 수 있습니다. 디버그 레지스터에서 이러한 주소를 중단점이라고 합니다.

        Mov %DR0, 0x4007c7

일반적으로 예외는 명령의 경계에서 발생합니다. 예외를 발생시키는 명령 앞에 모든 명령은 실행 완료될 수 있고 예외를 발생시키고 있는 명령은 중단되므로 예외가 처리되면, 그 명령은 실행이 재개됩니다. 명령이 작업 스위치나 스택 스위치를 발생시키는 경우 이러한 예외는 명령이 실행된 후에 발생합니다. 특히 예외를 발생시킨 명령은 MOV SS 및 POP SS와 같은 작업을 완료할 수 있습니다.

감사의 말

Red Hat은 CVE-2018-8897을 보고해 주신 Everdox Tech LLC의 Nick Peterson님에게 감사드립니다.
Red Hat은 CVE-2018-1087을 보고해 주신 Andy Lutomirski님에게도 감사드립니다.

영향을 받는 제품

Red Hat 제품 보안팀은 커널 문제(CVE-2018-8897)의 보안 영향 수준을 중간으로 분류하고 있습니다.

Red Hat 제품 보안팀은 KVM 문제 (CVE-2018-1087)의 보안 영향 수준을 중요로 분류하고 있습니다.

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

  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux Atomic Host
  • Red Hat Enterprise MRG 2

공격 내용

일반적인 스택 전환에는 스택 세그먼트 셀렉터 (SS) 레지스터를 로드하는 작업과 스택 포인터 레지스터 (RSP)를 설정하는 작업 등 두 가지 작업으로 구성됩니다. 예를 들면 다음과 같습니다:

        Mov SS, [RAX]
        Mov RSP, RBP

위에서 설명한 MOV SS (또는 POP SS) 명령을 통해 스택을 전환할 때 프로세서는 모든 인터럽트 및 디버그 예외 (#DB)의 전달을 중지합니다. 이는 세그먼트 셀렉터 (SS) 레지스터를 로드한 후 (스택 포인터 (RSP) 레지스터가 적절히 배치되기 전에) 예외가 발생하면 인터럽트 처리기가 잘못된 스택 상태를 발견할 수 있기 때문입니다. 따라서 프로세서는 스택 전환이 실행된 후 첫 번째 명령 다음에 보류중인 인터럽트 및 디버그 예외를 전달합니다.

이제 중단점이 스택 전환 중에 Mov SS 명령에 의해 액세스할 수 있는 메모리 위치 (위의 [RAX])에 설정되었다고 가정합니다. 이 중단점은 스택 전환 작업 후 중단점 예외 (#BP)를 생성합니다. 이제 스택 전환 후의 첫 번째 명령이 SYSCALL, SYSENTER, INT3 등과 같이 현재 권한 수준 (CPL

Linux 커널의 KVM 하이퍼 바이저의 경우 스택 전환 작업 중 프로세서는 인터럽트 및 예외를 전달하지 않고 스택 전환이 실행 된 후 첫 번째 명령 이후에 전달합니다. 권한이 없는 KVM 게스트 사용자는 이 결함을 악용하여 게스트를 크래시하거나 잠재적으로 게스트의 권한을 상승시킬 수 있습니다.


시스템의 취약성 여부 확인

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

대응 방법

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


영향을 받는 제품 업데이트

제품패키지권고/업데이트
Red Hat Enterprise Linux 7 (z-stream)kernelRHSA-2018: 1318
Red Hat Enterprise Linux 7kernel-rtRHSA-2018: 1355
Red Hat Enterprise Linux 7.4 Extended Update Support**kernelRHSA-2018: 1345
Red Hat Enterprise Linux 7.3 Extended Update Support**kernelRHSA-2018: 1348
Red Hat Enterprise Linux 7.2 Update Services for SAP Solutions, & Advanced Update Support***,****kernelRHSA-2018: 1347
Red Hat Enterprise Linux 6 (z-stream)kernelRHSA-2018: 1319
Red Hat Enterprise Linux 6.7 Extended Update Support**kernelRHSA-2018: 1346
Red Hat Enterprise Linux 6.6 Advanced Update Support***,****kernelRHSA-2018: 1351
Red Hat Enterprise Linux 6.5 Advanced Update Support***kernelRHSA-2018: 1350
Red Hat Enterprise Linux 6.4 Advanced Update Support***kernelRHSA-2018: 1349
Red Hat Enterprise Linux 5 Extended Lifecycle Support*kernelRHSA-2018: 1353
Red Hat Enterprise Linux 5.9 Advanced Update Support***kernelRHSA-2018: 1352
RHEL Atomic Hostkernel보류
Red Hat Enterprise MRG 2kernel-rtRHSA-2018: 1354


*이 패치에 액세스하려면 활성 ELS 서브스크립션이 필요합니다. 사용 계정에 활성 ELS 서브스크립션이 없을 경우 보다 자세한 내용은 Red Hat 영업팀 또는 해당 지역 영업 담당자에게 문의하시기 바랍니다.

**이 패치에 액세스하려면 활성 EUS 서브스크립션이 필요합니다. 사용 계정에 활성 EUS 서브스크립션이 없을 경우 보다 자세한 내용은 Red Hat 영업팀 또는 해당 지역 영업 담당자에게 문의하시기 바랍니다.

Red Hat Enterprise Linux Extended Update Support 서브스크립션이란?

***RHEL AUS에서 이러한 패치에 액세스하려면 활성 AUS 서브스크립션이 필요합니다.

AUS (Advanced mission critical Update Support)란 무엇입니까?

****RHEL TUS에서 이러한 패치에 액세스하려면 활성 TUS 서브스크립션이 필요합니다.


Red Hat의 Linux Container는 커널 문제의 직접적인 영향을 받지 않지만 보안은 호스트 커널 환경의 무결성에 달려 있으므로 Red Hat은 최신 컨테이너 이미지를 사용할 것을 권장합니다. Red Hat Container Catalog에서 제공하는 Container Health Index를 사용하여 Red Hat 컨테이너의 보안 상태를 확인할 수 있습니다. 사용중인 컨테이너를 보호하려면 컨테이너 호스트가 이러한 보안 취약점에 대해 업데이트되었는지 확인해야 합니다. Red Hat은 이 보안 문제에 대한 업데이트 된 Atomic Host 버전을 출시했습니다.

완화 방법

공급 업체에서 제공하는 소프트웨어 업데이트를 적용하는것 외에는 알려진 완화 방법이 없습니다.

Comments