Skip to main content
QUICK REVIEW

[论文解读] Zipper Stack: Shadow Stacks Without Shadow

Jinfeng Li, Liwei Chen|arXiv (Cornell University)|Feb 3, 2019
Security and Verification in Computing参考文献 33被引用 7
一句话总结

该论文提出Zipper Stack,一种轻量级、密码学安全的返回地址保护机制,通过消息认证码(MAC)链对所有返回地址进行认证。通过将每个MAC与前一个MAC链接,仅需保护最新MAC,即可实现对强大攻击者的强抵抗能力——即使攻击者拥有完整的内存访问权限和密钥知识——同时在基于FPGA硬件支持的RISC-V上仅带来1.86%的平均性能开销。

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避免在内存中存储MAC,减少内存访问和开销。
  • 通过修改x86-64指令集以支持链结构,在QEMU中评估二进制兼容性,无需重新编译即可实现。

实验结果

研究问题

  • RQ1当攻击者拥有完整内存访问权限和密钥知识时,返回地址保护机制是否仍能保持安全?
  • RQ2此类机制能否在不依赖内存隔离或秘密随机性的情况下实现低性能开销?
  • RQ3是否可以设计一种系统,仅需保护单个密码学值即可确保所有返回地址的完整性?
  • RQ4与基于硬件的Shadow Stack相比,基于软件的MAC链实现性能如何?
  • RQ5Zipper Stack在无需重新编译的情况下,能在多大程度上部署于现有二进制文件上?

主要发现

  • 在具有硬件支持的RISC-V上,Zipper Stack仅带来1.86%的平均性能开销,当应用缓存优化时,优于基于硬件的Shadow Stack(2.36%开销)。
  • 基于软件的LLVM实现开销在4.75%至21.13%之间,具体取决于MAC计算轮数,但仍优于以往的密码学方法。
  • 二进制兼容性测试显示,在QEMU中对现有x86-64二进制文件的兼容性达到84%(50个程序中42个),主要受限于对setjmp/longjmp调用的支持不足。
  • MAC链设计确保攻击者无法在不篡改整个链的情况下伪造有效返回地址,因此在强威胁模型下依然安全。
  • 安全分析表明,Zipper Stack可抵抗重放攻击、JOP/COOP以及ASLR绕过技术,因为链的完整性依赖于未被修改的最新MAC。
  • 与Shadow Stack相比,该机制更具弹性,因为它不依赖内存隔离,而内存隔离可能通过页面属性修改或信息泄露被攻破。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。