Skip to main content
QUICK REVIEW

[논문 리뷰] Zipper Stack: Shadow Stacks Without Shadow

Jinfeng Li, Liwei Chen|arXiv (Cornell University)|2019. 02. 03.
Security and Verification in Computing참고 문헌 33인용 수 7
한 줄 요약

이 논문은 RISC-V 아키텍처에서 FPGA 기반 하드웨어 지원을 통해 평균 1.86%의 성능 오버헤드로 작동하는 경량이며 암호학적으로 안전한 리턴 주소 보호 메커니즘인 Zipper Stack을 제안한다. 이 메커니즘은 메시지 인증 코드(MAC)의 사슬을 사용하여 모든 리턴 주소를 인증하며, 각 MAC이 이전 MAC에 연결되어 있어 오직 최신 MAC만 보호되면 되므로, 메모리 접근 권한과 비밀 키를 모두 악용할 수 있는 강력한 공격자에게도 강력한 저항력을 제공한다.

ABSTRACT

Return-Oriented Programming (ROP) is a typical attack technique that exploits return addresses to abuse existing code repeatedly. Most of the current return address protecting mechanisms (also known as the Backward-Edge Control-Flow Integrity) work only in limited threat models. For example, the attacker cannot break memory isolation, or the attacker has no knowledge of a secret key or random values. This paper presents a novel, lightweight mechanism protecting return addresses, Zipper Stack, which authenticates all return addresses by a chain structure using cryptographic message authentication codes (MACs). This innovative design can defend against the most powerful attackers who have full control over the program's memory and even know the secret key of the MAC function. This threat model is stronger than the one used in related work. At the same time, it produces low-performance overhead. We implemented Zipper Stack by extending the RISC-V instruction set architecture, and the evaluation on FPGA shows that the performance overhead of Zipper Stack is only 1.86%. Thus, we think Zipper Stack is suitable for actual deployment.

연구 동기 및 목표

  • 기존 리턴 주소 보호 메커니즘의 한계를 해결하기 위해, 메모리 격리나 비밀 무작위성에 의존하는 방식은 메모리 泄露나 사이드 채널 공격를 통해 우회될 수 있기 때문이다.
  • 공격자가 전체 메모리 접근 권한과 비밀 키를 알고 있더라도 여전히 안전한 메커니즘을 설계하기 위해이다.
  • 기존의 메모리 격리나 비밀 무작위성에 의존하지 않으면서도, 새로운 암호학적 사슬 구조를 통해 강력한 리턴 주소 인증을 실현하면서 성능 오버헤드를 최소화하기 위해이다.
  • 기존 바이너리와의 호환성과 런타임 오버헤드가 낮다는 점을 입증함으로써 실질적인 구현 가능성을 확보하기 위해이다.

제안 방법

  • Zipper Stack은 각 MAC이 현재 리턴 주소와 이전 MAC에서 계산되는 암호학적 MAC 사슬을 사용하여, 모든 리턴 주소 간에 종속성을 형성한다.
  • 전체 사슬의 보안은 오직 가장 최근 MAC만 보호하면 되므로, 이전 MAC을 조작하면 사슬의 무결성이 깨지게 된다.
  • 런타임에 리턴 명령어 실행 전에 최신 MAC을 검증함으로써 리턴 주소를 인증한다.
  • RISC-V 명령어 세트에 하드웨어 확장을 도입하여 AES-NI를 활용해 효율적인 MAC 계산을 수행한다.
  • 메모리에 MAC을 저장하지 않고 실시간으로 계산함으로써 메모리 접근 횟수와 오버헤드를 감소시킨다.
  • 이중 호환성은 QEMU를 사용하여 평가되었으며, 재컴파일 없이도 사슬 구조를 지원하도록 x86-64 명령어 세트를 수정하였다.

실험 결과

연구 질문

  • RQ1공격자가 전체 메모리 접근 권한과 비밀 키를 알고 있을 경우, 리턴 주소 보호 메커니즘이 여전히 안전하게 유지될 수 있는가?
  • RQ2메모리 격리나 비밀 무작위성에 의존하지 않으면서도 낮은 성능 오버헤드를 달성할 수 있는가?
  • RQ3모든 리턴 주소의 무결성을 보장하기 위해 오직 하나의 암호학적 값만 보호되면 되는 시스템을 설계할 수 있는가?
  • RQ4소프트웨어 기반 MAC 사슬 구현의 성능은 하드웨어 기반 Shadow Stack과 비교해 어떻게 되는가?
  • RQ5Zipper Stack은 재컴파일 없이 기존 바이너리에 얼마나 넓게 배포될 수 있는가?

주요 결과

  • 하드웨어 지원이 있는 RISC-V에서 Zipper Stack은 평균 1.86%의 성능 오버헤드를 기록하며, 캐싱 최적화를 적용한 하드웨어 기반 Shadow Stack(2.36% 오버헤드)보다 성능이 뛰어나다.
  • 소프트웨어 기반 LLVM 구현은 MAC 계산 라운드에 따라 4.75%에서 21.13%의 오버헤드를 유발하지만, 이는 이전의 암호학적 접근 방식과 비교해도 경쟁력이 있다.
  • 바이너리 호환성 테스트 결과, QEMU에서 기존 x86-64 바이너리 50개 중 42개(84%)에서 호환성을 확보하였으며, 주로 지원되지 않는 setjmp/longjmp 호출로 인해 제한된다.
  • MAC 사슬 설계 덕분에 공격자는 전체 사슬을 조작하지 않으면 유효한 리턴 주소를 위조할 수 없으며, 강력한 위협 모델 하에서도 안전하다.
  • 보안 분석 결과, Zipper Stack은 재생 공격, JOP/COOP, ASLR 우회 기법을 모두 저항함을 확인하였으며, 이는 사슬의 무결성이 수정되지 않은 최신 MAC에 의존하기 때문이다.
  • 메모리 격리에 의존하지 않기 때문에 Shadow Stack보다 더 강건한 보안성을 확보하고 있으며, 페이지 속성 조작이나 정보 泄露를 통한 공격에 취약하지 않다.

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

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

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

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