论文部分内容阅读
Use-After-Free漏洞是一种内存数据破坏缺陷,是由程序试图访问或操作已经被释放的内存引起的。该类型漏洞通常会导致程序崩溃,任意代码执行等危害。近年来,Use-After-Free漏洞变得愈发流行,尤其是经常被用来对浏览器客户端实施攻击。本文提出一种针对Use-After-Free漏洞的检测算法,并据此设计了检测系统UAFChecker。UAFChecker基于开源的多路径软件分析平台S2E实现,它通过挂钩关键的堆内存操作函数监控指针的生成,使用反汇编引擎BeaEngine在汇编层上跟踪指针的传播,通过收集和分析指针信息来检测漏洞。UAFChecker的创新点可以总结为以下三点:1)能够检测生命周期过长的悬垂指针2)提前了Use-After-Free漏洞的发现时机3)综合应用了多种成熟的软件测试技术,如选择符号执行技术和Fuzzing技术。实验结果表明,UAFChecker成功定位和分析出IE8浏览器中存在的多个未被公开的Use-After-Free漏洞。相较于传统的检测系统,该系统具有较高的代码覆盖率,并且能为漏洞分析提供关键信息。最后本文归纳提出了Use-After-Free漏洞利用的通用方法,并为挖掘出的漏洞编写了利用代码。