基于硬件监视器的高效上下文敏感控制流完整性(CFI)实施
在当今的计算环境中,控制流完整性(CFI)对于保护系统免受控制流攻击至关重要。本文将介绍一种基于硬件监视器(PHMon)的高效上下文敏感CFI实施方法,即PHMon - 基于的µCFI。
1. PHMon架构基础
PHMon接收来自处理器的提交日志,它通过匹配单元(MUs)和动作单元(AU)来处理这些日志。
- 匹配单元(MUs) :每个MU应用一组通过PHMon软件接口定义的不同监控规则。例如,用户可以设置MU来检测特定指令(如ret、jalr)或特定PC值处的指令。当检测到匹配时,MU会向动作单元(AU)发送匹配数据包。
- 动作单元(AU) :由队列、配置单元(CFUs)、算术逻辑单元(ALU)、本地寄存器文件和控制单元组成。AU将传入的匹配数据包存储在队列中,每个MU与一个CFU关联,CFU中存储着对应匹配的用户定义指令。AU通过硬件操作(如ALU或内存读写操作)或由运行在RISC - V核心上的操作系统(OS)处理的中断来执行这些用户定义的指令。
2. µCFI概述
大多数上下文敏感CFI策略无法为每个间接控制转移(ICT)提供唯一有效的目标。而µCFI是一种最先进的上下文敏感CFI,它确保每个ICT指令在程序执行的每一步都有一个唯一代码目标(UCT)。
- 约束数据(c - data) :µCFI通过从程序源代码中识别约束数据(c - data)并在实施CFI时将其用作上下文来实现UCT属性。c - data是敏感指令的任何非恒定操作数,敏感指令