中文

指令填充对SFI开销的影响

软件工程 2018-09-12 v1 密码学与安全

摘要

基于软件的故障隔离(SFI)是一种利用指令级重写将潜在有故障或恶意的软件模块与系统其余部分隔离的技术。包括Google Native Client在内的CISC架构上的SFI实现使用指令填充来强制地址布局不变量并限制控制流。然而,这种填充降低了代码密度并带来运行时开销。我们分析了该开销,并表明只要那些重叠指令根据原始的逐指令策略仍是安全的,就可以通过允许部分重叠指令的执行来减少开销。我们针对Native Client的32位和64位x86版本实现了此改动,并分析了为何32位上性能收益更高。该优化一致地减少了所执行指令的数量,并在x86-32上相对于SPECint2006的兼容基准平均节省8.6%的执行时间。我们描述了如何修改验证算法以检查更宽松的策略,并扩展了一个机器检查的Coq证明以确认系统的安全性得以保持。

关键词

引用

@article{arxiv.1803.00169,
  title  = {The Effect of Instruction Padding on SFI Overhead},
  author = {Navid Emamdoost and Stephen McCamant},
  journal= {arXiv preprint arXiv:1803.00169},
  year   = {2018}
}

备注

NDSS Workshop on Binary Analysis Research, February 2018