Memory leaks are serious program defects that can cause programs to crash but are difficult to detect by testing. Existing static memory leak detection techniques may present false positives and require a significant amount of time for manual inspection of defect reports. Dynamic techniques can accurately detect memory leaks, but cannot automatically generate test cases that trigger memory leaks, and thus still requires human involvement..In cyberspace security, it is essential to carry out fully automatic detection on the defects of binary code, and the direction is moving from artificial, semi-automated to intelligent, fully automatic detection. US DARPA held its Cyber Grand Challenge (CGC) in August 2016, and the champion Mayhem from Carnegie Mellon University, can detect bugs like buffer overflows in binary code in a fully-automatic way, but cannot support the detection of memory leaks..For the first time, this project proposes to detect memory leak defects automatically on binary code combining static and dynamic analysis, and for the first time uses static guidance to automatically generate test cases and dynamically detect memory leaks. On the basis of ensuring the correctness of the detection, the recall rate would be raised as much as possible.
内存泄漏是一类严重的程序缺陷,可能导致程序崩溃,却难以通过测试手段发现。现有的内存泄漏静态检测技术可能存在误报,需要大量时间进行缺陷报告的人工检查。动态技术能够准确检测内存泄漏,但是均无法自动生成触发内存泄漏的测试用例,仍然需要人工的参与。.在网络空间安全方面,正从人工、半自动向智能化、全自动检测的方向发展。要进行即时检测和对代码的及时修补,对二进制代码的缺陷进行全自动检测的研究尤为必要。美国DARPA于2016年8月举办的虚拟大挑战赛第一名——卡耐基梅隆大学的Mayhem工具——能够全自动检测二进制代码中缓冲区溢出等缺陷,但是不支持对内存泄漏的检测。.本项目在国际上首次提出在二进制代码上使用动静结合技术全自动地检测内存泄漏缺陷,首次使用静态制导的方法进行测试用例的自动生成和动态增强的内存泄漏检测,在保证检测正确性的基础上尽可能提升检测的召回率。
内存泄漏是一类严重的程序缺陷,可能导致程序崩溃,却难以通过测试手段发现。现有的内存泄漏静态检测技术可能存在误报,需要大量时间进行缺陷报告的人工检查。动态技术能够准确检测内存泄漏,但是均无法自动生成触发内存泄漏的测试用例,仍然需要人工的参与。.在网络空间安全方面,正从人工、半自动向智能化、全自动检测的方向发展。要进行即时检测和对代码的及时修补,对二进制代码的缺陷进行全自动检测的研究尤为必要。美国DARPA于2016年8月举办的虚拟大挑战赛第一名——卡耐基梅隆大学的Mayhem工具——能够全自动检测二进制代码中缓冲区溢出等缺陷,但是不支持对内存泄漏的检测。.本项目在国际上首次提出在二进制代码上使用动静结合技术全自动地检测内存泄漏缺陷,使用静态制导的方法进行测试用例的自动生成和动态增强的内存泄漏检测,在保证检测正确性的基础上尽可能提升检测的召回率。.具体地,首先对二进制代码进行语义恢复,然后基于区间分析、约束求解等技术构建值依赖图,得到缺陷检测结果和局部触发路径。最后,结合使用动态模糊测试技术,基于爬山法的搜索技术进行路径追踪,最终触发内存泄漏。.基于以上原理,本项目进一步扩充了支持的缺陷类型,除了内存泄漏外,还支持堆缓冲区溢出、栈缓冲区溢出、内存双重释放、内存释放后使用、空指针解引用、除零错误等6种缺陷模式,并研发了工具原型。在美国DARPA公布的CGC初赛测试集中检测出82个二进制代码中的缺陷,超过了比赛第一名的77个,实测结果位居第一。此外,发现了真实程序的18个缺陷。
{{i.achievement_title}}
数据更新时间:2023-05-31
玉米叶向值的全基因组关联分析
涡度相关技术及其在陆地生态系统通量研究中的应用
正交异性钢桥面板纵肋-面板疲劳开裂的CFRP加固研究
硬件木马:关键问题研究进展及新动向
基于SSVEP 直接脑控机器人方向和速度研究
红外图像帧序列气体泄漏自动检测与定位研究
基于受管理运行时系统的大型软件内存泄漏论问题及解决方法研究
基于内存资源的云计算虚拟存储技术研究
针对内存攻击对象的内存安全防御技术研究