Tech

진화하는 스펙터와 멜트다운

일반 사용자들에게 CPU 구매 시 가장 중요한 지표는 성능이다. 무어의 법칙에 힘입어 CPU의 성능은 지난 50년간 매년 약 2배씩 증가했다. 사용자들은 2000년대에는 클럭 스피드 (예: MHz, GHz)와 같은 지표를, 최근에는 벤치마크 점수들과 같은 여러 지표를 통해 더 좋은 CPU의 성능을 추정한다. CPU 성능발전 덕에 더 실감나는 게임, 더 빠른 동영상 렌더링 작업, 더 빠른 과학 연산이 가능해졌고, 사회의 발전 속도가 더욱 가속화 되었다.

그러나 최근 일명 ‘CPU 게이트’라고 불리는 심각한 보안문제가 발견되었다. 이 보안문제들은 현대 CPU의 성능향상 아키텍쳐의 근본적 허점을 이용하는데, 이들을 해결하기 위해서는 현대 CPU가 근 20년동안 사용한 성능 향상 기법들을 포기해야 할 수도 있다. 단기간의 개선과 패치로 해결하기가 매우 어려운 문제이다.

가장 대표적인 보안 공격들로는 멜트다운 공격과 스펙터 공격이 있다. 모두 CPU의 보안결함을 통해 한 응용 프로그램의 악의적 사용자가 다른 사용자의 데이터를 허가없이 읽을 수 있도록 한다. 스펙터 공격은 CPU에서 사용하는 Speculative Execution 의 허점을 악용하고, 멜트다운 공격은 Out-of-Order Execution의 허점을 악용한다.

스펙터 공격 원리 바로가기

멜트다운 공격원리 바로가기

멜트다운과 스펙터 공격 이후로, 수많은 변종 공격이 개발되었다. 대표적인 변종 공격들은 Load Value Injection (LVI), 포쉐도우 (Foreshadow), 좀비로드 (Zombie Load), RIDL, 폴아웃 (Fallout), SWAPGS, TAA이다. LVI 공격은 특정 CPU 레지스터에 악의적으로 특정 값을 주입해 다른 사용자의 데이터를 읽어온다. 포쉐도우 공격은 인텔이 자랑하는 SGX 기술로 보호되는 데이터도 읽어올 수 있다. 좀비로드, RIDL, 폴아웃 공격들은 하이퍼스레딩을 사용하는 CPU의 Microarachitectural Data Sampling 약점을 악용한다.

2019년 USENIX학회에서 발표된 한 논문은 변종 공격들을 체계적으로 분류했다1. CPU의 Branch Target Buffer를 Mistraining (공격자가 원하는 방향으로 유도하는 것) 시키는 전략에 따라서 변종을 분류할 수 있다. 또한 이 Mistraining이 공격자 영역에서 수행되는지, Victim Process의 영역에서 실행하는 지에 따라 변종을 분류할 수 있다. 아래 그림에서 볼 수 있듯, 매우 많은 변종들이 존재한다. 또한 이론적으로 가능하지만 아직 발표되지 않은 변종들도 존재한다.

2018년 스펙터와 멜트다운이 발표된 후 약 3년이 흐른 지금도 새로운 변종 공격들이 개발되고 있다. 각 공격들의 방어법을 찾는 것은 매우 중요하다. 하지만 더욱 중요한 것은 근본적인 해결책을 찾는 것이다. 스펙터 멜트다운 공격과 그 변종들은 컴퓨터 설계자들에게 교훈을 주었다. CPU 설계에 있어 더 이상 성능이 제일 중요한 지표가 될 수 없다. David Patterson과 John Hennessy는 Turing Lecture에서 “지금은 컴퓨터 아키텍쳐를 재정의하고 보안을 첫 번째 시민으로 대해야 할 때”라고 말했다.

컴퓨터 시스템과 프로그래밍 언어의 거장 Andrew Myers는 그의 블로그의 “The Wooden Firehouse”라는 글을 통해 “And even the firehouse is still made out of wood.”라고 지적한다. 화재에 강한 콘크리트 건물을 짓듯 근본적으로(Fundamentally) 안전한 CPU 설계에 최선을 다해야 할 것이다.

  1. Canella, Claudio, et al. “A systematic evaluation of transient execution attacks and defenses.” 28th {USENIX} Security Symposium ({USENIX} Security 19). 2019.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다