中文

Silhouette:面向嵌入式系统的高效受保护影子栈

密码学与安全 2020-06-29 v3 系统与控制 系统与控制

摘要

基于微控制器的嵌入式系统越来越多地用于一旦被攻破便会产生严重且直接后果的应用——包括汽车控制系统、智能锁、无人机和植入式医疗设备。由于资源和执行时间限制,C 语言是编程这些设备的主要语言。不幸的是,C 语言既非类型安全也非内存安全,控制流劫持仍然是一种普遍威胁。本文提出 Silhouette:一种基于编译器的防御机制,可高效保证返回地址的完整性,显著减少控制流劫持的攻击面。Silhouette 将不可篡改的返回地址影子栈与前向控制流检查及内存保护相结合,以确保所有函数都返回到正确的动态调用者。为保护其影子栈,Silhouette 使用存储加固,一种针对各种 ARM 架构的高效地址空间内隔离技术,其利用了 ARM 处理器上特殊的存储指令。我们针对 ARMv7-M 架构实现了 Silhouette,但我们的技术适用于其他常见的嵌入式 ARM 架构。我们的评估显示,Silhouette 在两个基准测试套件上分别仅带来 1.3% 和 3.4% 的几何平均性能开销。此外,我们原型化了 Silhouette-Invert,即 Silhouette 的一种替代实现,它以微小的硬件改动为代价,仅带来 0.3% 和 1.9% 的性能开销。

关键词

引用

@article{arxiv.1910.12157,
  title  = {Silhouette: Efficient Protected Shadow Stacks for Embedded Systems},
  author = {Jie Zhou and Yufei Du and Zhuojia Shen and Lele Ma and John Criswell and Robert J. Walls},
  journal= {arXiv preprint arXiv:1910.12157},
  year   = {2020}
}