본문 바로가기

IT/기술

CPU취약점 멜트다운 스펙터 란 무엇인가?

중앙처리장치(Central Processing Unit) CPU는 쉽게 말하면 사용자의 명령에 따라 모든 데이터를 처리해 결과를 출력하는 컴퓨터의 두뇌 역할을 한다. 컴퓨터의 성능을 비교할 때 가장 먼저 살피는 사양이다. CPU를 제조하는 회사는 많지만, Intel과 AMD라는 두 회사의 점유율이 압도적으로 높다. 특히 인텔 CPU는 세계 시장 점유율이 70%에 달한다. 이번에 1995년 이후 출시된 대부분의 인텔의 CPU에서 취약점이 발견됐고, AMD에서도 같은 문제가 발생할 수 있다는 건 거의 전 세계의 컴퓨터가 해당된다는 것이다.


 

    오늘의 톡톡명언    

 아무리 중대한 실수를 저질렀더라도 항상 또다른 기회는 있기 마련이다. 우리가 실패라 부르는 것은 추락하는 것이 아니라 추락한 채로 있는 것이다. 

☞ If you have made mistakes, even serious ones, there is always another chance for you. What we call failure is not the falling down but the staying down.

☞ 501 영화배우

☞ 메리 픽포드

☞ [Mary Pickford]

 

멜트다운, 스펙터 무엇이 문제인가?

Meltdown, Spectre 취약점이란 CPU들은 빠른 처리 속도를 위해, 사용자가 실행하기 전에 다음의 명령을 미리 예측해 작업을 한다. 그런데 그 예측이 틀렸을 경우 작업해 둔 데이터가 완전히 삭제되지 않고, 캐시 메모리에 그대로 남아있게된다. 이 때, 이번에 발견된 취약점을 이용하면 메모리 영역에 마음대로 접근하고, 메모리를 들여다볼 수 있게 되는 취약점이 발견되었다. 개인입장에서는 로그인 비밀번호, 개인문서, 이메일, 기업입장에서는 조직기밀, 민감한 고객의 데이터 등이 유출될 수 있다는 이야기가 된다.

해결방안은 무엇이 있을까?

힘든이야기 이다. 이것은 CPU의 문제이기 때문에 근본적으로는 CPU라는 하드웨어를 고쳐야 한다. 하지만 실질적으로 전 세계 모든 사용자가 CPU를 교체하기는 어렵기 때문에 현재로서는 운영체제, 브라우저 등의 소프트웨어를 패치(업데이트)해서 일부 해결할 수 있다. 지금 사용하고 있는 윈도우 업데이트가 뜨지 않았는가? CPU취약점 때문이다. 윈도우, 리눅스, 플래쉬 기타 소프트웨어의 패치를 빠르게 준비하고 있다.

한단계더 나아가 보자.

스펙터, 멜트다운 다른 이름으로 경계검사 우회(bounds check bypass, CVE-2017-5753), 분기표적 주입(branch target injection, CVE-2017-5715), 불량데이터캐시 적재(rogue data cache load, CVE-2017-5754), 앞의 2개가 스펙터, 뒤의 1개가 멜트다운이다. 경계검사 우회 취약점은 CPU의 조건분기명령이 처리될 때 발생하는 투기적실행 동작의 허점이다. 인텔의 설명을 요약하면, 이 취약점은 CPU가 처리할 데이터가 경계 안에 있는지 확인할 때, 투기적실행 명령이 동작하면서 당장 처리 대상이 아닌 메모리 영역에 접근할 수 있게 돼 발생한다. 공격자는 투기적실행 명령을 유도하는 코드를 집어넣고, 취약점 발생 상황을 틈타 메모리상의 정보를 빼낼 수 있다.

분기표적 주입 취약점은 CPU내 간접분기예측기(indirect branch predictors)의 허점이다. 

간접분기예측기는 CPU가 투기적실행으로 처리할 명령이 뭔지 지시하는 역할을 한다. 

인텔은 "조건부 직접분기에선 공격자가 분기의 표적, 그 분기가 직접 수반하는 명령어의 경로, 2가지를 벗어난 코드의 투기적실행을 유도할 수 없지만, 간접분기는 더 광범위한 표적군에서 코드의 투기적실행을 유도할 수 있다"고 설명했다.

무슨말인지 어렵다. 대중적으로 쉽게 설명을 해볼까 (그림)



멜트다운(Meltdown, 붕괴) : 인텔 CPU에 적용된 비순차적 명령어 처리기술(순차적으로 처리하면 처리 속도가 느림)의 버그를 악용한 보안 취약점, 이 취약점을 이용하여 기존의 응용 프로그램과 운영체제의 분리를 무너뜨릴 수 있다. 이로 인해 응용 프로그램이 접근할 수 없었던 운영체제의 메모리에 접근가능 


스펙터(Spectre, 유령) : CPU 속에 담겨있는 명령어에서 발생하는 버그를 악용한 취약점으로 해킹 프로그램의 메모리에 접근할 수 있다. 이 취약점은 멜트다운보다 공격하기가 어렵지만 많은 명령어를 가지고 있어 모든 CPU에서 일어날수 있다.

더 간단하게 요약해보자.

- (멜트다운) 프로그램이 현재 수행중인 명령과 데이터가 외부로 노출되는 취약점


- (스펙터) 실행중인 프로그램의 메모리 정보를 다른 프로그램이 공유 할 수 있는 취약점

보안패치후 하드웨어 성능하락 논란

필자의 생각은 하드웨어 성능하락은 아니라고 하지만 불가피하다고 생각한다. 왜냐하면 성능향샹을 위해 비순차적으로 명령어를 처리 하는데 이것을 소프트웨어 적으로 회피하는 방법을 쓰기 때문이다. 그렇다고 순차적으로 바뀐다는 이야기는 아니다. 차기 CPU는 하드웨어 적으로 수정이 되기때문에 성능하락은 없으리라 생각된다.

결론

이 메카니즘을 설명하려면, 캐쉬, 파이프라인, 쓰레드, CPU우선순위, 메모리할당기법 등등 설명할것이 많지만 간단하게 설명해보았다. 취약점 해결을 위해 OS패치는 물론이며 바이오스 패치까지 하기를 권장한다.


마지막으로 사물인터넷에 주로 쓰는 라즈베리파이(작은컴퓨터)에 사용된 ARM CPU인 Cortex A7과 Cortex A53은 완전히 순차적으로 명령을 실행하므로 해당 취약점 없다고 한다.