[发明专利]一种源代码缺陷检测方法与装置在审
申请号: | 202011586940.5 | 申请日: | 2020-12-29 |
公开(公告)号: | CN112579469A | 公开(公告)日: | 2021-03-30 |
发明(设计)人: | 王晓萌;管志斌;辛伟;王嘉捷;崔静;景湘评 | 申请(专利权)人: | 中国信息安全测评中心 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 李晓光 |
地址: | 100085 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 源代码 缺陷 检测 方法 装置 | ||
本申请提供的源代码缺陷检测方法与装置,针对待进行缺陷检测的软件源代码,基于其语法结构,提取软件源代码中的数据流关系和控制流关系,并根据数据流关系和控制流关系,对软件源代码进行切片处理,生成用于输入至人工智能模型进行缺陷检测的蕴含上下文语义的代码片段,无需编译即可完成源代码解析及代码片段生成过程,从而,从输入数据角度来看,本申请同时支持输入可编译和/或不可编译的软件源代码,扩展了软件源代码缺陷检测的范围;同时,本申请利用人工智能技术自动学习源代码解析生成的语法树、数据流、控制流等代码上下文蕴含的缺陷模式和正常模式,在不依赖检测规则、专家经验和编译环境前提下即可实现源代码缺陷检测。
技术领域
本申请属于计算机技术领域,尤其涉及一种源代码缺陷检测方法与装置。
背景技术
信息技术处于高速发展阶段,软件增长速度越来越快,导致源代码规模呈爆炸式增长,其中蕴含的源代码缺陷同样会导致安全风险难以预测。如何准确地检测出源代码中可能含有的软件缺陷,如API(应用程序接口)或敏感函数误用、恶意代码、后门代码等,对于保障信息安全,防范恶意攻击具有重要意义。
目前已有的源代码缺陷检测方法,对专家经验、检测规则、编译环境等依赖度较高,在检测性能、检测结果展示、使用便捷性上均有不足。其主要缺陷体现在:
1)从输入数据上看:已有的源代码缺陷检测装置或工具一般需要输入可编译的软件源代码或已编译的可执行二进制文件,而不可编译的软件源代码(程序源代码)无法被检测,这类装置或工具限制了能够进行检测的软件源代码的范围;
2)从缺陷检测方法或引擎上看:主要使用静态分析方法,例如数据流分析、污点分析等,对专家经验、检测规则、编译环境等依赖度较高;
因此,如何至少部分地解决上述技术问题,克服能进行缺陷检测的软件源代码的范围限制,和/或改善源代码缺陷检测对检测规则、编译环境和专家经验依赖度较高的现状,成为本领域值得研究的课题。
发明内容
有鉴于此,本申请提供了一种源代码缺陷检测方法与装置,用于至少部分地解决上述技术问题,克服能进行缺陷检测的软件源代码的范围限制,和/或改善源代码缺陷检测对检测规则、编译环境和专家经验依赖度较高的现状。
具体技术方案如下:
一种源代码缺陷检测方法,包括:
获取待进行缺陷检测的软件源代码;
基于所述软件源代码的语法结构,提取所述软件源代码中的数据流关系和控制流关系;
根据所述数据流关系和所述控制流关系,对所述软件源代码进行切片处理,得到所述软件源代码的代码片段;
根据所述软件源代码的代码片段训练人工智能模型,得到用于源代码缺陷检测的人工智能模型;
利用构建的所述人工智能模型对所述软件源代码的代码片段进行缺陷检测处理,得到所述软件源代码的代码片段的缺陷检测结果。
可选的,所述基于所述软件源代码的语法结构,提取所述软件源代码中的数据流关系和控制流关系,包括:
解析并提取所述软件源代码中含有的语义信息和/或语法信息,并生成包含所述语义信息和/或语法信息的抽象语法树;
根据所述抽象语法树,提取所述软件源代码中各个函数内的控制流关系,并生成分别对应于各个函数内的控制流关系的各个控制流图;
将各个控制流图进行整合,生成具有函数间控制流关系的控制流图;
根据所述抽象语法树,提取所述软件源代码中的数据流关系,并生成相对应的数据流图;
将所述控制流图和所述数据流图进行整合,生成包含有控制流关系和数据流关系的控制流-数据流图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国信息安全测评中心,未经中国信息安全测评中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011586940.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用户信用确定方法和装置
- 下一篇:一种防止倾倒的牵引椅