[发明专利]增量代码的静态检测方法及检测系统有效
| 申请号: | 202210147761.4 | 申请日: | 2022-02-17 |
| 公开(公告)号: | CN114510722B | 公开(公告)日: | 2023-01-06 |
| 发明(设计)人: | 张世琨;高庆;王文祥;孙基男 | 申请(专利权)人: | 北京大学 |
| 主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F21/56 |
| 代理公司: | 北京华创智道知识产权代理事务所(普通合伙) 11888 | 代理人: | 彭随丽 |
| 地址: | 100871*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 增量 代码 静态 检测 方法 系统 | ||
本发明涉及计算机科学技术领域,尤其涉及一种增量代码的静态检测方法及检测系统。静态检测方法具体包含以下步骤:识别所述待测代码的增量部分,构建抽象语法树,合成待测代码的函数调用图,构建增量部分的值依赖图和待测代码的值依赖图,对待测代码值依赖图进行漏洞检测得增量代码的静态检测结果;还包含步骤:将原代码进行静态分析和将原代码和增量代码的静态检测结果结合得到待测代码的静态检测结果。本发明解决了现有技术中静态检测方法精度差容易漏报或误报及代码更新后全检测周期长、资源消耗大、经济性差的问题,具有以下优点:大幅减少分析时间和内存,效率高,成本低和精度高的特点。
技术领域
本发明涉及计算机科学技术领域,更具体地说,涉及一种增量代码的静态检测方法、检测系统、电子设备和存储介质。
背景技术
程序代码的检测技术常使用程序运行动态检测方法,即将新程序测试运行,期间发现和解决技术问题,具有检测周期长、对测试实用例要求高、难以在有限时间内完成全面的检测;静态分析技术是一种仅通过源代码信息,不需要编译和运行,通过自动化的审查过程找寻代码中存在的问题,评估代码质量的代码分析方法,可有效地验证代码的规范性、可靠性、可维护性等指标,减少了软件测试的成本,缩短了测试周期。静态代码分析技术能够实现全代码覆盖,检测一些在实际运行中很少被执行到的代码,排除程序运行中的安全隐患;比人工测试覆盖更多的程序可行路径,检测结果更全面;因为无需运行代码,所以不会因为对于编译环境的依赖而产生纰漏,既适用于小型软件,又适用于有多个不同应用场景的子系统的大型软件;检测高效,短时间内发现大量漏洞,时间成本低。
本发明的发明人发现的:现有静态检测方法精度和准确性有待于进一步提高,现有静态检测方法由于其行为具有多并发性,容易出现误报和漏报;进一步地,现有静态检测方法均涉及某一固定代码的检测,针对升级迭代的代码往往需要重新进行全部代码检测,需要再次耗费大量的人力和物力,因而市场上急需一种对增量代码的静态检测方法替代现有技术中对更新后固定代码或程序全检测。
发明内容
为了解决现有技术存在的上述问题,本发明选用仅对变化后待检测代码中的其中新增、删除、更新的增量部分以及与增量部分相关的内容进行代码分析。避免了代码更新时,由于再重新进行一次完整的代码分析的时间与资源成本过高并不适用于敏捷开发等场景的问题,而代码增量分析可以只对工程中的部分代码进行分析,因此可以有效减少分析规模,从而降低静态分析的成本。
进一步地,本发明在代码增量分析的方法中,通过语法分析、控制流分析的方法无法识别出程序语义上的不同,从而可能会导致许多误报与漏报;为解决上述问题,通过结合数据流,揭示各种语句之间的依赖关系,从而清晰地展示程序漏洞点与调用点的关系。
进一步地,本发明使用基于值依赖分析的跨函数程序漏洞检测技术,该技术使用去重解析和分块并行处理的方法建立稀疏值依赖图,脱离了流敏感程序分析对于控制流图的依赖,大幅减少分析时间和内存,同时减少了逻辑判断路径进而减少了多并发性矛盾及误报和漏报概率。
进一步地,结合控制流分析、数据流分析中的定值使用以及调用关系分析构建值依赖图,使用点与点之间的连线表达变量的定值使用关系,每个值依赖子图均表达了某个变量到其值发生改变之前的生命周期,能够全面、准确构建关键数据之间的传递关系。值依赖分析技术综合了现有符号执行技术、抽象解释技术以及值流图分析技术的优势,对跨函数的处理更加精确,对效率的权衡更加灵活,通过模拟执行计算,去除程序中的不可达路径,对跨函数的漏洞检测更加准确。
本发明提供了一种增量代码的静态检测方法,针对原代码和任意变化后的待测代码,包含以下步骤:
识别待测代码的增量部分和无增量部分;
对待测代码构建抽象语法树;
根据所述抽象语法树构建所述待测代码的函数调用图;
根据所述待测代码的函数调用图构建所述待测代码的值依赖图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210147761.4/2.html,转载请声明来源钻瓜专利网。





