基于符号执行的Tcache Poisoning堆漏洞自动验证方法研究
Research on Automatic Verification Method of Tcache Poisoning Heap Vulnerability Based on Symbolic Execution作者机构:国防科技大学电子对抗学院合肥230037 网络空间安全态势感知与评估安徽省重点实验室合肥230037
出 版 物:《计算机工程》 (Computer Engineering)
年 卷 期:2023年第49卷第6期
页 面:24-33页
学科分类:0839[工学-网络空间安全] 08[工学] 081201[工学-计算机系统结构] 0812[工学-计算机科学与技术(可授工学、理学学位)]
主 题:堆漏洞 Tcache Poisoning方法 符号执行 漏洞自动验证 约束构建
摘 要:Tcache Poisoning是面向堆管理机制的一种堆漏洞利用方法,现有的堆漏洞自动验证工作未考虑Tcache带来的影响,无法适用于高版本Glibc堆漏洞自动验证。分析Tcache机制以及Tcache Poisoning验证方法的原理,提出一种基于符号执行的Tcache Poisoning堆漏洞自动验证方法。定义多元组对堆块的状态进行形式化描述,通过对关键API函数的挂钩,在程序运行过程中收集堆块的状态信息,并引入符号变元将外部输入数据符号化,实现关键信息的获取。通过状态监控检测堆漏洞触发,依据Tcache Poisoning堆漏洞自动验证模型,逐步生成Tcache Poisoning攻击约束和攻击载荷约束,最后通过约束求解生成漏洞验证代码。基于S2E符号执行平台实现自动验证系统TPAEG,并对10个测试程序进行测试,其中在Tcache Poisoning方法的7个测试程序中有5个生成了验证代码。实验结果表明,TPAEG可有效地检测堆溢出漏洞和释放后重用漏洞,并能够针对符合Tcache Poisoning攻击特征的场景实现自动验证,完成控制流的劫持并生成验证代码。