인텔 CPU 취약점(Meltdown&Spectre) 분석 및 이스트시큐리티 대응상황
2018년 1월 4일, Jann Horn 등 보안연구원들은 ”Meltdown”(CVE-2017-5754)과 ”Spectre”(CVE-2017-5753 & CVE-2017-5715) 라고 명명된 2개의 CPU 취약점을 공개하였습니다. 해당 취약점들을 악용하면 공격자들이 사용자의 정보들을 유출시킬 수 있으므로 패치등의 조치를 취하시는 것이 안전합니다.
이스트시큐리티에서는 관련 취약점에 대한 분석을 진행중이며, 1차적으로 현재까지 확인된 내용을 공유드립니다. 추가 분석이 완료되는대로 추가포스팅을 올리거나 현재 글에 내용을 업데이트 할 예정입니다.
CPU 취약점 동작원리
최신 CPU들은 처리 속도를 조금이라도 더 향상시키기 위해서 여러 기술들을 도입하였는데, 그것들 중에서 이번 이슈와 관련되는 기술은 비순차적실행(Speculative Execution)과 분기 예측(Indirect Branch Prediction) 기술입니다.
이 기술은 이미 약 20년 전(1995년) 부터 사용하기 시작하였습니다.
프로세서는 한가지 명령에 대한 처리가 끝나면 다른 명령을 받기 전까지 어떠한 작업도 하지 않습니다. 하지만 최적화 기술이 적용된 최신 프로세서들은 명령을 받지 않아도 다음에 실행될 명령들을 예측하여 해당 명령을 처리하기 위해 필요한 데이터들을 CPU 캐시에 로드해 놓는 방법을 통해 CPU성능을 향상시킵니다.
<정상적인 프로세스 과정>
이 과정에서, 만약 컴퓨터가 올바르게 예측하여 예측한 명령이 처리된다면 CPU의 속도가 빨라지겠지만, 만약 잘못 예측을 하였다면 해당 작업을 취소하고 예측 전의 단계로 돌아가게 됩니다.
하지만 프로세서들의 파이프 라인이 예측 전의 상태로 돌아가지만, 예측한 명령을 실행하기 위해 CPU캐시에 로드해 놓았던 데이터들은 여전히 남아있게 됩니다.
<프로세스 과정 중 오류 발생>
예측실행 기능을 가진 CPU는, CPU 실행과정 중 명령 4가 필요한 메모리 로드 사이클은 명령 3이 정상 실행 여부와는 상관없이 예측하여 메모리 캐시에 로드시켜 놓으며, 이 과정에서 메모리의 적합성 여부는 판단하지 않습니다. 만약 명령 3의 예측과정에서 오류가 발생 되었다면, 명령 4는 실행되지 않지만, 명령 4를 수행하기 위해 필요한 데이터들은 이미 CPU 캐시에 로드되어 있는 상태가 됩니다. 이렇게 CPU 캐시에 로드된 데이터들 중에는 관리자 권한으로만 접근이 가능한 데이터들도 포함되어 있는 경우도 있는데, 이때 로드되어 있는 메모리들에 비정상적으로 접근하거나 권한이 없는 사용자가 접근을 하여도 모두 허용하게 됩니다.
그 이유는, CPU는 CPU 캐시에서 레지스터로 전송까지 일련의 매커니즘을 통하여 주소의 적합성 여부를 판단하는데, CPU 분기 예측 과정에서 오류가 발생하였고, CPU 캐시메모리로의 로드 까지만 실행되었으며 레지스터로의 전송 과정이 완료되지 않았기 때문에, 해당 캐시 메모리에 대한 어떠한 비정상적인 접근도 모두 허용하게 되는 것입니다.
Meltdown 취약점
Meltdown 취약점은 권한상승 취약점으로 현재까지는 인텔에서 생산된 CPU에만 존재하는 것으로 알려져 있습니다.
멜트다운은 인텔 microarchitectural을 타겟으로 하는 공격으로서, 비순차적인 실행 방법을 이용하는 사용자의 커널 메모리를 유출시킬 수 있습니다.
공격자는 멜트다운 취약점을 이용해 프로세서에 있는 권한 상승 취약점을 공격합니다. CPU의 예측 실행 기능을 이용하면 공격자가 메모리 보호를 우회할 수 있기 때문입니다
해당 취약점을 이용하면 사용자 공간에서 커널 메모리에 접근하도록 허용합니다. 이는 즉 사용자가 시스템 내부에 존재하는 보안 매커니즘(심지어 커널에 포함되어 있는 내용)과 관련된 다양한 코드 등에 접근할 수 있도록 허용하여 다양한 정보들이 유출될 가능성이 있습니다.
Spectre 취약점
Spectre 취약점은 Intel, ARM 및 AMD 프로세서에 존재하는 취약점으로, 프로세서로 하여금 실행해서는 안되는 코드를 실행하도록 유도하여 다른 어플리케이션 메모리 공간에 존재하는 정보를 유출시킬 수 있는 취약점입니다.
프로세서는 일부 조건 분기, 예를 들어 if else가 성립되지 않는 상황 등에서는 먼저 해당 조건 안에 있는 코드를 먼저 실행하며, 발생 조건이 맞지 않는다면 해당 결과를 버리게 됩니다.
Spectre 취약점은 이러한 특성을 이용한 것입니다. CPU가 분기가 맞는지 맞지 않는지 판단을 하기 전에 분기 내부에 포함되어 있는 코드(즉 공격자가 악의적인 목적으로 작성해놓은 코드)를 실행시킨다면 결과적으로 일부 데이터가 L1 cache에 저장되게 됩니다. 그 후 이 데이터에 접근한 시간을 통하여 어떠한 데이터가 캐시에 저장되었는지 추측한 후, 다시 역순으로 실행을 통해 자신의 메모리 경계선을 넘어 메모리를 읽어올 수 있습니다.
Meltdown 취약점과 Spectre 취약점 차이점
Meltdown 취약점과 Spectre 취약점은 모두 CPU 취약점 이지만, 두 취약점의 차이점은 분명합니다.
| Meltdown 취약점 | Spectre 취약점 |
아키텍쳐 | 인텔 | 인텔,ARM,AMD |
엔트리 | 해당 시스템에서 코드 실행 | 해당 시스템에서 코드 실행 |
메서드 | 인텔 권한 상승 + 예측 실행 | 브랜치 예측 + 예측 실행 |
영향 | 사용자 공간에서 커널 메모리 읽기 | 프로그램을 실행하는 다른 사용자로부터 메모리 읽기 |
대응 | 소프트웨어 패치 | 소프트웨어 패치 |
이스트시큐리티 알약 대응상황
윈도우 사용자들은 2017년 1월 3일날 발표된 보안패치 KB40568XX를 적용하면 Meltdown 취약점과 Spectre 취약점을 해결할 수 있습니다.
하지만 해당 보안패치 적용 시 일부 제품들과 호환성 문제 때문에 BSOD가 발생하는 경우가 확인되었고, 이에 MS에서는 자동업데이트가 아닌 레지스트리가 셋팅되어 있는 고객들에 한해서만 패치를 내려준다고 밝혔습니다.
레지스트리값 :
Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWARE\Microsoft\Windows\CurrentVersion\QualityCompat" Value="cadca5fe-87d3-4b96-b7fb-a231484277cc" Type="REG_DWORD"
현재 이스트시큐리티는 당사의 알약 제품군과 KB40568XX 보안패치와의 호환성 검증을 진행중에 있으며, 패치를 준비중에 있습니다. 상세 일정은 다음과 같습니다.
(예상치 못한 상황 발생시에는 패치일정이 연기될 수 있음을 미리 감안 부탁드립니다.)
※ 알약 공개용 : 1월 10일 예정 ※ 알약 기업용/공공기관용/교육용 : 1월 11일 예정 |
또한 KB40568XX 보안패치를 위한 자동 레지스트리 셋팅 프로그램을 제공해 드리오니, 빠른 보안패치를 원하시는 고객분들은 해당 프로그램을 내려 받아 실행해 주시면 됩니다.
만약 해당 레지스트리 셋팅 프로그램 실행 후 블루스크린이 발생한다면 해당 업데이트 파일을 삭제해 주시면 됩니다.
삭제방법
1. 안전모드로 부팅
2. 제어판 – 프로그램 제거 클릭
3. Kb4056892 업데이트 제거 (Windows 10 Version 1709 for 32-bit Systems 기준)
* 다른 버전 OS의 KB 번호는 해당 링크 참고
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV180002
주요 제품군 패치 대응 상황 공유
▶ 레드헷(Redhat)
레드햇에서 제공하는 업데이트 패치 적용
▶ 구글 크롬(Chrome) 브라우저
1) 크롬 브라우저를 실행합니다.
2) 주소창에 chrome://flags/#enable-site-per-process를 입력합니다.
3) 사이트 격리 옆에있는 ‘활성화’ 버튼을 클릭합니다(해당 버튼이 안보일 경우 크롬 업데이트 필요)
4) 크롬 브라우저를 재시작 합니다.
▶ VMware
ESXi 5.5, 6.0 및 6.5 버전은 VMware에서 제공하는 패치 설치
Workstation 12.x는 12.5.8 버전으로 업데이트
Fusion 8.x는 8.5.9 버전으로 업데이트
▶기타 벤더사들 관련 보안공지
Intel
https://newsroom.intel.com/news/intel-responds-to-security-research-findings/
https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00088&languageid=en-fr
Microsoft
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV180002
Amazon
https://aws.amazon.com/de/security/security-bulletins/AWS-2018-013/
ARM
https://developer.arm.com/support/security-update
Android
https://source.android.com/security/bulletin/2018-01-01
https://googleprojectzero.blogspot.co.at/2018/01/reading-privileged-memory-with-side.html
https://www.chromium.org/Home/chromium-security/ssca
MITRE
http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5715
http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5753
http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2017-5754
Xen
http://xenbits.xen.org/xsa/advisory-254.html
Mozilla
https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/
AMD
https://www.amd.com/en/corporate/speculative-execution
NVIDIA