보안 / 퍼스널 컴퓨팅

인텔 CPU를 노리는 2차 멜트다운 경고 “인텔의 예측실행기법, 또 한 번 도마 위에 올라”

Lucian Constantin | CSO 2019.05.16

해커가 가상 머신 하이퍼바이저, 운영 체제 커널, 인텔 SGX에 적용되는 보안 경계를 뚫을 수 있는 새로운 결함이 인텔 프로세서에서 발견됐다. 이 취약점을 악용하면 서버와 엔드포인트 시스템 양쪽 모두의 데이터가 위험에 노출된다. 새로운 공격 방법을 사용하면 보호되는 메모리 구역에서 비밀번호, 암호화 키 같은 민감한 비밀 정보를 빼낼 수 있고, 무엇보다 지금까지의 멜트다운(Meltdown) 보완책으로는 차단되지 않는다는 점이 문제다.
 
약 1년 전 컴퓨터 업계를 강타한 멜트다운과 스펙터(Spectre) 공격은 운영체제 커널과 비특권 애플리케이션 사이, 또는 같은 서버에서 실행되는 서로 다른 가상 머신 사이의 메모리 격리가 생각만큼 철저하지 않다는 사실을 드러냈다. 이러한 공격은 예측 실행(speculative execution)이라는 현대 CPU의 성능 향상 기능으로 CPU 캐시 내에서 데이터가 액세스되는 방법을 분석해 정보를 훔친다.
 
이후 연구 커뮤니티는 ‘사이드 채널’ 기법도 추가로 발견했다. 공격자는 사이드 채널을 통해 데이터가 예측 실행 중인 CPU의 마이크로아키텍처 구성요소를 거치면서 처리되는 과정을 분석하고, 비밀 정보에 직접 액세스할 권한이 없는 상태에서도 해당 정보를 재구성한다.
 
지난 화요일, 학계와 민간 부문의 여러 연구원이 멜트다운 및 스펙터와 동일한 영향을 미치며 작년 비공개로 인텔에 보고됐었던 새로운 공격을 공개했다. 새로운 공격 방법의 차이점은 인텔 CPU의 캐시가 아니라, 버퍼를 사용해 데이터를 빼낸다는 점이다.
 
암스테르담 자유 대학교 연구팀은 새로운 취약점에 대한 정보를 공유하기 위해 마련한 웹사이트에서 “이 공격은 기존 공격과 달리 CPU 내부 버퍼(라인 필 버퍼, 로드 포트, 저장 버퍼)에서 CPU 캐시에 저장되지 않는 데이터를 포함한 임의의 전송 중 데이터를 유출할 수 있다. 예측 실행 공격에 대응하는 기존 방어 방법은 충분하지 않으며, 심지어 공격을 더 악화하는 경우도 있다. 공격자는 인텔 CPU 내부 깊은 곳의 취약점을 이용해 민감한 데이터를 획득할 수 있다”고 설명했다.
 

마이크로아키텍처 데이터 샘플링 4종

인텔은 이 새로운 공격 방법을 마이크로아키텍처 데이터 샘플링(MDS)으로 지칭하며, 보고된 문제에 각각의 CVE 번호를 붙여 4개의 취약점으로 분류했다.


•    CVE-2018-12126 – 마이크로아키텍처 저장소 버퍼 데이터 샘플링(MSBDS)
•    CVE-2018-12127 – 마이크로아키텍처 로드 포트 데이터 샘플링(MLPDS)
•    CVE-2018-12130 – 마이크로아키텍처 필 버퍼 데이터 샘플링(MFBDS)
•    CVE-2019-11091 – 마이크로아키텍처 데이터 샘플링 캐시 불가 메모리(MDSUM)

이 중 3개(MLPDS, MFBDS, MDSUM)는 암스테르담 자유 대학의 시스템 및 네트워크 보안 그룹(VUSec)에서 작성한 연구 논문에 등장한다. VUSec 연구팀이 이 사이드 채널 공격 방법에 붙인 이름은 악성 전송 데이터 로드(Rogue In-Flight Data Load, RIDL)다.

네 번째 취약점인 MSBDS는 미시건 대학, 우스터 폴리테크닉 대학, 뢰번 대학교, 그라츠 공과대학교, 애들레이드 대학교가 작성한 별도의 연구 논문에 나온다. MSBDS는 저장소 버퍼의 데이터를 유출할 수 있으며 폴아웃(Fallout)이라는 이름으로 불리고 있다. MSBDS는 공격자가 메모리 침투 취약점을 악용하기가 어렵게 하기 위해 만들어진 운영체제 메커니즘인 커널 주소 공간 레이아웃 난수화(KASLR)를 무력화하는 데 도움이 되는 메모리 정보를 유출하는 데도 사용된다.
 
연구진은 웹사이트에서 “아이러니하게도 인텔이 멜트다운을 차단하기 위해 커피레이크 리프레시 i9 CPU에 최근 도입한 하드웨어 대응책으로 인해 더 이전 하드웨어보다 폴아웃에 더욱 취약해졌다”고 지적했다.
 
지난 1년 동안 다른 연구원도 독립적으로 동일한 결함을 발견해서 인텔에 보고했다. 당시 마이크로소프트 연구원이었던 독일 헬름홀츠 정보보안 센터(CISPA)의 조르지 메이수라제, 그라츠 기술대학교의 다니엘 그러스 팀, 비트디펜더의 댄 호레아 루타스 팀, 오라클의 볼로디미르 피쿠르, 치후 360(QiHoo 360)의 레이 시 등이 결함을 보고했다.
 
이는 전반적으로 CPU 및 하드웨어 관련 결함에 대한 연구 커뮤니티의 관심이 증가하고 있으며, 독립 연구원도 동일한 취약점을 찾을 수 있음을 의미한다. 이 점은 공격자 역시 마찬가지다.
 

2차 멜트다운 방식과 대상

이 취약점은 서버, 데스크톱, 노트북에 사용되는 현대 인텔 CPU에 영향을 미친다. 인텔은 웹사이트와 소프트웨어 개발자용 백서에 영향을 받을 가능성이 있는 CPU 목록을 공개했다.
 
VUSec에 따르면 AMD와 ARM은 VUSec의 논문을 살펴본 후 자사 CPU는 이러한 문제에 해당되지 않는다고 밝혔다.
 
이 결함은 비특권 애플리케이션, 또는 브라우저 내에서 실행되는 자바스크립트와 같은 악성 프로세스에서 메모리 격리 경계를 뚫고 다른 프로세스의 데이터를 획득하는 데 악용될 수 있다.
 
VUSec 연구팀은 가상 머신을 사용해서 같은 물리적 CPU 코어를 공유하는(다중 테넌트 클라우드 환경에서 일반적인 형태) 다른 가상 머신의 /etc/shadow 파일의 내용을 획득하는 개념 증명을 실행했다. 권한 없는 프로세스를 사용해서 리눅스 커널의 /proc/version 정보를 획득하는 다른 개념 증명도 있다.
 
이러한 공격은 사이드 채널 공격이므로 데이터 값이 직접 읽히는 것이 아니라 CPU 예측 실행 중에 데이터 값이 버퍼에 로드되는 양상을 바탕으로 추론된다. 예측 실행은 프로세스에서 요구하기 전에 명령어 경로를 앞서 실행해서 작업 속도를 높이기 위해 개발된 기능이다.
 
이 기능은 프로그램이 코드에서 선택할 실행 경로를 미리 추정하는 알고리즘을 기반으로 한다. 추정이 틀린 경우 생성된 데이터는 삭제되고 실행은 올바른 경로를 따라 지속된다. 그러나 데이터가 캐시 또는 버퍼(이 경우에 해당)에 있는 동안 로컬 공격자가 데이터에 대한 정보를 추론할 수 있는 기회도 함께 열리게 된다.
 
VUSec 연구진은 논문에서 “RIDL의 기원은 CPU가 예측 부하를 대상으로 작업과 무관한 CPU 내부 전송 데이터를 제공하게끔 유도하는 마이크로 최적화에 있다. 본질적으로 RIDL은 보안 영역을 분리하는 벽에 유리창을 만들어 공격자가 CPU 구성 요소의 흐름을 엿들을 수 있게 해준다”고 설명했다.
 
암스테르담 대학의 시스템 보안 교수 허버트 보스는 CSO와의 인터뷰에서 데이터를 획득하는 방법에는 두 가지가 있다고 말했다. 하나는 모든 데이터를 마구잡이로 수집하고 이후 자세히 살펴보면서 의미를 파악하고 흥미로운 정보를 추출하는 것, 다른 하나는 공격자가 실제로 관심을 가진 데이터를 피해자가 처리하고 액세스하도록 강제하는 방법이다.
 
예를 들어 가상머신 개념 증명 공격에서 연구원은 SSH 연결을 반복해서 열어 루트 인증을 시도했다. 각 테스트에서는 대상 가상 머신의 운영체제가 시스템 계정의 비밀번호 해시가 포함된 /etc/shadow에 액세스하도록 강제했다.
 
전체 파일을 재구성할 정도로 충분한 정보를 얻기까지 약 24시간이 소요됐지만 다른 MDS 공격 시나리오에서는 단 몇 밀리초만에 목표한 데이터를 찾는 것도 가능했다. 보스는 시간은 공격자가 원하는 것과 선택하는 방법에 따라 달라진다고 말했다.
 

MDS 영향력을 줄이는 방법

인텔은 이메일 성명에서 “마이크로아키텍처 데이터 샘플링(MDS)은 최근의 8세대 및 9세대 인텔 코어 프로세서와 2세대 인텔 제온 스케일러블 프로세서 제품군 상당수에서 이미 하드웨어 수준에서 해결됐다. 영향을 받는 다른 제품의 경우 마이크로코드 업데이트를 통한 해결책과, 그에 대응하는 운영체제 및 하이퍼바이저 소프트웨어 업데이트가 오늘부터 함께 제공된다. 웹사이트에서 더 자세한 내용을 볼 수 있으며, 모든 사용자에게 있어 최선의 보호 방법은 시스템을 최신 상태로 유지하는 것”이라고 밝혔다.
 
CPU 마이크로코드 업데이트는 운영체제와 소프트웨어 개발자가 버퍼를 덮어쓰고 기한이 지난 데이터가 노출되지 않도록 사용하는 새로운 명령어를 추가한다. 마이크로코드 업데이트는 스펙터 해결책과 마찬가지로 UEFI/BIOS 업데이트의 일부로 영구 배포되거나 운영체제 업체를 통해 배포된 다음 재부팅할 때마다 커널에 의해 적용될 수 있다.
 
마이크로코드 해결책이 없는 경우 소프트웨어 및 운영체제 업체는 특정 명령어 시퀀스를 사용해서 똑같은 버퍼 덮어쓰기 효과를 낼 수 있다. 이러한 시퀀스는 인텔 백서에 잘 나와 있고 프로세서 제품군마다 다를 수 있다.
 
보스에 따르면 소프트웨어 기반 해결책은 마이크로코드 기반 방법에 비해 성능에 미치는 영향이 크지만, 두 방법 모두 실제로 버퍼 덮어쓰기 명령어를 사용하는 동작은 운영체제와 소프트웨어 업체에 달렸다. 즉, 사용자는 운영체제 업체와 하이퍼바이저 업체가 제공하는 패치를 받아야 한다.
 
VUSec의 또 다른 권장사항은 동시 멀티 스레딩(SMT), 즉 인텔 하이퍼스레딩 기술을 비활성화하는 것이다. 모든 공격을 막지는 못하지만 대부분을 차단할 수 있고 나머지 부분도 실행하기가 더 어렵게 된다. SMT를 비활성화할 경우 단점은 특정 워크로드의 성능이 저하될 수 있다는 것이다. 인텔 백서에는 SMT를 사용하는 환경을 위한 권장 사항이 나와 있다.
 
작년 CPU 버퍼와 관련된 다른 취약점이 공개된 후 오픈BSD의 개발자들이 커널 스케줄러에서 SMT를 기본으로 비활성화할 것을 결정했다는 점도 눈여겨볼 부분이다. 오픈BSD 개발자들은 당시 “많은 현대 시스템이 더 이상 BIOS 설정에서 하이퍼스레딩을 비활성화하는 기능을 제공하지 않으므로 오픈BSD는 스케줄러에서 부가적인 프로세서 스레드 사용을 비활성화하는 방법을 제공한다. 또한, 심각한 위험이 있다는 판단에 따라 기본적으로 이 기능을 비활성화했다”고 밝혔다.
 
한편, VUSec 연구원은 특정 유형의 사이드 채널 예측 실행 공격에 대처하는 스팟 보완책이 장기적인 해결 방법은 아니라고 주장한다. 보완책을 우회하는 새로운 공격이 계속 등장할 것이기 때문이다.
 
연구진은 “여기서 얻은 교훈은 실무적인 소프트웨어 보완책으로 RIDL 유형의 공격에 대처하는 것은 쉽지 않고, 예측 실행 공격 시대를 끝내기 위해서는 더 근본적인 방법이 필요하다는 것이다. 소프트웨어의 실무적 보완책은 RIDL에 맞지 않으므로 더 근본적인 해결 방법이 필요하다”고 말했다.
 
문제는 예측 실행으로 인해 발생하는 위험을 없애도록 아키텍처를 변경하려면 이미 익숙해진 CPU 성능의 일부를 보안의 대가로 희생해야 할 수도 있다는 점이다. editor@itworld.co.kr

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.