Skip to main content
QUICK REVIEW

[논문 리뷰] Efficient Sealable Protection Keys for RISC-V

Leila Delshadtehrani, Sadullah Canakci|arXiv (Cornell University)|2020. 12. 04.
Security and Verification in Computing참고 문헌 16인용 수 4
한 줄 요약

이 논문은 RISC-V에서 프로세스 내 메모리 격리 기반 기술인 SealPK를 제안한다. Sv-39 페이지 테이블 엔트리의 10개의 사용되지 않는 비트를 활용해 최대 1024개의 보호 도메인을 지원하며, 운영체제 수준의 지연 할당 기법을 통해 pkey 사용 후 할당 해제 버그를 방지한다. 또한 도메인 권한, 페이지, 키의 변조를 방지하기 위한 세 가지 새로운 봉인 기능을 도입했으며, FPGA 프로토타입을 통해 최소한의 성능 오버헤드로 성공적으로 실현된 실시간 샤페로 스택 격리 기능을 입증하였다.

ABSTRACT

With the continuous increase in the number of software-based attacks, there has been a growing effort towards isolating sensitive data and trusted software components from untrusted third-party components. A hardware-assisted intra-process isolation mechanism enables software developers to partition a process into isolated components and in turn secure sensitive data from untrusted components. However, most of the existing hardware-assisted intra-process isolation mechanisms in modern processors, such as ARM and IBM Power, rely on costly kernel operations for switching between trusted and untrusted domains. Recently, Intel introduced a new hardware feature for intra-process memory isolation, called Memory Protection Keys (MPK), which enables a user-space process to switch the domains in an efficient way. While the efficiency of Intel MPK enables developers to leverage it for common use cases such as Code-Pointer Integrity, the limited number of unique domains (16) prohibits its use in cases such as OpenSSL where a large number of domains are required. Moreover, Intel MPK suffers from the protection key use-after-free vulnerability. To address these shortcomings, in this paper, we propose an efficient intra-process isolation technique for the RISC-V open ISA, called SealPK, which supports up to 1024 unique domains. SealPK prevents the protection key use-after-free problem by leveraging a lazy de-allocation approach. To further strengthen SealPK, we devise three novel sealing features to protect the allocated domains, their associated pages, and their permissions from modifications or tampering by an attacker. To demonstrate the feasibility of our design, we implement SealPK on a RISC-V Rocket processor, provide the OS support for it, and prototype our design on an FPGA. We demonstrate the efficiency of SealPK by leveraging it to implement an isolated shadow stack on our FPGA prototype.

연구 동기 및 목표

  • Intel MPK가 16개의 보호 키만 지원하는 한계를 극복하여 RISC-V에서 최대 1024개의 도메인을 지원하는 것.
  • Intel MPK에 내재된 pkey 사용 후 할당 해제 취약성을 제거하기 위해 운영체제 수준의 지연 할당 메커니즘을 도입하여 도메인 참조 카운트를 추적하는 것.
  • 공격자가 도메인 권한, 페이지, 허용 비트를 부정확하게 수정하는 것을 방지하기 위해 세 가지 새로운 봉인 기능을 통해 보호하는 것.
  • RISC-V Rocket 코어 FPGA 프로토타입에 SealPK를 구현하고 전체 운영체제 지원을 제공함으로써 SealPK의 실현 가능성과 효율성을 입증하는 것.
  • OpenSSL 및 샤페로 스택 보호와 같은 실제 워크로드에 적합한 안전하고 고성능의 프로세스 내 격리 기능을 제공하는 것.

제안 방법

  • Sv-39 페이지 테이블 엔트리(PTE)의 10개 사용되지 않는 비트를 활용해 보호 키를 인코딩함으로써 2^10 = 1024개의 고유한 도메인을 지원한다.
  • 모든 관련 페이지가 해제될 때까지 키를 무효화하는 것을 연기하는 운영체제 수준의 지연 할당 메커니즘을 구현한다.
  • 페이지 테이블 검색과 동일한 사이클에 액세스할 수 있는 전용 2KB 개인 키 레지스터(PKR)를 도입하여 보호 키 권한을 저장한다.
  • 세 가지 봉인 기능을 설계한다: (1) 도메인 봉인을 통해 도메인 무결성을 보호하고, (2) 페이지 봉인을 통해 비정상적인 페이지 수정을 방지하며, (3) 권한 봉인을 통해 WRPKRU 명령어를 각 키당 하나의 신뢰할 수 있는 메모리 범위로 제한한다.
  • 런타임에 봉인 정책을 강제하기 위해 PKR에 액세스하는 커스터마이즈된 RoCC 명령어를 사용한다.
  • SealPK를 RISC-V Rocket 코어에 통합하고, 도메인 관리 및 참조 카운팅을 위한 운영체제 확장을 수행하며, FPGA 기반 프로토타입을 구축한다.

실험 결과

연구 질문

  • RQ1오픈 소스 RISC-V ISA 기반으로 16개 이상의 도메인을 지원하는 확장 가능한 안전한 프로세스 내 메모리 격리 기반 기술을 개발할 수 있는가?
  • RQ2커널 수준의 강제 실행이나 복잡한 바이너리 인스트루멘테이션에 의존하지 않고 pkey 사용 후 할당 해제 취약성을 어떻게 제거할 수 있는가?
  • RQ3하드웨어 기반 봉인을 통해 도메인, 페이지, 권한을 보호함으로써 악성 컴ponent의 변조를 어느 정도 방지할 수 있는가?
  • RQ4이러한 기술을 RISC-V 프로세서 코어에 통합할 경우 성능 및 면적 오버헤드는 어느 정도인가?
  • RQ5SealPK는 실생활에서 샤페로 스택과 같은 핵심 보안 primitive를 효과적으로 보호하는 데 사용될 수 있는가?

주요 결과

  • SealPK는 Sv-39 PTE의 10개 사용되지 않는 비트를 활용하여 최대 1024개의 고유한 보호 도메인을 지원하며, Intel MPK의 16개 도메인 한계를 크게 초월한다.
  • 운영체제 수준의 지연 할당 메커니즘이 모든 페이지가 해제될 때까지 키를 무효화하지 않음으로써 pkey 사용 후 할당 해제 취약성을 효과적으로 방지한다.
  • FPGA 프로토타입은 LUT 기준 5.62%, FF 기준 2.72%의 면적 오버헤드를 보였으며, 예상 전력 오버헤드는 5% 미만으로 낮은 하드웨어 비용을 나타낸다.
  • SealPK는 도메인 무결성, 페이지 내용, 권한 비트를 런타임 중 조작으로부터 보호하는 세 가지 새로운 봉인 기능을 도입한다.
  • SPEC2000, SPEC2006, MiBench 워크로드에 대해 평균 성능 오버헤드가 각각 21.00%, 14.81%, 8.52%로 나타나 실용적인 효율성을 입증하였다.
  • SealPK는 FPGA 프로토타입에서 고립된 샤페로 스택을 성공적으로 구현하여 제어 흐름 무결성 보호에 실질적인 적용 가능성을 입증하였다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.