든든한웹파트너webco

Notice

공지 인텔(Intel) 버그 CPU 보안 결함, 멜트다운(Meltdown)이란 2018.01.10

애플의 아이폰이 배터리 게이트로 고생을 하고 있는 가운데, 글로벌 반도체 업체인 인텔(Intel)이 CPU 보안 결함 버그가 이슈로 떠오르고 있다. 지난 10년간 인텔이 생산한 CPU에 보안 관련 설계 결함이 있는 것으로 밝혀졌다.



구글의 프로젝트 제로(Project Zero)의 연구진, 오스트리아의 Graz 대학, 펜실베니아 대학, Adelaide 대학 그리고 Cyberus, Rambus 같은 보안 관련 회사들이 인텔 CPU 아키텍처와 관련된 중대한 버그를 발견했다. (링크 : Meltdown and Spectre - meltdownattack.com) 멜트다운(Meltdown)과 스펙터(Spectre)라고 이름 붙여진 두 개의 버그다.


                       



왜 위험한가?


기본적으로 컴퓨터 상에서 동작하는 프로그램들은 커널이라는 시스템 소프트웨어의 제어를 받는다. 커널은 컴퓨터에서 실행되는 프로그램들이 독립적으로 실행하도록 잘 관리해줘야한다. 특히 프로그램들이 서로의 메모리, 데이터를 허가받지 않은 방법으로 가져갈 수 없도록 커널이 관리를 해줘야 한다.


예를 들어, 컴퓨터 혹은 스마트폰에서 온라인 뱅킹과 관련된 프로그램을 실행하고 있다고 생각해보자. 이 때, 컴퓨터에서 실행중인 또 다른 프로그램(악성코드 같은)이 마음대로 온라인 뱅킹과 관련된 데이터를 훔쳐볼 수 있다면? 온라인 뱅킹 프로그램 사용자의 계좌정보는 물론 비밀번호 정보, 보안 정보 등이 모두 뚫릴 가능성이 생긴다.


심지어 스마트폰이나 PC가 아닌 수 많은 사람들의 정보를 다루는 서버 컴퓨터, 클라우드 센터가 뚫린다면? IT 업계 전반에 대대적인 보안관련 이슈가 제기될 것이다.

                       



멜트다운(Meltdown)


연구진들에 의하면 멜트다운(Meltdown) 취약점은 1995년 이후 출시 된 인텔의 모든 CPU와 곧 출시될 ARM의 Cortex-A75, A15, A57, A72가 영향을 받는 버그다.


                      Meltdown demo - Spying on passwords                


멜트다운 버그는 사용자 프로그램이 커널이 사용하는 메모리 내용을 알아낼 수 있는 버그다. 메모리를 사용하는 사용 주체는 크게 사용자와 커널로 나눌 수 있다. 앞서 말한 것처럼 사용자는 자신에게 허가된 메모리 공간만을 사용할 수 있으며, 다른 사용자 메모리나 커널이 사용하는 메모리 영역은 반드시 커널에 요청해 사용해야한다.


최근 CPU들은 성능 최적화를 위해서 예측실행(Speculative Execution)이라는 기법을 사용한다. 프로그램이 실제로 명령을 수행하기 전에 미리 수행해놓고, 실제 해당 명령을 수행하게 되면, 미리 수행해놓은 결과를 전달하는 기법이다. 나중에 수행되지 않게 될 경우 미리 수행해 놓은 결과는 버리게 된다.



CYBERUS는 블로그 포스트를 통해 멜트다운의 원리에 대해서 설명하고 있다. (링크 : Meltdown - Cyberus technology)


CPU의 예측실행 기능이 동작하면서 메모리 참조에 대한 권한 체크가 제대로 이뤄지지 않았다. 즉, 유저의 프로그램이 커널의 메모리 영역을 참조하면 예외처리가 되어야하는데, 예측실행 단계에서 이 예외처리 동작이 제대로 되지 않은 것으로 보인다. 따라서 실제로 보면 안되는 커널 메모리 영역의 데이터가 CPU 캐시로 로드되고, 이 영역이 유저 프로그램에 의해 보여질 수 있는 문제다.


                       



해결 방법과 또 다른 문제


해당 문제를 해결하는 방법으로 커널에서 사용하는 메모리 영역을 일반 프로그램이 사용하는 메모리 영역을 운영체제 차원에서 격리하여 사용하도록 커널을 패치하는 것이 있다.(이 버그에서 안전한 운영체제는 없다. 윈도우, 리눅스, Mac 등.. 모든 운영체제가 이 버그에 영향을 받는다.)


이와 관련하여 애플은 2017년 12월 6일 공개된 맥OS 10.13.2 업데이트에서 이 문제에 대한 해결 패치를 적용했으며, 곧 배포될 10.13.3 업데이트에서 추가 보완책을 적용할 것이라고 맥루머스가 전했다. (링크 : Intel Memory Access Design Flaw Already Addressed by Apple in macOS 10.13.2 - MacRumors)
마이크로소프트의 윈도우 역시 지난 11월과 12월 사이 보안 패치 테스트를 거쳤으며, 윈도우 10의 경우 1월 3일(현지시간) 보안패치 자동업데이트가 이뤄졌으며, 윈도우 7, 윈도우 8의 경우 1월 9일 업데이트가 이뤄질 예정이다.
리눅스 개발자들도 새 커널 업데이트에서 인텔 CPU 버그와 관련된 결함을 해결하기 위해 노력중이라고 한다.



문제는 일반 프로그램의 메모리 영역과 커널이 사용하는 메모리 영역을 운영체제 차원에서 격리하게 되면, 캐시 효율이 저하되어  성능이 떨어질 수 있다는 것이다. <더레지스터(The Register)>는 운영체제 차원에서 진행되는 패치가 전체적인 성능을 5 ~30% 가량 저하시킬 수 있다고 전했다.(링크 : Kernel-memory-leaking Intel processor design flaw forces Lunux, windows, redesign - The Register) 특히 기업용 서버, 클라우드 데이터 센터 등에 큰 영향을 미칠 것이라고 알려져있다.


단 PCID 기능이 적용된 신형 인텔 CPU에서는 해당 버그의 패치로 인한 성능저하가 완화되는 것으로 알려져있다. 또 한, 일부 파일 시스템에서의 I/O 성능은 50%까지 성능 저하가 발생한다는 보고도 있으며, DBMS 시스템의 경우 15% 가량 성능저하가 발생한다고 보고된다. 게임 플레이에는 거의 영향이 없으나 네트워크 전송이나 빈번한 로딩이 발생하는 온라인 게임의 경우 성능저하가 있을 수도 있다고 한다.


인텔은 관련 업체들과 헙력하여 다음주까지 문제를 해결할 방법을 마련할 예정이라고 발표했다. (링크 : Intel issues updates to protect systems from security exploits - Inte Newsroom)


출처 : 이즈군의 IT 블로그