垂悬指针检测与防御方法

作者:王豫; 高凤娟; 马可欣; 司徒凌云; 王林章*; 陈碧欢; 刘杨; 赵建华; 李宣东
来源:软件学报, 2020, 31(06): 1600-1618.
DOI:10.13328/j.cnki.jos.005994

摘要

随着技术的发展,信息物理融合系统(cyber-physical system,简称CPS)在生活中扮演着越来越重要的角色,例如电力系统、铁路系统.如果CPS遭到攻击,将对现实世界的正常运转造成巨大影响,甚至威胁生命安全.垂悬指针是指向的区域被释放后未被置为空的指针,它是一种会导致攻击的软件缺陷.由垂悬指针导致的use-after-free和double-free漏洞能够执行任意恶意代码.迄今为止,只有少量工作针对垂悬指针进行检测、防御.其中多数都会导致过高的额外运行时开销.提出Dang Done用于检测和防御垂悬指针.首先,通过静态分析检测潜在垂悬指针;然后,基于检测到的垂悬指针信息和一系列预定义的指针变换规则,依据指针传播信息变换指针,使得指针及其别名都指向同一个新引入的指针.基于该方法,实现了Dang Done的原型工具.基于11个开源项目和SPEC CPU benchmark的实验结果表明:DangDone的静态分析部分只有33%的误报率,指针变换部分只引入了1%左右的额外开销.同时,Dang Done成功防护了11个开源项目中的use-after-free和double-free漏洞.实验结果体现了Dang Done的高效率及有效性.

全文