일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- Mac
- airdecap-ng
- 보안
- Shift + ESC
- davtest
- Mimikatz
- OIDC
- 강의
- cgroups
- recon-ng
- 화이트해커
- ip forwarding
- 프로젝트
- 대학원
- AttackGraph
- NMAP
- Kublet
- 액티브스캐닝
- Social Network in Game
- 패시브스캐닝
- OpenID Connect
- 무선채널
- dnsenum
- SecurityMetric
- decap
- 넷크래프트
- 계정 탈취
- 공격그래프
- Container
- Chrome 작업관리자
- Today
- Total
네른
[정보보안] 4. CPU Meltdown 본문
[정보보안] 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 패치는 성능 저하라는 악영향이 있지만, 일단은 공격으로부터는 안전하다고 하니, 얼른 패치부터 하는게 어떨까 싶다.
끝마침이 이상하지만, 일단은 끝.
'궁금 > 정보보안' 카테고리의 다른 글
6. OAuth / OIDC(OpenID Connect) (0) | 2020.06.17 |
---|---|
[정보보안] 5. Mimikatz - sekurlsa (0) | 2019.05.21 |
[정보보안] 3. Encoding vs Encryption vs Hashing vs Obfuscation (0) | 2018.01.11 |
[정보보안] 2. 2FA ( Two-Factor Authentication ) (0) | 2017.09.25 |
[정보보안] 1. 공인인증서 (0) | 2017.09.19 |