软件所在二进制软件漏洞机理分析方面取得进展
文章来源:可信计算与信息保障实验室 | 发布时间:2022-01-05 | 【打印】 【关闭】
近日,中国科学院软件研究所可信计算与信息保障实验室在二进制软件漏洞机理的自动化分析方面取得研究进展。该研究提出了基于错误引用计数检测的释放后重用漏洞根因分析与定位方法,不仅可以帮助软件开发人员快速定位漏洞位置,还可以提供有效的补丁建议,为提高大规模软件漏洞的修复能力起到重要支撑作用。
开发人员在进行大规模软件开发时,经常使用引用计数机制来自动管理内存对象的生命周期。同时,在实际开发过程中,开发人员会进行大量的引用计数优化操作,即通过忽略对某些引用的计数,从而提高软件的整体性能。但这些优化操作往往会带来内存安全问题,即不正确的优化会导致某些对象的引用成为悬空指针,从而引发释放后重用内存安全漏洞。更为严重的是,这些释放后重用漏洞最终会导致系统崩溃或者任意代码执行。
针对该问题,团队首先提出了一种引用计数优化模型,并给出了多种合理的优化策略。在此基础上,通过完整重现并监控释放后重用漏洞的整个触发过程,自动识别出释放后重用对象,并借助启发式规则筛选出所有通过引用计数来进行内存管理的对象;随后,将对象引用的创建、销毁行为和实际的引用计数行为进行关联,并将关联结果和引用计数优化模型进行匹配;最终,通过检测不匹配的优化操作,将其作为导致释放后重用漏洞的根本成因。
基于上述方法,团队实现了FreeWill:面向大规模二进制软件中的释放后重用漏洞根因自动分析原型系统。团队利用该系统已经对2种操作系统内核(Linux和MacOS)、3种浏览器(Chrome、Firefox和IE)以及2种脚本解析引擎(Python和PHP)中的76个释放后重用漏洞进行了实验。实验结果表明,FreeWill不仅可以在较短时间内准确定位各类释放后重用漏洞发生的位置,同时还自动给出了56个有效的补丁修补建议。
相关成果以“FreeWill: Automatically Diagnosing Use-after-free Bugs via Reference Miscounting Detection on Binaries”为题被网络安全领域顶级学术会议USENIX Security 2022接收。该论文第一作者为和亮副研究员,通讯作者为苏璞睿研究员。该研究获国家重点研发计划等项目支持。
FreeWill:二进制软件中的释放后重用漏洞自动化分析框架