인텔 CPU 해킹 취약점 - MDS, RIDL, Fallout, ZombieLoad

Intel CPU만 해당

인텔의 CPU에서 중요한 정보를 빼낼 수 있는 취약점 4개가 새로 발견됐다. AMD, ARM 등 다른 제조사의 CPU는 해당되지 않는다. 최신 9세대 CPU를 비롯해 거의 모든 인텔 CPU가 취약하다.

이 취약점들은 멜트다운(Meltdown), 스펙터(Spectre), 포어섀도우(Foreshadow) 등 2018년에 큰 문제가 됐던 CPU 취약점들의 연장선에 있다. speculative execution 기능의 결함에 근본을 두고 있기 때문이다. 그러나 이전 것들이 CPU에 장착된 캐시(cache) 메모리를 공격하는 것과 달리, CPU 내부의 버퍼(buffer)에서 처리 중인 데이터(in-flight data)를 유출하는 것이 특징이다.

이런 차이 때문에 기존 스펙터 류의 취약점에 대한 완화 조치는 소용이 없으며, 경우에 따라서는 이런 조치가 오히려 새 취약점 악용을 쉽게 만들기도 한다.

MDS 취약점

이번에 발견된 취약점은 인텔 CPU 내부의 버퍼(임시 저장 공간)에서 처리 중인 데이터를 빼내는 것이다. 이것을 인텔에서는 MDS(Microarchitectural Data Sampling)라고 부른다.

VM(가상 머신)이나 브라우저의 사이트 격리 같은 보호 장치, SGX enclave(인텔 CPU의 보안 영역)등 보안 수단을 모두 돌파한다. 따라서 클라우드 같이 여러 사람이 사용하는 환경에서는 다른 사람의 데이터를 빼낼 수 있다. CPU에서 처리 중인 모든 데이터가 대상이므로, 암호 등 중요 정보도 포함될 수 있다. 특정 정보만 골라서 노리는 것은 어렵다.

MDS 취약점은 모두 4개로 구성되는데, 공격 방법에 따라 RIDL, Fallout, ZombieLoad로 구별된다.

RIDL(Rogue In-Flight Data Load)은 Fill buffers와 Load Ports를 공격하는 것이다. 일반적인 악성코드 뿐만 아니라 공유된 클라우드 자원이나 웹 페이지의 자바 스크립트를 사용해 악용할 수 있다.

Fallout은 store buffers를 공격하는 것이다. KASLR(Kernel Address Space Layout Randomization) 같은 보안 수단을 돌파한다. 멜트다운을 해결한 최신 9세대 Core i9는 이전 모델에 비해 더 취약하다.

ZombieLoad도 fill buffers를 공격하는 방법이다.

위험도

인텔은 MDS 취약점의 위험도를 중간으로 평가했다. 우선 버퍼는 캐시 메모리보다 훨씬 작고, 들어있는 데이터 양도 적다. 게다가 훨씬 자주 비워진다(overwritten).

실전에서 악용하기 더욱 어려운 점은, 이런 방법으로는 특정 메모리 주소에 연결된 데이터를 추론하기 어렵다는 것이다. 즉 노리는 특정 정보의 위치를 확인하려면, 미리 대량의 데이터를 수집해 분석하는 작업이 필요하다는 것이다.

대책

이론적으로는 백신 등 보안 프로그램이 exploit code를 탐지할 수도 있다. 그러나 연구팀에 따르면, 실전에서의 탐지 가능성은 희박할 것으로 봤다.

하이퍼 스레딩 기능(Hyper-Threading Technology)을 끄면 위험을 현저하게 줄일 수 있다. 그러나 근본적으로 차단하지는 못한다.

인텔은 몇몇 현존 CPU와 앞으로 출시될 CPU는 하드웨어적인 완화 수단을 갖출 것이라고 밝혔다. 영향권에 있는 CPU들에겐 소프트웨어적인 완화 조치를 제안하고 있다. 그 중엔 낮은 권한의 코드로 바뀌기 전에, 버퍼를 비우는 방법도 포함된다. 운영체제 회사, 장치 드라이버 공급자, VM 모니터 개발자, SGX enclave에서 작동하는 프로그램 개발자, 시스템 관리자 등을 대상으로 상세한 가이드를 제시했다.

개인 사용자 측면에서는 운영체제 업데이트만 잘 해도 크게 걱정할 필요는 없을 것으로 생각한다. CPU 취약점을 이용하는 일련의 부채널 공격은 불특정 다수를 대상으로 하는 대규모 공격 방법으로는 적합하지 않다. 클라우드 서비스, 웹 호스팅 서버 등이 가장 문제가 될 것이다.

인텔은 이에 대응하는 마이크로코드 업데이트를 제공하고 있다. 마이크로소프트는 윈도우 차원에서 패치를 제공하고 있다. CPU 마이크로코드 업데이트도 윈도우 업데이트에 포함시켜 배포하고 있으므로, windows update만 잘 하면 되겠다.

하이퍼 스레딩을 끄는 것은 상당한 성능 저하를 가져오므로, 위험이 크지 않은 개인 사용자에게는 과잉대응이라고 생각한다.

중요한 서비스에는 2단계 인증을 설정하는 것도 대책의 하나라고 생각한다. 주제에서 벗어난 이야기처럼 들리겠지만 그렇지 않다. 개인 PC가 이런 공격에 노출될 확률은 별로 없지만, 우리가 이용중인 여러 서비스의 서버들은 좋은 표적이 된다. 여기에서 암호 등 주요 정보가 탈취될 수 있다. 이런 건 데이터 크기도 아주 작다. 조금만 샘플링(무작위 추출) 해도 누군가의 암호는 걸려들 수 있다. 아무리 강력하게 설정해도 암호만으로는 불안하다.

요즘 많은 사이트들이 해킹을 당하고, 개인 정보 유출 사실을 공지하고 있다. 일반적인 해킹이나 악성코드는 흔적을 남기기 때문에 사후에라도 알리고 대책을 수립할 수 있다. 그러나 MDS를 이용한 해킹은 로그 등에도 흔적을 남기지 않기 때문에 해킹 당한 사실조차도 모를 수 있다.


관련 자료
  1. 스펙터 & 멜트다운, 인텔CPU 해킹 취약점
  2. 포어섀도우(Foreshadow), 인텔 CPU 보안영역 해킹 취약점

참고 자료
  1. RIDL and Fallout: MDS attacks
  2. Microarchitectural Data Sampling / CVE-2018-12126 , CVE-2018-12127,CVE-2018-12130,CVE-2019-11091 / INTEL-SA-00233 
  3. ZombieLoad Attack

댓글

이 블로그의 인기 게시물

마이크로소프트 4K 무선 디스플레이 어댑터(MS WDA 3) 리뷰

와이파이(Wi-Fi) 보안 설정

엑셀 필터 상태에서 복사와 잘라내기