본문으로 바로가기



안녕하세요, SATAz입니다.

새해 들어서 매우 Hot 한 보안 관련 이슈가 나타났습니다!! 

바로 Intel에서 CPU를 잘못 설계해서 나타난 보안 취약점 때문인데요, 전 세계적으로 아주 난리도 아닙니다.



Intel은 전 세계 CPU 시장의 약 80%를 차지하고 있는 어마어마한 기업입니다. 이는 곧, Intel CPU를 사용하는 대부분의 사람들이 보안에 취약해졌다는 것을 함께 의미하는 것이죠.


2018년 1월 2일 "The Register"(이하 레지스터)라는 매체에서 Intel CPU의 설계 오류로, 커널 메모리의 정보가 새는(Leaking, ≒누설, 유출)문제가 발생했다고 보도했습니다.  (이런 이슈가 발생하고나서 Intel CEO는, 필요한 주식 외에는 전부 팔아버렸다고합니다 ;;)


목 차

1. Intel CPU에서 문제가 되는 취약점은 무엇인가?

 1-1 MeltDown(멜트다운) / Spectre (스펙터)의 개요

 1-2 MeltDown(멜트다운) - 커널에 접근할 수 있는 것이 뭐가 문제일까요?

 1-3 MeltDown Bug(멜트다운 버그)는, 어떤 방식으로 커널의 동작을 볼 수 있는 것인가? - 1

 1-4 MeltDown Bug(멜트다운 버그)는, 어떤 방식으로 커널의 동작을 볼 수 있는 것인가? - 2

 1-5 MeltDown(멜트다운) 취약점 패치는, 어떤 방식으로 이뤄지는가? - KPTI 소개

 1-6 KPTI(Kernel Page-Table Isolation)는 시스템에 어떤 영향이 있는가?

 1-7 MeltDown(멜트다운) 영향을 받는 CPU 목록

 1-8 MeltDown(멜트다운) 버그(Bug) 시연 영상


2. 각 벤더사에서 취한 대응

 2-1 문제의 CPU를 사용하는 모든 운영체제들이 취약하다?

 2-2 벤더별 패치 업데이트 배포 여부를 확인하자.

 2-3 그렇다면 AMD로 갈아 타는 것이 해답이 될까?


*참고사항

 - 버그(Bug) : 취약점보다 좁은 의미로, 어떤 프로그래밍 관점에서 본 문제를 버그로 표현했습니다.

 - 취약점(exploit) : 특정 객체가 갖고 있는 취약한 부분을 취약점이라고 표현했습니다.



1. Intel CPU에서 문제가 되는 취약점은 무엇인가?


이번에 CPU 사태에서 대두되고 있는 것은 Meltdown 취약점(CVE코드 :: CVE-2017-5754 )와 Spectre 취약점(CVE코드 :: CVE-2017-5753 / CVE-2017-5715 )입니다.

MeltDown은 Intel CPU에서만 확인된 버그인 것으로 알려져 있으며, 

Spectre는 Intel 말고도 AMD, ARM 등등 많은 CPU 들에게서 나타나는 것으로 알려졌습니다.


*Meltdown 버그는 Intel에서만 나타난 취약점입니다.


*Specter의 오타 아닙니다.. Spectre입니다... 영국식 영어일껍니다;;*



 1-1 MeltDown(멜트다운) / Spectre (스펙터)의 개요

Metldown은 Intel x86 아키텍처 컴퓨터 메모리 데이터 보안의 공격이라고 정의하고 있으며, 일반적으로 사용자 Application(응용프로그램)(해킹툴)을 통해서 운영체제의 시스템 메모리(System Memory)에 접근할 수 있는 취약점을 의미합니다.

즉, 공격자(Attacker)가 커널단에서 이루어지는 일련의 작업들을 모두 엿볼 수 있는 것이죠.


Spectre는 사용자 응용프로그램(해킹툴)이, 구동중인 다른 응용프로그램을 속여서 비밀 정보를 유출하는 취약점을 의미합니다. 

즉, 특정 응용프로그램이 다른 응용프로그램의 메모리 주소에 접근하여, 그 메모리 주소에 있는 내용들을 훔쳐볼 수 있는 것이죠.


두 취약점은, 공격자가 부 채널 공격(Side Channel Attack)을 통해서 비밀 정보를 취득할 수 있다는 공통점을 갖고있습니다.


*부채널 공격(side channel attack) : 특수한 상황에서 처리 시간 차이의 특성을 이용한 공격 방식 중 하나


 1-2 MeltDown(멜트다운) - 커널에 접근할 수 있는 것이 뭐가 문제일까요?


 응용프로그램이 CPU와 Memory 자원들을 사용하기 위해서는 항상 커널을 통해야 합니다. 심지어 평문을 암호화 하는 작업을 하는 것도 커널 단에서 이루어지게 되죠.


1234를 암호화 하기 위해서는 평문 "1234"를 커널로 보내고, 계산을 통해서 "abcd"라는 암호문이 도출이 되는 과정을 거친다고 하면... 커널에서는 평문 "1234"와 암호문 "abcd"를 둘 다 가지고 있는 격이 된다고 보시면 이해하기 쉬울 것입니다.


이 말고도 커널에서 진행되고 있는 모든 행위들이 노출되는 것이죠...

예를 들어, 우리가 컴퓨터에서 어떤 프로그램을 구동중에 있는지, 웹페이지에 로그인할 때 아이디와 비밀번호는 무엇을 쓰고있는지, 심지어 윈도우에 암호 입력 후 로그인할 때 입력하는  패스워드가 무엇인지...


그냥 이 취약점에 노출되는 PC 혹은 Server에서, 권한 없는 사용자가 어떤 작업들이 진행되고 있는지 몰래 훔쳐볼 수가 있다는 것이죠,


*여기에서 커널은 Windows 10 또는 Linux 등의 운영체제 자체라고 보시면 되겠습니다.




 1-3 MeltDown Bug(멜트다운 버그)는, 어떤 방식으로 커널의 동작을 볼 수 있는 것인가? - 1

 우리의 PC는 어떤 응용프로그램을 구동할 때, 메모리에 적재를 시킨 다음에 CPU에서 연산을 시작합니다. (예를 들어 윈도우에서 ABC.exe 파일을 실행)

*메모리에 적재된, 실행되고 있는 프로그램을 우리는 프로세스라고 부릅니다.


아래의 그림은, 운영체제에서 ABC.exe, DEF.exe, GHI.exe 파일을 실행시켰을 때 필요한 메모리 영역을 단순화해서 그린 그림입니다.


1) ABC.exe 프로세스는 현재 0x0012333242 ~ 0x0012373426 주소 사이의 영역을 사용중에 있습니다.

2) 그런데 해커가 0x0012373427 ~ 0x001240011 주소 사이의 영역을 사용하는  악성코드 DEF.exe를 코딩하여 구동했습니다.


3) 정상적인 DEF.exe라면 파란색 영역에서만 메모리를 사용해야하는데,

4) 해커가 Meltdown 버그를 이용하기 위해 코딩한 프로그램인 관계로, 노란색 영역에서 일어나고 있는 일들을 훔쳐볼 수가 있었습니다.

5) 해커는 일반 사용자가 어떤 작업들을 하고 있는지 훔쳐볼 수가 있습니다.



 1-4 MeltDown Bug(멜트다운 버그)는, 어떤 방식으로 커널의 동작을 볼 수 있는 것인가? - 2

위에서 말씀드렸다 싶이, 메모리는 물리주소(Physical Address)라는 것을 갖고 있습니다. 하지만 메모리는 가상주소(Virtual Address)라는 것을 함께 사용하고 있습니다. 그리고 메모리를 효율적으로 관리하기 위한 페이징이라는 기법을 사용합니다.


메모리의 사용 영역에 대해서 쉽게 설명드리고자 위의 그림처럼 단순하게 그렸지만, 

실제 메모리에서는 페이지라는 메모리 할당 최소 단위로 쪼개서 메모리를 관리하는 기법을 사용해서 메모리를 관리를 합니다.

그리고 Context Switching 이라는 기법(한개의 CPU 코어에서 동시에 다수 프로세스를 처리할 수 있게 하는 기능)을 사용하는 등, 메모리에서는 상당히 복잡한 작업이 수행됩니다.

이 포스팅에서는 취약점 위주로 다룰 것이기 때문에 회색으로 처리하고 자세한 내용은 생략하겠습니다.

그래서 우리 컴퓨터에는 가상주소(Virtual Address)와 물리주소(Physical Address)를 매핑(mapping) 시켜주는 Page Table이라는 것을 만들어서, CPU 연산을 하는데 참고합니다.


<가상주소에서 물리주소로 변환하는 과정 - 출처 - 위키디피아 :: https://en.wikipedia.org/wiki/Page_table>


Virtual Address 

Physical Address 

0x101

0x1231 3221 

0x102 

0x1233 3242 

0x103

0x1240 0012 

   

<페이지 테이블 단순화된 예시>

*실제 PageTable은 이렇게 보이지 않습니다...  여러분의 이해를 돕기 위해서 쉽게 표현한 것입니다.

*실제 Physical Address는 Protection Bit(보호비트)에 의해서 보호되어 가려집니다.




여기에서 Meltdown 버그는, 일반 프로세스가 참고하는 Page Table에서도 Kernel에서 사용된 Virtual Address를 참고하여, 커널이 점유하고 있는 메모리의 내용을 훔쳐볼 수 있다는 문제점을 이용합니다.


이는 곧, 커널 단에서 행해지는 모든 과정들을 해커가 엿볼 수가 있다는 것을 의미합니다..


*따라서 Meltdown 버그는 커널단에서 이뤄지는 모든 일들을 훔쳐볼 수는 있지만, 어떠한 데이터 조작은 불가능하다고 알려졌습니다.

*Intel 외의 다른 CPU 회사들은 Meltdown 취약점과 무관하다고 합니다.



 1-5 MeltDown(멜트다운) 취약점 패치는, 어떤 방식으로 이뤄지는가? - KPTI 소개

MeltDown 버그는 일반적으료 사용되는 프로세스들이 Page Table에 있는, Kernel에서 사용된 Virtual Address에 접근하는 문제를 이용한다고 설명드렸습니다.

따라서 Linux에서는 KPTI(Kernel Page-Table Isolation, 커널 페이지-테이블 분리)라는 패치를 이용해서, Meltdown 취약점을 보완했습니

다.


저기 자물쇠로 표시한 부분이 KPTI 기술이 적용된 것이라고 볼 수 있는데요,

커널이 작업을 하기 위해, Virtual Address -> Physical Address 로 매핑을 시키는 순간만큼은 분리(isolate)시켜놓는 기술을 의미합니다.

그래서 이름도 커널(Kernel) 페이지-테이블(Page-Table) 분리(Isolate) 기술입니다.


<<수정>>

죄송합니다... 제가 잘못된 정보를 갖고온 것 같습니다;; Youtube에서 설명을 너무 자신있게 해서 설명이 너무 정확하다고 착각을 했습니다...

그래서 제대로된 정보를 다시 찾아서, 추가 포스팅을 올렸습니다.


KPTI 기술에 대한 자세한 내용을 확인하시려면 아래의 링크를 클릭해주시면 감사하겠습니다.


<2018.02.10 - [보안 Issue] Meltdown(멜트다운) 취약점을 파헤쳐보자. - 클릭>


 1-6 KPTI(Kernel Page-Table Isolation)는 시스템에 어떤 영향이 있는가?

커널이 메모리 주소 매핑 과정을 하는 동안 Page Table이 분리되어 다른 프로세스에서 사용을 할 수가 없다는 것은 곧, 성능(Performance)저하가 발생한다는 것을 의미합니다.


아니나다를까, 리눅스에서 관련 패치를 했더니 5%~30% 속도 저하가 발생했다는 보고가 있었습니다.



각종 커뮤니티에서는 게임에는 영향이 없다는 소식이 들려오고 있지만, 아무래도 기업에서 사용하는 DB 등의 서버에서는 속도저하가 다소 있지 않을까 싶습니다.




 1-7 MeltDown(멜트다운) 영향을 받는 CPU 목록


Intel® Core™ i3 processor (45nm and 32nm)

Intel® Core™ i5 processor (45nm and 32nm)

Intel® Core™ i7 processor (45nm and 32nm)

Intel® Core™ M processor family (45nm and 32nm)

2nd generation Intel® Core™ processors

3rd generation Intel® Core™ processors

4th generation Intel® Core™ processors

5th generation Intel® Core™ processors

6th generation Intel® Core™ processors

7th generation Intel® Core™ processors

8th generation Intel® Core™ processors

Intel® Core™ X-series Processor Family for Intel® X99 platforms

Intel® Core™ X-series Processor Family for Intel® X299 platforms

Intel® Xeon® processor 3400 series

Intel® Xeon® processor 3600 series

Intel® Xeon® processor 5500 series

Intel® Xeon® processor 5600 series

Intel® Xeon® processor 6500 series

Intel® Xeon® processor 7500 series

Intel® Xeon® Processor E3 Family

Intel® Xeon® Processor E3 v2 Family

Intel® Xeon® Processor E3 v3 Family

Intel® Xeon® Processor E3 v4 Family

Intel® Xeon® Processor E3 v5 Family

Intel® Xeon® Processor E3 v6 Family

Intel® Xeon® Processor E5 Family

Intel® Xeon® Processor E5 v2 Family

Intel® Xeon® Processor E5 v3 Family

Intel® Xeon® Processor E5 v4 Family

Intel® Xeon® Processor E7 Family

Intel® Xeon® Processor E7 v2 Family

Intel® Xeon® Processor E7 v3 Family

Intel® Xeon® Processor E7 v4 Family

Intel® Xeon® Processor Scalable Family

Intel® Xeon Phi™ Processor 3200, 5200, 7200 Series

Intel® Atom™ Processor C Series

Intel® Atom™ Processor E Series

Intel® Atom™ Processor A Series

Intel® Atom™ Processor x3 Series

Intel® Atom™ Processor Z Series

Intel® Celeron® Processor J Series

Intel® Celeron® Processor N Series

Intel® Pentium® Processor J Series

Intel® Pentium® Processor N Series


<출처 : https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00088&languageid=en-fr >



 1-8 MeltDown(멜트다운) 버그(Bug) 시연 영상

아래의 영상은 Meltdown 버그를 이용한 해킹 시연을 보여주고 있습니다.




<영상 출처 :: https://meltdownattack.com/ >




2. 각 벤더사에서 취한 대응

 2-1 문제의 CPU를 사용하는 모든 운영체제들이 취약하다?

CPU의 구조적인 문제로 발생한 취약점이기 때문에 소프트웨어적인 패치로 보완할 수 밖에 없다고 합니다. 

어떠한 방식으로 패치가 되는 것인지는 "1-5  MeltDown(멜트다운) 취약점 패치는, 어떤 방식으로 이뤄지는가?"을 참고 부탁드립니다.


최근에 출시한 Intel CPU에서도 동일한 취약점을 갖고 있기 때문에, 지금 PC의 CPU를 바꾼다고 해도 의미가 없습니다.

물론 이러한 문제점을 보완한 CPU가 개발되어서 나온다고 하면 이야기는 달라지겠죠.


이번 사태는 설계의 오류로 발생한 취약점이기 때문에 Windows, Linnux, MacOS 등등... 

해당 CPU를 사용하는 모든 운영체제(개인 데스크톱 PC, 기업용 Server, 스마트폰 ...)에 영향을 받습니다.

따라서 펌웨어 및 운영체제의 최신 업데이트를 반드시 하는 것이 안전합니다.


  

 2-2 벤더별 패치 업데이트 배포 여부를 확인하자.

각 CPU 제조사들은 최신 칩셋 업데이트 파일을 배포중에 있습니다.  아래의 링크를 통해서, 업데이트 배포 여부를 확인해주세요.

<한국인터넷진흥원 :: https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=26929 >



 2-3 그렇다면 AMD로 갈아 타는 것이 해답이 될까?

 Intel CPU의 Meltdown 취약점을 피하고 싶다면, Meltdown 패치로 인해서 속도저하가 발생하는 것이 싫다면 AMD로 갈아타는 것도 하나의 답이 될 수도 있습니다.


하지만 인간이 만들어낸 것들 중에서 완벽한 것이라는 것은 있을 수 없습니다.

AMD도 보안 취약성이 아직 드러나지 않았을 뿐이지, 어딘가에는 존재하고 있을 취약점이 분명히 있을 것입니다.


실제로 AMD나 ARM에서 Meltdown 버그가 발견되지 않았을 뿐이지, Spectre 버그는 먹힌다고 합니다.

취약한 정도를 따진다면 Meltdown > Spectre 이지만... 판단은 이 글을 읽는 여러분의 몫이 아닐까 싶습니다.


참고로 구글에서도 AMD로 넘어가는 것은 전혀 고려되지 않는 것 같습니다.





*참고자료

The Register - https://www.theregister.co.uk/2018/01/02/intel_cpu_design_flaw/

YouTube - https://www.youtube.com/watch?v=pzWqV8s2_XE

Wikipedia - https://en.wikipedia.org/wiki/Page_table

meltdown and spectre - https://meltdownattack.com/

Cyberus Technology BLOG - http://blog.cyberus-technology.de/posts/2018-01-03-meltdown.html

Google Project Zero BLOG - https://googleprojectzero.blogspot.kr/2018/01/reading-privileged-memory-with-side.html

한국인터넷진흥원 - https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=26929

KAISER KPTI - https://lwn.net/Articles/738975/

지디넷코리아 - http://www.zdnet.co.kr/news/news_view.asp?artice_id=20171204170950

Intel - https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00088&languageid=en-fr




제가 번역을 잘못해서 생긴 오류가 보이신다면, 지적 댓글 바로 달아주시면 감사하겠습니다 ^^

이건 이 의미가 아닌 것 같은데... 싶은 부분도 언제든지 환영입니다 ^^

오타 지적도 환영이며, 이해가 안되는 부분이 있으시면 댓글로 남겨주시면 답글 달아드리겠습니다.






댓글을 달아 주세요

  1. 만듀듀 2018.01.16 02:02

    잘보고 갑니다