[논문 리뷰] Speculose: Analyzing the Security Implications of Speculative Execution in CPUs
이 논문은 현대 CPU에서의 사전 실행에 대한 종합적인 분석인 Speculose를 소개하며, 미-commit된 사전 실행으로 인한 측면 채널 유출이 커널 및 사용자 공간 ASLR을 우회하는 데 악용될 수 있음을 드러낸다. 캐시 상태와 파ip라인 정리 시간을 관찰함으로써 공격자는 Linux에서 3초 이내, Windows 10에서 1초 이내에 매핑된 커널 페이지를 탐지하고 KASLR을 해체할 수 있다.
Whenever modern CPUs encounter a conditional branch for which the condition cannot be evaluated yet, they predict the likely branch target and speculatively execute code. Such pipelining is key to optimizing runtime performance and is incorporated in CPUs for more than 15 years. In this paper, to the best of our knowledge, we are the first to study the inner workings and the security implications of such speculative execution. We revisit the assumption that speculatively executed code leaves no traces in case it is not committed. We reveal several measurable side effects that allow adversaries to enumerate mapped memory pages and to read arbitrary memory---all using only speculated code that was never fully executed. To demonstrate the practicality of such attacks, we show how a user-space adversary can probe for kernel pages to reliably break kernel-level ASLR in Linux in under three seconds and reduce the Windows 10 KASLR entropy by 18~bits in less than a second.
연구 동기 및 목표
- 사양 실행의 보안 영향을 조사하기 위해, 성능에 핵심적인 역할을 하면서도 대부분 간과된 현대 CPU에서의 사전 실행에 대해 연구한다.
- 지시문이 커밋되지 않더라도 관측 가능한 부작용이 없을 것이라는 가정을 도전한다.
- 사전 실행의 측면 채널이 커널 및 사용자 공간 주소 공간 레이아웃 무작위화(ASLR)를 해체하는 데 어떻게 이용될 수 있는지 보여준다.
- 보호된 메모리 영역, 특히 커널 메모리에 대한 접근을 전통적인 보호 메커니즘을 트리거하지 않고 사전 실행을 통해 가능하게 할 수 있는지 분석한다.
- Linux와 Windows 10과 같은 실세계 운영 체제에서 일반 하드웨어를 사용하여 이러한 공격의 실용성을 평가한다.
제안 방법
- 현대 x86 및 ARM 프로세서에서의 분기 예측 및 사전 실행 메커니즘을 분석하기 위해 CPU 동작을 역공학적으로 분석하였다.
- 두 가지 주요 측면 채널을 식별: 사전 실행 중 캐시 상태 변화와 지시문 파이프라인 정리 시간의 차이.
- 지시문을 커밋하지 않고도 메모리 페이지를 탐색할 수 있도록 설계 및 구현한 공격 기법을 개발하였다.
- 페이지 장애(정지)와 접근 위반(0으로 설정된 결과)의 차이를 활용하여 매핑된 커널 페이지와 매핑되지 않은 페이지를 구분하였다.
- 시간 측정 및 캐시 탐색 기법을 사용하여 가상 메모리 페이지가 커널 공간에 매핑되어 있는지 여부를 탐지하였다.
- 실제 시스템(Ubuntu 16.04, Windows 10)에서 일반 하드웨어를 사용하여 성능과 신뢰성을 검증하기 위해 공격를 평가하였다.
실험 결과
연구 질문
- RQ1현대 CPU에서의 사전 실행은 지시문이 최종적으로 커밋되지 않더라도 관측 가능한 부작용을 통해 정보를 泄露할 수 있는가?
- RQ2권한이 없는 사용자 공간 공격자는 얼마나 많은 정도로 사전 실행을 이용해 커널 수준의 메모리 보호 메커니즘인 KASLR을 우회할 수 있는가?
- RQ3사전 실행에서 데이터 유출을 가능하게 하는 측정 가능한 측면 채널은 무엇이며, 이를 어떻게 신뢰성 있게 악용할 수 있는가?
- RQ4사전 실행은 사용자 공간 및 커널 공간 메모리 레이아웃의 ASLR 보안 보장을 어떻게 영향을 미치는가?
- RQ5사전 실행을 이용해 매핑된 메모리 페이지와 매핑되지 않은 페이지를 구분할 수 있는가? 만약 가능하다면, 이러한 공격의 성능 특성은 어떠한가?
주요 결과
- 지시문이 커밋되지 않더라도 캐시 상태 변화와 파이프라인 정리 시간의 차이를 통해 사전 실행이 데이터를 泄露할 수 있다.
- 접근 위반이 발생하면(매핑되지 않은 페이지에 접근할 경우) 사전 실행이 정지되지만, 유효한 접근은 그렇지 않기 때문에 공격자는 이를 관찰함으로써 매핑된 커널 페이지를 탐지할 수 있다.
- 저자들은 사용자 공간 코드만을 사용하여 커널 버전 4.13.0을 탑재한 Ubuntu 16.04에서 3초 이내에 커널 ASLR을 성공적으로 해체하였다.
- Windows 10에서는 공격가 KASLR 엔트로피를 1초 이내로 18비트 감소시켜 커널 주소 무작위화를 상당히 약화시켰다.
- 사전 실행은 접근 위반 시 읽기 결과가 0으로 설정되기 때문에 커널 메모리의 직접 읽기를 허용하지 않지만, 이 행동이 페이지 매핑 탐지에 신뢰할 수 있는 측면 채널을 만든다.
- 이 공격은 일반 하드웨어에서 실용적이며, Meltdown 및 Spectre의 공개 공개 이전에 수행되었기 때문에 사전 실행 측면 채널이 널리 인식되기 이전부터 알려진 위협이었다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.