2024-04-20 12:50 (토)
인텔 CPU 취약점 Meltdown과 Spectre 분석 그리고 대응방안
상태바
인텔 CPU 취약점 Meltdown과 Spectre 분석 그리고 대응방안
  • 길민권 기자
  • 승인 2018.01.08 14:02
이 기사를 공유합니다

해당 취약점들 악용하면 공격자들이 사용자의 정보들을 유출시킬 수 있어

Jann Horn 등 보안연구원들은 ”Meltdown”(CVE-2017-5754)과 ”Spectre”(CVE-2017-5753 & CVE-2017-5715)라고 명명된 2개의 인텔 CPU 취약점을 공개했다. 해당 취약점들을 악용하면 공격자들이 사용자의 정보들을 유출시킬 수 있어 패치를 적용해야 안전할 수 있다.

현재까지 보안분석가들이 분석한 내용을 공유하면 다음과 같다.

◇인텔 CPU 취약점 동작원리

최신 CPU들은 처리 속도를 조금이라도 더 향상시키기 위해서 여러 기술들을 도입했는데, 그들 중에서 이번 이슈와 관련되는 기술은 비순차적실행(Speculative Execution)과 분기 예측(Indirect Branch Prediction) 기술이다.

이 기술은 이미 약 20년 전(1995년)부터 사용하기 시작했다.

프로세서는 한가지 명령에 대한 처리가 끝나면 다른 명령을 받기 전까지 어떠한 작업도 하지 않는다. 하지만 최적화 기술이 적용된 최신 프로세서들은 명령을 받지 않아도 다음에 실행될 명령들을 예측해 해당 명령을 처리하기 위해 필요한 데이터들을 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 취약점 이지만, 두 취약점의 차이점은 아래와 같이 분명하다.

3.jpg
이에 이스트시큐리티 알약측은 다음과 같은 대응방법을 공개했다.

윈도우 사용자들은 2017년 1월 3일날 발표된 보안패치 KB40568XX를 적용하면 Meltdown 취약점과 Spectre 취약점을 해결할 수 있다.

하지만 해당 보안패치 적용 시 일부 제품들과 호환성 문제 때문에 BSOD가 발생하는 경우가 확인되었고, 이에 MS에서는 자동업데이트가 아닌 레지스트리가 셋팅되어 있는 고객들에 한해서만 패치를 내려준다고 밝혔다.

△레지스트리값

Key="HKEY_LOCAL_MACHINE" Subkey="SOFTWAREMicrosoftWindowsCurrentVersionQualityCompat" Value="cadca5fe-87d3-4b96-b7fb-a231484277cc" Type="REG_DWORD"

현재 이스트시큐리티는 당사의 알약 제품군과 KB40568XX 보안패치와의 호환성 검증을 진행중에 있으며, 패치를 준비중에 있다고 전했다.

또한 KB40568XX 보안패치를 위한 자동 레지스트리 셋팅 프로그램을 제공해, 빠른 보안패치를 원하는 고객들은 해당 프로그램을 내려 받아 실행하면 된다고 밝혔다.

만약 해당 레지스트리 셋팅 프로그램 실행 후 블루스크린이 발생한다면 해당 업데이트 파일을 삭제해 주시면 된다.

삭제방법은 다음과 같다.

1. 안전모드로 부팅

2. 제어판 – 프로그램 제거 클릭

3. Kb4056892 업데이트 제거 (Windows 10 Version 1709 for 32-bit Systems 기준)

◇주요 제품군 패치 대응 상황 공유

△레드헷(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 버전으로 업데이트

[정보출처. 이스트시큐리티]

★정보보안 대표 미디어 데일리시큐!★


■ 보안 사건사고 제보 하기

▷ 이메일 : mkgil@dailysecu.com

▷ 제보 내용 : 보안 관련 어떤 내용이든 제보를 기다립니다!

▷ 광고문의 : jywoo@dailysecu.com

★정보보안 대표 미디어 데일리시큐 / Dailysecu, Korea's leading security media!★