[논문 리뷰] Swivel: Hardening WebAssembly against Spectre
Swivel은 선형 블록과 메모리 마스킹을 통해 의사결정적 제어 및 데이터 흐름 격리 기반으로 WebAssembly(Wasm)를 Spectre 공격으로부터 강화하는 컴파일러 기반 프레임워크이다. SPEC 2006 벤치마크에서 10.3% 미만의 성능 오버헤드를 기록하면서도 파ip라인 팔링 또는 프로세스 격리에 의존하지 않고 샌드박스 탈출, 오염, 호스트 오염 공격을 완전히 제거한다.
We describe Swivel, a new compiler framework for hardening WebAssembly (Wasm) against Spectre attacks. Outside the browser, Wasm has become a popular lightweight, in-process sandbox and is, for example, used in production to isolate different clients on edge clouds and function-as-a-service platforms. Unfortunately, Spectre attacks can bypass Wasm's isolation guarantees. Swivel hardens Wasm against this class of attacks by ensuring that potentially malicious code can neither use Spectre attacks to break out of the Wasm sandbox nor coerce victim code-another Wasm client or the embedding process-to leak secret data. We describe two Swivel designs, a software-only approach that can be used on existing CPUs, and a hardware-assisted approach that uses extension available in Intel 11th generation CPUs. For both, we evaluate a randomized approach that mitigates Spectre and a deterministic approach that eliminates Spectre altogether. Our randomized implementations impose under 10.3% overhead on the Wasm-compatible subset of SPEC 2006, while our deterministic implementations impose overheads between 3.3% and 240.2%. Though high on some benchmarks, Swivel's overhead is still between 9x and 36.3x smaller than existing defenses that rely on pipeline fences.
연구 동기 및 목표
- 현대의 슈퍼스칼라 CPU에서 Spectre 공격이 샌드박스 격리를 우회할 수 있는 WebAssembly의 임계 보안 격차를 해결한다.
- 내부 프로세스 Wasm 배포 환경에서 샌드박스 탈출, 샌드박스 오염, 호스트 오염 공격을 포함한 Spectre 기반 공격을 완화한다.
- 서버리스 컴퓨팅 및 엣지 클라우드와 같은 성능 민감한 환경에서 Wasm에 대해 강력한 메모리 격리를 제공하면서 확장성 손실 없이도 가능하게 한다.
- 비용이 많이 드는 파이pline 팔링 또는 프로세스 격리에 의존하지 않고 기존 하드웨어 및 컴파일러와 호환되는 실용적이고 구현 가능한 솔루션을 제공한다.
- 지능적인 정적 컴파일 및 하드웨어 지원 기능을 통해 최소한의 성능 비용으로 효과적인 Spectre 강화가 가능하다는 것을 입증한다.
제안 방법
- Wasm 코드를 선형 블록(LBs)으로 컴파일—제어 전이가 블록 경계에서만 허용되는 직선형 x86 코드 시퀀스로, 비허용 영역으로의 의사결정적 브런치를 방지한다.
- 각 선형 블록 내에서 메모리 접근 마스킹을 강제 적용하여 의사결정적 데이터 액세스를 샌드박스의 메모리 영역으로만 제한한다.
- 반환 스택 버퍼(RSB)에 대한 의존성을 제거하기 위해 ret 명령어를 생략하고 반환 추적을 위한 별도의 스택 포인터를 사용하여 RSB 언더플로우 공격을 방지한다.
- Intel® CET와 MPK를 활용하여 Swivel-CET에서 하드웨어 지원 격리를 실현함으로써 미세한 제어 흐름 무결성과 메모리 보호를 최소한의 성능 영향으로 달성한다.
- 간접 호출 및 스위치 테이블을 Spectre-PHT 및 Spectre-BTB 공격으로부터 보호하기 위해 의사결정적 로드 하드닝(SLH)을 적용한다.
- 소프트웨어 전용 버전(Swivel-SFI)에서 주소 공간 레이아웃 무작위화(ASLR)를 사용하여 신뢰할 수 있는 Spectre 가젯을 제작하는 데 어려움을 가한다.
실험 결과
연구 질문
- RQ1파이pline 팔링 또는 프로세스 격리에 의존하지 않고 컴파일러 기반 접근 방식이 WebAssembly에서 Spectre 공격을 효과적으로 방지할 수 있는가?
- RQ2선형 블록과 메모리 마스킹과 같은 소프트웨어 전용 컴파일 기법이 Wasm에서 의사결정적 실행 공격을 어느 정도 방지할 수 있는가?
- RQ3실제 워크로드에서 Swivel의 성능 오버헤드는 파이프라인 팔링 또는 프로세스 기반 격리와 같은 기존 방어 기법과 비교해 어떻게 되는가?
- RQ4Intel® CET 및 MPK와 같은 하드웨어 확장 기능이 Wasm 컴파일러 스택에 효과적으로 통합되어 더 강력하고 결정적인 Spectre 완화를 제공할 수 있는가?
- RQ5서버리스 플랫폼과 같은 고처리량 다중 테넌트 환경에서 단일 컴파일 프레임워크를 통해 강력한 보안 보장을 확보하면서도 수용 가능한 성능을 달성할 수 있는가?
주요 결과
- 소프트웨어 전용 버전인 Swivel-SFI는 SPEC 2006의 Wasm 호환 서브셋에서 10.3% 미만의 오버헤드를 유발하여 실전 환경에서의 실용적 성능을 입증한다.
- 결정론적 Swivel-CET 버전은 Intel® CET와 MPK를 사용하여 Spectre 공격을 완전히 제거했으며, SPEC 2006 벤치마크에서 오버헤드는 3.3%에서 240.2%의 범위를 보였다.
- Swivel의 오버헤드는 기존의 팔링 기반 방어 기법 대비 9배에서 36.3배 낮으며, 이는 팔링 기반 방어 기법이 1.8배에서 19.6배의 성능 저하를 유발하기 때문이다.
- ret 명령어를 생략하고 별도의 스택 포인터를 사용함으로써 Swivel-SFI는 기존에 악용될 수 있었던 RSB 언더플로우 취약성을 제거한다.
- 선형 블록과 메모리 마스킹의 사용으로 의사결정적 제어 및 데이터 흐름이 모두 샌드박스 경계 내에서 제한되어 탈출 및 오염 공격을 방지한다.
- Swivel은 샌드박스 탈출, 샌드박스 오염, 호스트 오염의 세 가지 공격 표면 모두를 효과적으로 방어하여 FaaS 및 엣지 컴퓨팅과 같은 다중 테넌트 환경에 적합하다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.