네른

[정보보안] 4. CPU Meltdown 본문

궁금/정보보안

[정보보안] 4. CPU Meltdown

네른 2018. 1. 11. 16:55

[정보보안] 4. CPU Meltdown


요즘 가장 핫한 취약점 하면 역시 Meltdown이 아닐까.

개인적인 생각으로는, 이 취약점에 대한 분석과 대응 또한 중요하지만, Intel의 대처와 전후 행동들에 대해서도 생각해보아야 하지 않을까 싶다.


각설하고, 이번에는 Meltdown에 대해 알아보려한다.

*** 주의 : 해당 공격 기법의 원리가 100프로 정확한지 검증하지 못했다. 논문을 좀 더 읽어보아야 할 것 같은데.. 언제가 될 지는 모르겠다.

물론, Meltdown이 뭔지 그리고 우리의 컴퓨터에는 어떠한 영향을 미치는지도 중요하지만, 그보다는 해당 Exploit의 작동 원리에 대해서 중점적으로 Araboza.



[사진 1] Meltdown Vulnerability의 Logo (출처 : Wikipedia)



Meltdown vulnerability는 Intel의 Microprocessor와 일부 ARM-based Microprocessor에 존재하는 취약점이다.

수 개월 전에 Google에서 발견하여 이미 칩 제조사들에게 알렸다 라는 이야기가 있던데, 이는 그러려니 하고 넘어가도록 하고, 이 공격이 무엇인지 부터 생각해보도록 하자. 


Meltdown은 이름 그대로, 컴퓨터의 근간이 되는 Kernel에서 정보가 새어나갈 수 있기에, 원전의 Meltdown처럼 내부로부터 정보들이 새나간다는 의미를 가지고 있다.

본래 User Application은 Kernel 영역의 Memory를 들여다 볼 수 없는 것이 정상이나, 해당 취약점을 통해 Kerenel Memory의 정보를 읽어낼 수 있게 되는것이다.


해당 공격은 Intel사 뿐만 아니라, 모든 Modern CPU들이 가지고 있는, Out-of-order Execution(OooE) 즉 비순차적 실행과

Branch Predictor로 인한 Speculative Execution 즉 투기적 실행으로부터 발생하는 취약점이다.

(그러나 이 공격이 Intel 사의 제품에만 문제가 되는 이유는, 그들이 구현한 인텔만의 기술로 해당 공격이 실행가능해 지기 때문이다.)


비순차적 실행이란, 실행할 Instruction들을 instruction pool에 담은 뒤, 만약 인접한 두 instruction이 연관이 없다면, 이를 별도로 실행하여, 해당 정보들을 종합한 후 결과물을 도출하는 방식으로서, CPU의 성능을 높이기 위해 사용하는 기법 중 하나이다.


그렇다면, 대체 이 기능이 왜 문제가 되는 것인가.


Meltdown 공격기법의 순서를 간략히 보면 다음과 같다.


1. App의 권한 밖 메모리 접근(read) 명령을 타 명령들과 함께 실행한다. 

- 본래 hardward와 os는 이러한 경우 즉시 해당 App의 실행을 중단하는 것이 원칙이다.

- 그러나 OooE와 Speculative Execution으로 인해, 일단은 해당 instruction이 정상적으로 실행된다.


2. 실행된 명령어들의 결과는 Cache에 저장된다.


3. 실행 결과에의 Exception으로 인해, 커널이 오류를 띄우고 Exception Handling을 수행한다.

- 하지만, 이 때 CPU Cache에는 아직 정보가 남아있다.


4. Cache에 Flush+Reload Attack을 통해 캐싱 여부를 판단하고 캐싱된 데이터를 알아낸다.

- 이 공격 기법은 2014년경? 밝혀진 방법으로, 이를 이용하여 Accessed Cache line을 판단할 수 있다고 한다.


5. 데이터를 추출한 후, Exception Handler가 예외처리를 끝마치기 전에 특정 작업을 통해 예외를 처리한다.

- 이를 통해 사용자는 자신이 공격받았는 지 조차 알수 없다고 한다.


(이에 대해 완벽히 이해한 바는 아니며, 논문 또한 겉핥기식으로 지나가기는 했지만, 많은 분들의 글을 참고하면 위와 같은 과정을 지닌다고 할 수 있다. 시간들여 논문을 한번 읽어보기는 해야겠다는 생각이 든다.)


위와 같은 과정들을 통해 이번 Meltdown 공격이 수행되며,

이는 Kernel의 모든 정보를 알아낼 수 있기에 매우 심각한 취약점임에는 틀림없다.

또한 이를 해결하기 위한 Software 패치 또한 CPU 성능이 감소한다는 데에서 문제가 있긴 하다.

(이 성능 감소에 대해 이야기가 많은데, 혹자는 오차범위 내에서의 감소만 있을 뿐 전혀 영향이 없다 라는 사람도 있으며, 최대 30프로까지도 영향을 받는다는 사람들도 많다.)


어찌되었든, 이번 취약점은 hardware에 존재하는 개념들이 역으로 공격에 쓰임으로서 큰 파장을 일으키고 있다.

대책으로 등장한 software 패치는 성능 저하라는 악영향이 있지만, 일단은 공격으로부터는 안전하다고 하니, 얼른 패치부터 하는게 어떨까 싶다.

끝마침이 이상하지만, 일단은 끝.

Comments