问题

控制流攻击通常先探测系统,摸清代码和指针的位置,然后才发起攻击。静态随机化只能撑到攻击者探测完成为止。

思路

Morpheus 把一组移动目标防御(代码和指针加密、代码和数据重定位)与 churn 结合起来:硬件在程序运行时透明地重新随机化这些值。等攻击者要用探测结果时,结果已经过期。

Program viewunchanged semanticsMachine viewencrypted code/pointers, relocated datachurnchurnchurnchurnprobe ✓attack ✗ (stale)re-randomize every ~50 ms
每个 churn 周期都会重新随机化机器视图,程序视图保持不变。

结果

~1%churn 周期为 50 ms 时的性能开销
≥5000×重新随机化比估算的入侵时间至少快这么多

RISC-V 原型对多类控制流攻击提供了高覆盖率的防护。

我的工作

合作作者。负责评估各防御层的鲁棒性,在编译期加入内存标记支持,并参与 FPGA 原型开发。

论文: ASPLOS 2019