2021.01.13

하드웨어 및 펌웨어 취약점 33가지와 위협 가이드라인

Lucian Constantin | CSO
멜트다운과 스펙터 버그가 하드웨어와 펌웨어의 취약점을 공격할 수 있다는 점이 세간에 알려지면서 보안 취약점에 대한 경계심이 높아졌다. 본 기사에서는 특히 위협적인 하드웨어 관련 버그 33가지를 정리했다. 

2018년 1월, 멜트다운과 스펙터라는 이름의 CPU 보안 버그가 새로 발견돼 업계 전체에 비상에 걸렸다. CPU 메모리를 커널 공간과 사용자 공간으로 분리한다는 운영체제 보안의 기본 개념이 두 버그로 인해 와해됐기 때문이다. 이 보안 결함은 현대 CPU의 특징 가운데 하나인 ‘추측 실행’에서 비롯됐으며, 이 결함을 해결하기 위해 CPU 제조사, 디바이스 제조업체, 운영체제 개발업체가 역사상 가장 큰 규모의 조정 작업을 해야 했다. 
 
ⓒGetty Images Bank

하드웨어 설계로부터 비롯된 취약점은 멜트다운과 스펙터 이전에도 있었다. 하지만 두 버그가 초래할 수 있는 피해 범위가 광범위한 탓에 특히 보안 커뮤니티의 많은 관심을 불러일으켰다. 학계와 민간 연구자들은 CPU나 기타 하드웨어 구성요소에서 이뤄지는 로우 레벨 작동 과정을 연구해 이전보다 더 많은 문제를 찾아내고 있다. 

하드웨어의 보안 취약점 중에서는 새로운 구성요소를 출시해야 개선할 수 있는 것도 있고, 하드웨어 칩에 내장된 펌웨어를 업그레이드해 개선할 수 있는 것도 있다. 어떤 경우든지 간에 패치를 적용하는 일은 그리 간단하지 않기 때문에 이러한 결함은 오랫동안 영향을 미칠 수 있다. 

멜트다운으로 주의가 환기되기는 했지만 하드웨어 관련 취약점은 꾸준히 존재했다. 여기 특히 주의할 만한 하드웨어 관련 취약점들을 살펴본다. 

CPU 부채널 공격(CPU side-channel attacks)
스펙터 변종 1 - CVE-2017-5753

공격자는 바운드 체크 바이패스라고도 알려진 CVE-2017-5753을 통해 최신 CPU의 분기 예측 기능을 이용할 수 있다. CPU 캐시를 부채널로 사용함으로써 다른 프로세스에 할당된 메모리 속 정보를 추출하는 것이다. 이 경우 하나의 프로세스가 다른 프로세스의 중요 정보를 유출할 수도 있을 뿐 아니라, 사용자 메모리와 커널 메모리 사이의 권한 경계를 우회할 수도 있다. 인텔, IBM 그리고 일부 ARM CPU가 이 취약점에 노출돼 있다. 

스펙터 변종 2 - CVE-2017-5715
스펙터 변종 2는 변종 1과 동일한 영향을 끼치지만, 분기 표적 주입법(branch target injection)이라는 기법을 사용한다. 이 변종 스펙터를 효과적으로 예방하려면 CPU의 마이크로코드를 업데이트해야 한다. 이는 BIOS 및 UEFI 업데이트 또는 운영 체제에 의해 수행될 수 있다.

멜트다운 변종 3 - CVE-2017-5754
멜트다운 버그는 불량 데이터 캐시 적재(RDCL) 또는 제3의 CPU 추측실행 기능 결함이라고도 불리며, 최신 인텔 CPU의 비순차적 명령 실행 기능을 이용하는 취약점이다. 이 취약점을 이용하면 사용자 프로세스별로 설정된 보안 경계를 넘어 보호된 커널 메모리를 읽을 수 있다. 취약점 수정을 위해서는 운영 체제만 업데이트하면 되며, 여기에는 민감한 정보를 갖고 있는 커널 메모리를 좀 더 엄격하게 분리하는 작업이 수반된다. 예컨대, 리눅스의 커널 페이지 테이블 분리(KPTI)와 같은 메커니즘을 통해서 분리를 할 수 있다. 

멜트다운-GP - CVE-2018-3640
멜트다운의 변종 혹은 변종 3a는 시스템 레지스터의 추측 읽기(Speculative reads) 기능을 이용해 부채널의 정보를 수집한다. 이런 이유로 불량 시스템 레지스터 리드(Rogue System Register Read, RSRE)라고도 불린다. 이를 예방하려면 마이크로코드를 업데이트해야 한다. 

멜트다운-NM - CVE-2018-3665
추측실행 결함은 레이지FP(LazyFP)라 불리는 멜트다운과 관련이 있다. 이 결함은 FP는 부동 소수점 장치(FPU)의 상태 정보를 유출하는 데 사용될 수 있다. FPU는 수학적 연산을 가속화하는 데 사용되는 전문 연산 보조 프로세서이며 인텔의 최신 CPU에 내장돼 있다. 프로세스를 전환할 때 "lazy" FPU 대신 “eager"를 적용함으로써 이 취약점을 예방할 수 있다. 

스펙터-NG - CVE-2018-3639
스펙터 변종 4 혹은 추측 저장 우회(SSB)라고 불린다. 공격자들은 애플리케이션별로 할당된 메모리들이 강제로 공유되도록 만든 다음, 한 애플리케이션을 통해 다른 애플리케이션의 정보에 접근한다. 이 취약점을 해결하려면 마이크로코드와 운영체제를 업데이트해야 한다. 

스펙터-PHT - CVE-2018-3693
스펙터 1.1로도 알려진 이 스펙터 변종은 추측 저장소(speculative store)를 활용해 추측 버퍼 오버플로우를 만들어낸다. 스펙터에 소프트웨어적인 완화 조치를 취하더라도 이 변종을 이용하면 그런 조치를 우회하는 게 가능했다. 이 문제를 해결하려면 운영체제를 업데이트해야 한다. 

멜트다운-RW
스펙터 1.2로도 알려진 이 취약점은 추측실행 저장소를 활용해 읽기 전용 데이터와 코드 포인터를 덮어쓰게 만든다. 이는 소프트웨어 샌드박스 보안에 위배된다. 취약점을 완화하려면 운영체제를 업데이트해야 한다. 

포어섀도 OS - CVE-2018-3620
포어섀도(Foreshadow)는 L1 터미널 폴트라는 이름으로 알려져 있다. 포어섀도는 인텔 CPU의 L1 데이터 캐시에서 정보를 빼내는 추측실행 공격이다. 동일한 물리적 CPU를 여러 개의 가상 CPU로 분할하는 가상 머신에서는 이 공격을 특히 주의해야 한다. 이런 가상 CPU는 동일한 L1 캐시를 사용하기 때문이다. 공격자는 이 변종을 이용해 운영체제 또는 SMM(시스템 관리 모드)에서 정보를 추출할 수 있다. SMM은 운영체제와는 별도로 존재하는 CPU의 대안 운영 모드이다. BIOS와 UEFI 또는 로우 레벨 OEM 코드에 의해 사용되도록 설계됐다.  

포어섀도-VMM - CVE-2018-3646
포어섀도의 변종인 이 취약점은 가상 머신에 영향을 준다. 가상 머신에서 실행되고 있는 게스트 운영 체제가 이 변종을 이용해 다른 게스트의 가상 머신 혹은 하이퍼바이저의 민감한 메모리를 읽을 가능성이 있다.  

포어섀도-SGX - CVE-2018-3615
공격자가 인텔 SGX(소프트웨어 가드 확장)의 엔클레이브 메모리를 읽을 수 있게 해주는 포어섀도의 변종이다. SGX는 일부 인텔 CPU에서 제공하는 실행 환경이다. 운영 체제 자체가 손상된 경우에도 개발자는 SGX에서 데이터를 저장하고 코드를 안전하게 실행할 수 있다. 

멜트다운-PK 및 멜트다운-BND
멜트다운-PK(프로텍션 키 바이패스)와 멜트다운-BND(바운드 체크 바이패스)는 2018년 11월 학계에서 발표된 멜트다운의 두 가지 변종이다. 멜트다운-PK는 인텔 CPU에 영향을 미치며, 멜트다운-BND는 인텔과 AMD 모두에게 영향을 미친다.

스펙터-PHT-CA-OP, 스펙터-PHT-CA-IP 및 스펙터-PHT-SA-OP
CPU의 PHT(패턴 히스토리 테이블)를 활용하는 스펙터의 변종들이다. 멜트다운-PK 및 멜트다운-BND와  같은 시기에 발견됐다. 

스펙터-BTB-SA-IP 및 스펙터-BTB-SA-OP
브랜치 타겟 버퍼(BTB)를 활용하는 스펙터 공격의 변종이다. 2018년 11월에 멜트다운-PK와 멜트다운-BND를 발견한 팀이 찾아낸 스펙터 변종이다. 당시 이 팀은 "기존에 배치된 방어책을 비롯해 대부분의 방어책으로는 모든 변종을 완벽하게 예방할 수 없다"라고 결론을 내렸다. 

폴아웃 - CVE-2018-1226
마이크로아키텍처 스토어 버퍼 데이터 샘플링(MSBDS)으로도 알려진 폴아웃(Fallout)은 멜트다운과 유사하다. 해커는 이 취약점을 통해 보안 경계를 넘나들며 보호된 메모리 영역의 중요 정보를 유출할 수 있다. 이는 CPU를 노린 새로운 유형의 부채널 공격 중 하나다. 인텔은 이를 마이크로아키텍처 데이터 샘플링(MDS)이라 부른다. 폴아웃은 운영 체제와 하이퍼바이저에 모두를 취약하게 만들며, CPU 마이크로코드 업데이트를 통해 해결할 수 있다. 

RIDL - CVE-2018-1127 및 CVE-2018-1230
마이크로아키텍처 로드 포트 데이터 샘플링(MLPDS)과 마이크로아키텍처 필 버퍼 데이터 샘플링(MFBDS) MDS 공격의 두 가지 변종이다. 폴아웃과 마찬가지로, 이 취약점을 해결하려면 CPU 마이크로코드를 업데이트해야 한다. 

좀비 로드 - CVE-2019-11091
MDS 공격의 네 번째 변종이며 마이크로아키텍처 데이터 샘플링 캐시 불가능 메모리(MDSUM)로 알려져 있다. 폴아웃 및 RIDL과 마찬가지로, 민감한 커널이나 하이퍼바이저 메모리의 정보를 유출하는 데 사용될 수 있다.

스타블리드
스타블리드(Starbleed)는 자일링스(자일링스)가 만든 필드 프로그래머블 게이트 어레이 (FPGA)의 비트스트림 암호화 프로세스에 존재하는 설계 결함이다. 사전 설정된 명령어에 따라 컴퓨팅 작업을 수행하는 CPU와 달리, FPGA는 고객이 로직을 완전히 프로그래밍할 수 있는 통합 회로다. FPGA는 범용 CPU와 달리 특정한 한 가지 작업에 특화돼 있으며 항공우주, 재무 및 국방 같은 분야의 업무 혹은 안전에 중요한 애플리케이션에 널리 사용된다. 

고객이 FPGA에 로드한 구성 파일을 비트스트림이라고 한다. 자일링스처럼 FPGA 시장의 50%를 차지하는 FPGA 제조사들은 암호화 및 비트스트림 검증 메커니즘을 추가해, 고객들의 FPGA에 포함될 수 있는 지적 재산권과 기타 기밀을 보호할 수 있도록 했다. 독일 보훔 루르 대학교의 호르스트 궤르츠 연구소에서 IT 보안을 연구하는 연구팀이 자일링스 7-시리즈 및 버텍스-6 FPGA의 비트스트림 보안 메커니즘에서 비트 스트림의 암호를 해독하고 수정할 수 있는 설계 결함을 발견했다. 

연구팀은 제29회 USENIX 보안 심포지엄에서 발표될 논문에서 "연구팀이 공격을 시행한 결과, 모든 자일링스 7-시리즈 장치의 비트스트림 암호화 프로세스를 피할 수 있었을 뿐 아니라, 버텍스-6 장치에서는 부분적으로 보안 비트스트림의 암호를 해독할 수도 있었다"라고 밝혔다. 

이들은 "HMAC를 조정하여 비트스트림을 조작할 수도 있다. 일반적으로 아웃공격(Out attack)을 설정하는 것은 주요 프랙티스에서 흔히 볼 수 있는 것과 동일하다. 공격자는 필드 FPGA의 구성 인터페이스에만 액세스하면 된다. 비밀 암호 해독 키는 FPGA에 이미 저장된 상태다. 예를 들어, 키는 장치 제조 후 내부 배터리 지원 RAM(BBRAM) 또는 eFUS에 저장된다. 공격자는 키가 저장된 FPGA를 오라클로 사용하여 비트스트림의 암호를 해독할 수 있다"라고 밝혔다. 

스타블리드 공격을 개시하려면FPGA의 하드웨어 구성 인터페이스에 액세스해야 한다. 즉, 기기에 물리적으로 접근할 필요가 있다는 것을 의미한다. 그러나 일부 FPGA는 별도의 마이크로컨트롤러를 통해 프로그래밍 및 재프로그래밍되며 네트워크에 연결될 수 있다. 이 경우 공격은 원격으로도 실행될 수 있다. 

이 설계 결함은 실리콘에 존재하기 때문에 패치로 해결할 수 없으며, 자일링스 FPGA 후속 제품에서 개선될 것이라고 기대하는 수밖에 없다. 이 회사는 위 연구팀의 논문이 발행되기 전에 취약점에 대한 통지를 받았으며 고객에게 권고 사항을 보냈다. 

플래티퍼스
플래티퍼스(PLATYPUS)는 CPU 코어의 전력 소비량을 측정하는 데 사용되는 RAPL(실행 평균 전력 제한) 인터페이스를 남용하는 부채널 공격이다. 2011년 등장한 인텔 CPU(샌디 브릿지)에 상존한다. 이는 리눅스 커널 메모리 및 인텔 SGX 보안 엔클로저에서 암호화 키와 같은 기밀을 누설하기 위해 원격으로 실행할 수 있는 최초의 차등 전력 분석(differential power analysis) 공격이다. 

이 공격은 영국 버밍엄 대학교와 CISPA 헬름홀츠 정보 보안 센터의 연구팀이 고안했으며 2020년 11월에 발표됐다. 리눅스 커널 개발자는 권한 없는 애플리케이션이 RAPL 에너지 소비 데이터에 액세스하는 것을 방지함으로써 CVE-2020-8694 및 CVE-2020-8695라는 취약점을 해결했다. 

그러나 이는 인텔 소프트웨어 가드 확장(SGX)을 노린 ‘권한 있는 공격’(privileged attack) 벡터를 다루지 않는다. SGX는 CPU에 내장된 신뢰 실행 환경(TEE)으로, 운영체제가 완전히 손상된 경우에도 중요한 암호화 데이터를 안전하게 보호하는 게 본연의 역할이다. 이 공격을 막으려면 인텔이 릴리스한 CPU 마이크로코드 업데이트를 배포해야 한다. 

연구팀은 인텔 CPU에 공격을 시도한 결과 AMD, 엔비디아 및 ARM을 포함한 여타 칩 제조업체의 CPU 또한 액세스할 수 있는 온보드 에너지 미터가 있으며 이러한 공격에 취약할 수 있다고 경고했다. 

DRAM 메모리 로우 해머 공격(DRAM memory Rowhammer attacks)
로우 해머

로우 해머는 SDRAM 칩 안에서 메모리 셀의 동일한 행을 물리적으로 빠르게 여러 번 읽을 때 발생할 수 있는 물리적 효과다. 이 효과를 소위 해머링이라 불리기도 한다. 해머링을 당한 행의 셀에서 발생한 전하는 인접한 행으로 누출되면서 행에 있는 셀의 값을 변화시킬 수 있다. 비트 플립으로 알려진 이 효과가 발생 가능한 이유는 DDR3와 DDR4와 같은 최신 SDRAM 칩의 셀 집적도가 증가했기 때문이다. 

로우 해머 효과는 이미 오래 전부터 알려졌다. 구글의 프로젝트 제로(Project Zero) 팀원들은 2015년 3월에 로우 해머를 이용한 두 가지 특권 확대 악용 사례를 밝혀내면서 그것이 보안에 영향을 미칠 수 있다는 것을 처음으로 입증했다. 

로우해머.js
로우 해머.js는 자바스크립트를 이용해 구현한 로우 해머 공격이다. 이 취약점이 존재하는 한 악성 웹 페이지에 방문하기만 해도 원격으로 공격이 이뤄질 수 있다는 점이 밝혀졌다. 브라우저 벤더들은 이 공격을 완화하기 위한 조치를 취했다. 

드래머 - CVE-2016-6728
드래머(Drammer)는 안드로이드 기기를 대상으로 이뤄지는 것으로 알려진 로우 해머 유형의 공격이다. 모바일 기기 내의 메모리 칩은 드래머가 발견되기 전까지는 공격의 영향권에 있지 않은 것으로 여겨졌었다.

플립 풍수(Flip Feng Shui)
가상 머신을 대상으로 한 로우 해머 공격이다. 악의적인 게스트 가상 머신은 물리적 메모리의 비트를 플립(flip)해 통제 상태에 있는 다른 가상 머신에 영향을 줄 수 있다. 연구팀은 대상 가상 머신에서 오픈SSH 공개 키 인증을 해제하여 이를 입증했다. 

ECCPloit
ECCploit는 오류 수정 코드(ECC) 기능이 있는 SDRAM 칩에도 로우 해머 유형의 공격이 발생할 수 있음을 보여주는 공격이다. 일반적으로 서버에서 사용되는 이런 유형의 메모리는 로우 해머를 예방할 수 있다는 게 정설이다. 

스로우해머(Throwhammer)
스로우해머는 서버에 사용되는 것과 유사한 형태의 고속 네트워크 카드에 탑재된 RDMA(원격 직접 메모리 액세스) 기능을 활용해 네트워크 전반을 공격할 수 있는 로우 해머 공격을 뜻한다.

램블리드
램블리드(RAMBleed)는 로우 해머 효과를 사용할 경우 메모리 셀에서 데이터를 탈취하는 것이 가능하다는 것을 최초로 보여준 공격이다. 과거의 로우 해머 공격은 비트 플립을 통해 메모리 무결성 기능을 약화시켰고, 권한 상승 등 공격을 위한 여타 조건들을 유도할 수 있었다. 한편, 램블리드 공격은 행 해머링과 부채널을 사용함으로써 이뤄진다. 인접한 메모리 셀에 대한 정보를 추론해 데이터를 추출하는 게 목적이기 때문이다. 그런 점에서 램블리드는 멜트다운 및 스펙터와 비슷한 양상을 띤다. 

광범위한 영향을 미치는 펌웨어 취약점
블루본

블루본은 2017년 리눅스, 안드로이드, 윈도우 및 맥SO의 블루투스 스택 구현 과정에서 발표된 취약점이다. 이 취약점은 50억 개 이상의 기기에 영향을 미치는 것으로 추정된 바 있다. 컴퓨터의 경우 OS를 업데이트하기만 하면 비교적 쉽게 취약점을 해결할 수 있다. 반면, 블루투스 지원 스마트 시계, TV, 의료 기기, 자동차 인포테인먼트 시스템, 웨어러블 및 기타 사물인터넷 기기들은 펌웨어 업데이트를 해야 한다. 연구팀은 1년 후인 2018년에 20억 개 이상의 장치가 노출된 채로 남아 있을 것으로 추정했다.

크랙
크랙(KRACK) 또는 키 재설치 공격은 WPA2 무선 보안 표준의 약점을 이용한 것이다. WPA2 무선 보안 표준은 오늘날 사용되는 대부분의 무선 네트워크를 보호하는 데 사용된다. 하지만 표준 자체에 약점이 있었던 탓에, 홈 라우터와 기타 IoT 장치를 포함한 모든 유형의 장치에서 WPA2를 구현하는 데 문제가 발생했다. 이 취약점을 완화하려면 펌웨어 업데이트를 해야 했는데, 지원이 종료된 기기들은 오늘날까지 취약한 상태로 남아 있다.

불량 USB
지난 2014년 USB 썸 드라이브(thumb drive)의 마이크로컨트롤러를 재프로그래밍해 키보드를 비롯한 여타 장치를 스푸핑한 다음 컴퓨터를 제어하거나 데이터를 필터링하는 데 사용할 수 있다는 점이 밝혀졌다. 많은 USB 썸 드라이브가 공격에 노출된 상태로 있다. 

썬더스트라이크와 썬더스트라이크 2
썬더볼트 포트에 악의적인 장치를 연결하는 과정에서 펌웨어 루트킷을 설치하기 위해 애플 맥북의 펌웨어에 있는 취약점을 노리는 공격을 의미한다. 썬더스트라이크 2 (Thunderstrike 2)는 새로 삽입된 썬더볼트 장치를 손상시켜 웜이 활동할 수 있는 여지를 만들기도 했다. 

썬더클랩
썬더클랩은 썬더볼트 포트가 장착된 컴퓨터에서 특권 코드(privilege code)를 실행시킬 수 있음을 보여준 공격이다.

ROCA
코퍼스미스 공격 귀환(ROCA)은 인피니언 테크놀로지스의 신뢰 플랫폼 모듈(TPM) 및 보안 칩(SE)을 노리는 공격이다. TPM과 SE는 수천만 대의 비즈니스 컴퓨터, 서버, 하드웨어 인증 토큰 및 국가 ID 카드를 포함한 다양한 유형의 스마트 카드에 사용된다. 다양한 방식을 통해 생성된 RSA 키는 키를 복구할 목적으로 고안된 공격인 팩토라이제이션(factorization)에 점점 더 취약해진다. 연구원들은 여러 기기에서 생성된 개별 2048비트 RSA 키를 복구하는 데 드는 비용은 약 2만달러로, 1024비트 RSA 키의 경우 약 40달러로 추산했다.

인텔 관리 엔진
인텔 관리 엔진(ME)은 여러 인텔 CPU에 있는 전용 코프로세서이자 하위 시스템이며 아웃 오브밴드 관리 작업에 사용된다. 인텔 ME는 사용자 설치 방식의 운영 체제와 완전히 분리된 자체 경량 운영 체제를 실행한다. 이런 이유로 보안 커뮤니티에서는 종종 백도어라 불리곤 했다. 지난 수년간 인텔 ME에서는 심각한 취약점들이 발견되었으며, 이를 해결하려면 컴퓨터 제조업체가 제공하는 펌웨어 업데이트를 설치해야 한다. 이는 지원이 종료된 여러 구식 시스템은 업데이트를 받을 수 있는 가능성이 낮다는 것을 의미한다. 

*Lucian Constantin은 CSO의 수석 기자다. 정보 보안, 프라이버시, 데이터 보호 등을 취재한다. 
 


2021.01.13

하드웨어 및 펌웨어 취약점 33가지와 위협 가이드라인

Lucian Constantin | CSO
멜트다운과 스펙터 버그가 하드웨어와 펌웨어의 취약점을 공격할 수 있다는 점이 세간에 알려지면서 보안 취약점에 대한 경계심이 높아졌다. 본 기사에서는 특히 위협적인 하드웨어 관련 버그 33가지를 정리했다. 

2018년 1월, 멜트다운과 스펙터라는 이름의 CPU 보안 버그가 새로 발견돼 업계 전체에 비상에 걸렸다. CPU 메모리를 커널 공간과 사용자 공간으로 분리한다는 운영체제 보안의 기본 개념이 두 버그로 인해 와해됐기 때문이다. 이 보안 결함은 현대 CPU의 특징 가운데 하나인 ‘추측 실행’에서 비롯됐으며, 이 결함을 해결하기 위해 CPU 제조사, 디바이스 제조업체, 운영체제 개발업체가 역사상 가장 큰 규모의 조정 작업을 해야 했다. 
 
ⓒGetty Images Bank

하드웨어 설계로부터 비롯된 취약점은 멜트다운과 스펙터 이전에도 있었다. 하지만 두 버그가 초래할 수 있는 피해 범위가 광범위한 탓에 특히 보안 커뮤니티의 많은 관심을 불러일으켰다. 학계와 민간 연구자들은 CPU나 기타 하드웨어 구성요소에서 이뤄지는 로우 레벨 작동 과정을 연구해 이전보다 더 많은 문제를 찾아내고 있다. 

하드웨어의 보안 취약점 중에서는 새로운 구성요소를 출시해야 개선할 수 있는 것도 있고, 하드웨어 칩에 내장된 펌웨어를 업그레이드해 개선할 수 있는 것도 있다. 어떤 경우든지 간에 패치를 적용하는 일은 그리 간단하지 않기 때문에 이러한 결함은 오랫동안 영향을 미칠 수 있다. 

멜트다운으로 주의가 환기되기는 했지만 하드웨어 관련 취약점은 꾸준히 존재했다. 여기 특히 주의할 만한 하드웨어 관련 취약점들을 살펴본다. 

CPU 부채널 공격(CPU side-channel attacks)
스펙터 변종 1 - CVE-2017-5753

공격자는 바운드 체크 바이패스라고도 알려진 CVE-2017-5753을 통해 최신 CPU의 분기 예측 기능을 이용할 수 있다. CPU 캐시를 부채널로 사용함으로써 다른 프로세스에 할당된 메모리 속 정보를 추출하는 것이다. 이 경우 하나의 프로세스가 다른 프로세스의 중요 정보를 유출할 수도 있을 뿐 아니라, 사용자 메모리와 커널 메모리 사이의 권한 경계를 우회할 수도 있다. 인텔, IBM 그리고 일부 ARM CPU가 이 취약점에 노출돼 있다. 

스펙터 변종 2 - CVE-2017-5715
스펙터 변종 2는 변종 1과 동일한 영향을 끼치지만, 분기 표적 주입법(branch target injection)이라는 기법을 사용한다. 이 변종 스펙터를 효과적으로 예방하려면 CPU의 마이크로코드를 업데이트해야 한다. 이는 BIOS 및 UEFI 업데이트 또는 운영 체제에 의해 수행될 수 있다.

멜트다운 변종 3 - CVE-2017-5754
멜트다운 버그는 불량 데이터 캐시 적재(RDCL) 또는 제3의 CPU 추측실행 기능 결함이라고도 불리며, 최신 인텔 CPU의 비순차적 명령 실행 기능을 이용하는 취약점이다. 이 취약점을 이용하면 사용자 프로세스별로 설정된 보안 경계를 넘어 보호된 커널 메모리를 읽을 수 있다. 취약점 수정을 위해서는 운영 체제만 업데이트하면 되며, 여기에는 민감한 정보를 갖고 있는 커널 메모리를 좀 더 엄격하게 분리하는 작업이 수반된다. 예컨대, 리눅스의 커널 페이지 테이블 분리(KPTI)와 같은 메커니즘을 통해서 분리를 할 수 있다. 

멜트다운-GP - CVE-2018-3640
멜트다운의 변종 혹은 변종 3a는 시스템 레지스터의 추측 읽기(Speculative reads) 기능을 이용해 부채널의 정보를 수집한다. 이런 이유로 불량 시스템 레지스터 리드(Rogue System Register Read, RSRE)라고도 불린다. 이를 예방하려면 마이크로코드를 업데이트해야 한다. 

멜트다운-NM - CVE-2018-3665
추측실행 결함은 레이지FP(LazyFP)라 불리는 멜트다운과 관련이 있다. 이 결함은 FP는 부동 소수점 장치(FPU)의 상태 정보를 유출하는 데 사용될 수 있다. FPU는 수학적 연산을 가속화하는 데 사용되는 전문 연산 보조 프로세서이며 인텔의 최신 CPU에 내장돼 있다. 프로세스를 전환할 때 "lazy" FPU 대신 “eager"를 적용함으로써 이 취약점을 예방할 수 있다. 

스펙터-NG - CVE-2018-3639
스펙터 변종 4 혹은 추측 저장 우회(SSB)라고 불린다. 공격자들은 애플리케이션별로 할당된 메모리들이 강제로 공유되도록 만든 다음, 한 애플리케이션을 통해 다른 애플리케이션의 정보에 접근한다. 이 취약점을 해결하려면 마이크로코드와 운영체제를 업데이트해야 한다. 

스펙터-PHT - CVE-2018-3693
스펙터 1.1로도 알려진 이 스펙터 변종은 추측 저장소(speculative store)를 활용해 추측 버퍼 오버플로우를 만들어낸다. 스펙터에 소프트웨어적인 완화 조치를 취하더라도 이 변종을 이용하면 그런 조치를 우회하는 게 가능했다. 이 문제를 해결하려면 운영체제를 업데이트해야 한다. 

멜트다운-RW
스펙터 1.2로도 알려진 이 취약점은 추측실행 저장소를 활용해 읽기 전용 데이터와 코드 포인터를 덮어쓰게 만든다. 이는 소프트웨어 샌드박스 보안에 위배된다. 취약점을 완화하려면 운영체제를 업데이트해야 한다. 

포어섀도 OS - CVE-2018-3620
포어섀도(Foreshadow)는 L1 터미널 폴트라는 이름으로 알려져 있다. 포어섀도는 인텔 CPU의 L1 데이터 캐시에서 정보를 빼내는 추측실행 공격이다. 동일한 물리적 CPU를 여러 개의 가상 CPU로 분할하는 가상 머신에서는 이 공격을 특히 주의해야 한다. 이런 가상 CPU는 동일한 L1 캐시를 사용하기 때문이다. 공격자는 이 변종을 이용해 운영체제 또는 SMM(시스템 관리 모드)에서 정보를 추출할 수 있다. SMM은 운영체제와는 별도로 존재하는 CPU의 대안 운영 모드이다. BIOS와 UEFI 또는 로우 레벨 OEM 코드에 의해 사용되도록 설계됐다.  

포어섀도-VMM - CVE-2018-3646
포어섀도의 변종인 이 취약점은 가상 머신에 영향을 준다. 가상 머신에서 실행되고 있는 게스트 운영 체제가 이 변종을 이용해 다른 게스트의 가상 머신 혹은 하이퍼바이저의 민감한 메모리를 읽을 가능성이 있다.  

포어섀도-SGX - CVE-2018-3615
공격자가 인텔 SGX(소프트웨어 가드 확장)의 엔클레이브 메모리를 읽을 수 있게 해주는 포어섀도의 변종이다. SGX는 일부 인텔 CPU에서 제공하는 실행 환경이다. 운영 체제 자체가 손상된 경우에도 개발자는 SGX에서 데이터를 저장하고 코드를 안전하게 실행할 수 있다. 

멜트다운-PK 및 멜트다운-BND
멜트다운-PK(프로텍션 키 바이패스)와 멜트다운-BND(바운드 체크 바이패스)는 2018년 11월 학계에서 발표된 멜트다운의 두 가지 변종이다. 멜트다운-PK는 인텔 CPU에 영향을 미치며, 멜트다운-BND는 인텔과 AMD 모두에게 영향을 미친다.

스펙터-PHT-CA-OP, 스펙터-PHT-CA-IP 및 스펙터-PHT-SA-OP
CPU의 PHT(패턴 히스토리 테이블)를 활용하는 스펙터의 변종들이다. 멜트다운-PK 및 멜트다운-BND와  같은 시기에 발견됐다. 

스펙터-BTB-SA-IP 및 스펙터-BTB-SA-OP
브랜치 타겟 버퍼(BTB)를 활용하는 스펙터 공격의 변종이다. 2018년 11월에 멜트다운-PK와 멜트다운-BND를 발견한 팀이 찾아낸 스펙터 변종이다. 당시 이 팀은 "기존에 배치된 방어책을 비롯해 대부분의 방어책으로는 모든 변종을 완벽하게 예방할 수 없다"라고 결론을 내렸다. 

폴아웃 - CVE-2018-1226
마이크로아키텍처 스토어 버퍼 데이터 샘플링(MSBDS)으로도 알려진 폴아웃(Fallout)은 멜트다운과 유사하다. 해커는 이 취약점을 통해 보안 경계를 넘나들며 보호된 메모리 영역의 중요 정보를 유출할 수 있다. 이는 CPU를 노린 새로운 유형의 부채널 공격 중 하나다. 인텔은 이를 마이크로아키텍처 데이터 샘플링(MDS)이라 부른다. 폴아웃은 운영 체제와 하이퍼바이저에 모두를 취약하게 만들며, CPU 마이크로코드 업데이트를 통해 해결할 수 있다. 

RIDL - CVE-2018-1127 및 CVE-2018-1230
마이크로아키텍처 로드 포트 데이터 샘플링(MLPDS)과 마이크로아키텍처 필 버퍼 데이터 샘플링(MFBDS) MDS 공격의 두 가지 변종이다. 폴아웃과 마찬가지로, 이 취약점을 해결하려면 CPU 마이크로코드를 업데이트해야 한다. 

좀비 로드 - CVE-2019-11091
MDS 공격의 네 번째 변종이며 마이크로아키텍처 데이터 샘플링 캐시 불가능 메모리(MDSUM)로 알려져 있다. 폴아웃 및 RIDL과 마찬가지로, 민감한 커널이나 하이퍼바이저 메모리의 정보를 유출하는 데 사용될 수 있다.

스타블리드
스타블리드(Starbleed)는 자일링스(자일링스)가 만든 필드 프로그래머블 게이트 어레이 (FPGA)의 비트스트림 암호화 프로세스에 존재하는 설계 결함이다. 사전 설정된 명령어에 따라 컴퓨팅 작업을 수행하는 CPU와 달리, FPGA는 고객이 로직을 완전히 프로그래밍할 수 있는 통합 회로다. FPGA는 범용 CPU와 달리 특정한 한 가지 작업에 특화돼 있으며 항공우주, 재무 및 국방 같은 분야의 업무 혹은 안전에 중요한 애플리케이션에 널리 사용된다. 

고객이 FPGA에 로드한 구성 파일을 비트스트림이라고 한다. 자일링스처럼 FPGA 시장의 50%를 차지하는 FPGA 제조사들은 암호화 및 비트스트림 검증 메커니즘을 추가해, 고객들의 FPGA에 포함될 수 있는 지적 재산권과 기타 기밀을 보호할 수 있도록 했다. 독일 보훔 루르 대학교의 호르스트 궤르츠 연구소에서 IT 보안을 연구하는 연구팀이 자일링스 7-시리즈 및 버텍스-6 FPGA의 비트스트림 보안 메커니즘에서 비트 스트림의 암호를 해독하고 수정할 수 있는 설계 결함을 발견했다. 

연구팀은 제29회 USENIX 보안 심포지엄에서 발표될 논문에서 "연구팀이 공격을 시행한 결과, 모든 자일링스 7-시리즈 장치의 비트스트림 암호화 프로세스를 피할 수 있었을 뿐 아니라, 버텍스-6 장치에서는 부분적으로 보안 비트스트림의 암호를 해독할 수도 있었다"라고 밝혔다. 

이들은 "HMAC를 조정하여 비트스트림을 조작할 수도 있다. 일반적으로 아웃공격(Out attack)을 설정하는 것은 주요 프랙티스에서 흔히 볼 수 있는 것과 동일하다. 공격자는 필드 FPGA의 구성 인터페이스에만 액세스하면 된다. 비밀 암호 해독 키는 FPGA에 이미 저장된 상태다. 예를 들어, 키는 장치 제조 후 내부 배터리 지원 RAM(BBRAM) 또는 eFUS에 저장된다. 공격자는 키가 저장된 FPGA를 오라클로 사용하여 비트스트림의 암호를 해독할 수 있다"라고 밝혔다. 

스타블리드 공격을 개시하려면FPGA의 하드웨어 구성 인터페이스에 액세스해야 한다. 즉, 기기에 물리적으로 접근할 필요가 있다는 것을 의미한다. 그러나 일부 FPGA는 별도의 마이크로컨트롤러를 통해 프로그래밍 및 재프로그래밍되며 네트워크에 연결될 수 있다. 이 경우 공격은 원격으로도 실행될 수 있다. 

이 설계 결함은 실리콘에 존재하기 때문에 패치로 해결할 수 없으며, 자일링스 FPGA 후속 제품에서 개선될 것이라고 기대하는 수밖에 없다. 이 회사는 위 연구팀의 논문이 발행되기 전에 취약점에 대한 통지를 받았으며 고객에게 권고 사항을 보냈다. 

플래티퍼스
플래티퍼스(PLATYPUS)는 CPU 코어의 전력 소비량을 측정하는 데 사용되는 RAPL(실행 평균 전력 제한) 인터페이스를 남용하는 부채널 공격이다. 2011년 등장한 인텔 CPU(샌디 브릿지)에 상존한다. 이는 리눅스 커널 메모리 및 인텔 SGX 보안 엔클로저에서 암호화 키와 같은 기밀을 누설하기 위해 원격으로 실행할 수 있는 최초의 차등 전력 분석(differential power analysis) 공격이다. 

이 공격은 영국 버밍엄 대학교와 CISPA 헬름홀츠 정보 보안 센터의 연구팀이 고안했으며 2020년 11월에 발표됐다. 리눅스 커널 개발자는 권한 없는 애플리케이션이 RAPL 에너지 소비 데이터에 액세스하는 것을 방지함으로써 CVE-2020-8694 및 CVE-2020-8695라는 취약점을 해결했다. 

그러나 이는 인텔 소프트웨어 가드 확장(SGX)을 노린 ‘권한 있는 공격’(privileged attack) 벡터를 다루지 않는다. SGX는 CPU에 내장된 신뢰 실행 환경(TEE)으로, 운영체제가 완전히 손상된 경우에도 중요한 암호화 데이터를 안전하게 보호하는 게 본연의 역할이다. 이 공격을 막으려면 인텔이 릴리스한 CPU 마이크로코드 업데이트를 배포해야 한다. 

연구팀은 인텔 CPU에 공격을 시도한 결과 AMD, 엔비디아 및 ARM을 포함한 여타 칩 제조업체의 CPU 또한 액세스할 수 있는 온보드 에너지 미터가 있으며 이러한 공격에 취약할 수 있다고 경고했다. 

DRAM 메모리 로우 해머 공격(DRAM memory Rowhammer attacks)
로우 해머

로우 해머는 SDRAM 칩 안에서 메모리 셀의 동일한 행을 물리적으로 빠르게 여러 번 읽을 때 발생할 수 있는 물리적 효과다. 이 효과를 소위 해머링이라 불리기도 한다. 해머링을 당한 행의 셀에서 발생한 전하는 인접한 행으로 누출되면서 행에 있는 셀의 값을 변화시킬 수 있다. 비트 플립으로 알려진 이 효과가 발생 가능한 이유는 DDR3와 DDR4와 같은 최신 SDRAM 칩의 셀 집적도가 증가했기 때문이다. 

로우 해머 효과는 이미 오래 전부터 알려졌다. 구글의 프로젝트 제로(Project Zero) 팀원들은 2015년 3월에 로우 해머를 이용한 두 가지 특권 확대 악용 사례를 밝혀내면서 그것이 보안에 영향을 미칠 수 있다는 것을 처음으로 입증했다. 

로우해머.js
로우 해머.js는 자바스크립트를 이용해 구현한 로우 해머 공격이다. 이 취약점이 존재하는 한 악성 웹 페이지에 방문하기만 해도 원격으로 공격이 이뤄질 수 있다는 점이 밝혀졌다. 브라우저 벤더들은 이 공격을 완화하기 위한 조치를 취했다. 

드래머 - CVE-2016-6728
드래머(Drammer)는 안드로이드 기기를 대상으로 이뤄지는 것으로 알려진 로우 해머 유형의 공격이다. 모바일 기기 내의 메모리 칩은 드래머가 발견되기 전까지는 공격의 영향권에 있지 않은 것으로 여겨졌었다.

플립 풍수(Flip Feng Shui)
가상 머신을 대상으로 한 로우 해머 공격이다. 악의적인 게스트 가상 머신은 물리적 메모리의 비트를 플립(flip)해 통제 상태에 있는 다른 가상 머신에 영향을 줄 수 있다. 연구팀은 대상 가상 머신에서 오픈SSH 공개 키 인증을 해제하여 이를 입증했다. 

ECCPloit
ECCploit는 오류 수정 코드(ECC) 기능이 있는 SDRAM 칩에도 로우 해머 유형의 공격이 발생할 수 있음을 보여주는 공격이다. 일반적으로 서버에서 사용되는 이런 유형의 메모리는 로우 해머를 예방할 수 있다는 게 정설이다. 

스로우해머(Throwhammer)
스로우해머는 서버에 사용되는 것과 유사한 형태의 고속 네트워크 카드에 탑재된 RDMA(원격 직접 메모리 액세스) 기능을 활용해 네트워크 전반을 공격할 수 있는 로우 해머 공격을 뜻한다.

램블리드
램블리드(RAMBleed)는 로우 해머 효과를 사용할 경우 메모리 셀에서 데이터를 탈취하는 것이 가능하다는 것을 최초로 보여준 공격이다. 과거의 로우 해머 공격은 비트 플립을 통해 메모리 무결성 기능을 약화시켰고, 권한 상승 등 공격을 위한 여타 조건들을 유도할 수 있었다. 한편, 램블리드 공격은 행 해머링과 부채널을 사용함으로써 이뤄진다. 인접한 메모리 셀에 대한 정보를 추론해 데이터를 추출하는 게 목적이기 때문이다. 그런 점에서 램블리드는 멜트다운 및 스펙터와 비슷한 양상을 띤다. 

광범위한 영향을 미치는 펌웨어 취약점
블루본

블루본은 2017년 리눅스, 안드로이드, 윈도우 및 맥SO의 블루투스 스택 구현 과정에서 발표된 취약점이다. 이 취약점은 50억 개 이상의 기기에 영향을 미치는 것으로 추정된 바 있다. 컴퓨터의 경우 OS를 업데이트하기만 하면 비교적 쉽게 취약점을 해결할 수 있다. 반면, 블루투스 지원 스마트 시계, TV, 의료 기기, 자동차 인포테인먼트 시스템, 웨어러블 및 기타 사물인터넷 기기들은 펌웨어 업데이트를 해야 한다. 연구팀은 1년 후인 2018년에 20억 개 이상의 장치가 노출된 채로 남아 있을 것으로 추정했다.

크랙
크랙(KRACK) 또는 키 재설치 공격은 WPA2 무선 보안 표준의 약점을 이용한 것이다. WPA2 무선 보안 표준은 오늘날 사용되는 대부분의 무선 네트워크를 보호하는 데 사용된다. 하지만 표준 자체에 약점이 있었던 탓에, 홈 라우터와 기타 IoT 장치를 포함한 모든 유형의 장치에서 WPA2를 구현하는 데 문제가 발생했다. 이 취약점을 완화하려면 펌웨어 업데이트를 해야 했는데, 지원이 종료된 기기들은 오늘날까지 취약한 상태로 남아 있다.

불량 USB
지난 2014년 USB 썸 드라이브(thumb drive)의 마이크로컨트롤러를 재프로그래밍해 키보드를 비롯한 여타 장치를 스푸핑한 다음 컴퓨터를 제어하거나 데이터를 필터링하는 데 사용할 수 있다는 점이 밝혀졌다. 많은 USB 썸 드라이브가 공격에 노출된 상태로 있다. 

썬더스트라이크와 썬더스트라이크 2
썬더볼트 포트에 악의적인 장치를 연결하는 과정에서 펌웨어 루트킷을 설치하기 위해 애플 맥북의 펌웨어에 있는 취약점을 노리는 공격을 의미한다. 썬더스트라이크 2 (Thunderstrike 2)는 새로 삽입된 썬더볼트 장치를 손상시켜 웜이 활동할 수 있는 여지를 만들기도 했다. 

썬더클랩
썬더클랩은 썬더볼트 포트가 장착된 컴퓨터에서 특권 코드(privilege code)를 실행시킬 수 있음을 보여준 공격이다.

ROCA
코퍼스미스 공격 귀환(ROCA)은 인피니언 테크놀로지스의 신뢰 플랫폼 모듈(TPM) 및 보안 칩(SE)을 노리는 공격이다. TPM과 SE는 수천만 대의 비즈니스 컴퓨터, 서버, 하드웨어 인증 토큰 및 국가 ID 카드를 포함한 다양한 유형의 스마트 카드에 사용된다. 다양한 방식을 통해 생성된 RSA 키는 키를 복구할 목적으로 고안된 공격인 팩토라이제이션(factorization)에 점점 더 취약해진다. 연구원들은 여러 기기에서 생성된 개별 2048비트 RSA 키를 복구하는 데 드는 비용은 약 2만달러로, 1024비트 RSA 키의 경우 약 40달러로 추산했다.

인텔 관리 엔진
인텔 관리 엔진(ME)은 여러 인텔 CPU에 있는 전용 코프로세서이자 하위 시스템이며 아웃 오브밴드 관리 작업에 사용된다. 인텔 ME는 사용자 설치 방식의 운영 체제와 완전히 분리된 자체 경량 운영 체제를 실행한다. 이런 이유로 보안 커뮤니티에서는 종종 백도어라 불리곤 했다. 지난 수년간 인텔 ME에서는 심각한 취약점들이 발견되었으며, 이를 해결하려면 컴퓨터 제조업체가 제공하는 펌웨어 업데이트를 설치해야 한다. 이는 지원이 종료된 여러 구식 시스템은 업데이트를 받을 수 있는 가능성이 낮다는 것을 의미한다. 

*Lucian Constantin은 CSO의 수석 기자다. 정보 보안, 프라이버시, 데이터 보호 등을 취재한다. 
 


X