[논문 리뷰] Restricting Control Flow During Speculative Execution with Venkman
Venkman은 브랜치 타겟 버퍼(BTB)와 리턴 스택 버퍼(RSB)를 악용하는 스펙트르 공격을 방지하기 위해 코드를 변형하여 모든 컨트롤 플로우 타겟을 고정 크기의 번들로 정렬함으로써, 사전 실행이 보호 지시어(예: 팔링스 또는 SFI 검사)를 건너뛸 수 없도록 보장하는 소프트웨어 전용 방어 기법이다. BTB/RSB를 다시 초기화하거나 공유를 줄이지 않으면서도 강력한 보안을 확보하며, SPEC 벤치마크에서 평균 3.47배의 성능 오버헤드를 기록한다.
Side-channel attacks such as Spectre that utilize speculative execution to steal application secrets pose a significant threat to modern computing systems. While program transformations can mitigate some Spectre attacks, more advanced attacks can divert control flow speculatively to bypass these protective instructions, rendering existing defenses useless. In this paper, we present Venkman: a system that employs program transformation to completely thwart Spectre attacks that poison entries in the Branch Target Buffer (BTB) and the Return Stack Buffer (RSB). Venkman transforms code so that all valid targets of a control-flow transfer have an identical alignment in the virtual address space; it further transforms all branches to ensure that all entries added to the BTB and RSB are properly aligned. By transforming all code this way, Venkman ensures that, in any program wanting Spectre defenses, all control-flow transfers, including speculative ones, do not skip over protective instructions Venkman adds to the code segment to mitigate Spectre attacks. Unlike existing defenses, Venkman does not reduce sharing of the BTB and RSB and does not flush these structures, allowing safe sharing and reuse among programs while maintaining strong protection against Spectre attacks. We built a prototype of Venkman on an IBM POWER8 machine. Our evaluation on the SPEC benchmarks and selected applications shows that Venkman increases execution time to 3.47$ imes$ on average and increases code size to 1.94$ imes$ on average when it is used to ensure that fences are executed to mitigate Spectre attacks. Our evaluation also shows that Spectre-resistant Software Fault Isolation (SFI) built using Venkman incurs a geometric mean of 2.42$ imes$ space overhead and 1.68$ imes$ performance overhead.
연구 동기 및 목표
- 팔링스나 SFI와 같은 소프트웨어 방어 조치를 우회하기 위해 BTB와 RSB를 오염시키는 스펙트르 변종-2 공격을 해결하기 위함.
- 하드웨어 마이크로코드 업데이트가 필요 없이 BTB 및 RSB 오염을 완전히 제거하는 소프트웨어 전용 방어 기법을 설계하기 위함.
- 모든 컨트롤 플로우 타겟을 번들 수준에서 정렬함으로써 사전 실행이 보호 지시어를 건너뛸 수 없도록 보장하기 위함.
- BTB와 RSB를 프로그램 간에 안전하게 공유하면서도 강력한 보안 보장을 유지하기 위함.
- 실세계 워크로드에서 방어 기법의 성능 및 코드 크기 오버헤드를 평가하기 위함.
제안 방법
- 모든 시스템 코드를 변형하여 모든 컨트롤 플로우 타겟이 고정 크기의 번들 시작 위치로 정렬되도록 하되, 모든 번들은 공통의 2의 거듭제곱 배수 경계에 맞추어 정렬한다.
- 브랜치 지시어를 수정하여 대상 주소가 브랜치 전에 가장 가까운 번들 경계로 정렬되도록 하여, BTB 및 RSB 항목이 모두 번들 시작 위치를 가리키도록 보장한다.
- 팔링스 지시어나 SFI 검사와 같은 보호 지시어를 그들이 보호하는 지시어와 같은 번들에 삽입함으로써 사전 실행에 의한 우회를 방지한다.
- 콜 및 리턴 지시어가 번들의 끝에 위치하도록 강제하여 리턴 주소도 번들 수준에서 정렬되도록 보장한다.
- 모든 바이너리가 일관되게 변형되도록 시스템 수준의 컴파일 파이프라인과 통합함으로써, 신뢰할 수 없는 코드가 BTB나 RSB를 오염시키는 것을 방지한다.
- IBM POWER8에서 프로토타입을 구현하여 SPEC 벤치마크 및 특정 응용 프로그램에서의 성능 및 코드 크기 오버헤드를 평가한다.
실험 결과
연구 질문
- RQ1하드웨어 마이크로코드 업데이트 없이 소프트웨어 전용 방어 기법이 BTB와 RSB를 오염시키는 스펙트르 공격을 방지할 수 있는가?
- RQ2코드 변형을 통해 사전 실행이 팔링스나 SFI 검사와 같은 보안 핵심 지시어를 우회할 수 없도록 보장할 수 있는가?
- RQ3BTB와 RSB 항목을 프로그램 간에 안전하게 공유하면서도 사전 실행 기반 제어 플로우 탈취를 방지할 수 있는가?
- RQ4번들 수준의 정렬과 보호 지시어 삽입으로 인한 성능 및 코드 크기 오버헤드는 얼마인가?
- RQ5기존의 SFI나 팔링스 방어 기법을 전략적 코드 배치를 통해 BTB/RSB 오염에 강건하게 만들 수 있는가?
주요 결과
- Venkman을 사용해 SPEC 벤치마크에서 스펙트르 변종-1 방어를 위해 팔링스를 삽입할 경우 평균 실행 시간이 3.47배 증가한다.
- 번들 정렬 및 보호 지시어 삽입으로 인해 평균 코드 크기가 1.94배 증가한다.
- Venkman를 활용해 구축한 스펙트르에 강건한 소프트웨어 장벽 고립(SFI)은 공간 오버헤드 평균 2.42배, 성능 오버헤드 평균 1.68배를 기록한다.
- Venkman는 모든 사전 실행 제어 플로우 전이가 번들 정렬 타겟으로 제한되도록 보장하여 보호 지시어 우회를 방지한다.
- 이 방어 기법은 BTB와 RSB 항목을 프로그램 간에 안전하게 공유함을 유지하며, 다시 초기화나 특권 수준 격리가 필요한 솔루션과는 달리 보다 안전하다.
- Venkman의 접근 방식은 IBM POWER8에서 효과적이며, x86 및 ARM로의 확장도 가능하지만, 이는 향후 작업으로 남겨진다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.