SoK: Sanitizing for Security 论文阅读笔记
关键技术
程序插桩技术 (Program Instrumentation Techniques)
元数据管理 (Metadata Managment)
Example of Exploit Mitigations
- Control-Flow Integrity (CFI):控制流完整性是一种防止攻击者通过改变程序的控制流来执行恶意代码的技术。CFI通过确保程序执行不会偏离预先定义的合法控制流路径来实现这一目标
- Data-Flow Integrity (DFI):数据流完整性是一种保护技术,用于确保程序中的数据在执行过程中不会被非法修改。DFI通过跟踪数据的流动并在检测到非法数据流时发出警告来实现这一目标
- Write Integrity Testing (WIT):写完整性测试是一种防止内存错误利用的技术。WIT通过在写入操作之前进行检查,确保只有合法的写入操作才能执行,从而防止攻击者利用内存错误来执行恶意代码
- Code-Pointer Integrity (CPI):是指一种只在程序直接或间接访问敏感代码指针时执行边界检查的技术。
Spatial Safety Violations
Intra-object Overflow
struct A { char name[7]; bool isAdmin; };
struct A a; char buf[8];
memcpy(/* dst */ a.name, /* src */ buf, sizeof(buf));
Temporal Safety Violations
Use after Free
struct A { void (*func)(void); };
struct A *p=(struct A *)malloc(sizeof(struct A));
free(p); // Pointer becomes dangling
...
p->func(); // Use-after-free