【技术实现步骤摘要】
一种源代码缺陷检测方法与装置
本申请属于计算机
,尤其涉及一种源代码缺陷检测方法与装置。
技术介绍
信息技术处于高速发展阶段,软件增长速度越来越快,导致源代码规模呈爆炸式增长,其中蕴含的源代码缺陷同样会导致安全风险难以预测。如何准确地检测出源代码中可能含有的软件缺陷,如API(应用程序接口)或敏感函数误用、恶意代码、后门代码等,对于保障信息安全,防范恶意攻击具有重要意义。目前已有的源代码缺陷检测方法,对专家经验、检测规则、编译环境等依赖度较高,在检测性能、检测结果展示、使用便捷性上均有不足。其主要缺陷体现在:1)从输入数据上看:已有的源代码缺陷检测装置或工具一般需要输入可编译的软件源代码或已编译的可执行二进制文件,而不可编译的软件源代码(程序源代码)无法被检测,这类装置或工具限制了能够进行检测的软件源代码的范围;2)从缺陷检测方法或引擎上看:主要使用静态分析方法,例如数据流分析、污点分析等,对专家经验、检测规则、编译环境等依赖度较高;因此,如何至少部分地解决上述技术问题,克服能进行缺陷检测的软件源代码的范围限制,和/或改善源代码缺陷检测对检测规则、编译环境和专家经验依赖度较高的现状,成为本领域值得研究的课题。
技术实现思路
有鉴于此,本申请提供了一种源代码缺陷检测方法与装置,用于至少部分地解决上述技术问题,克服能进行缺陷检测的软件源代码的范围限制,和/或改善源代码缺陷检测对检测规则、编译环境和专家经验依赖度较高的现状。具体技术方案如下:一种源代 ...
【技术保护点】
1.一种源代码缺陷检测方法,其特征在于,包括:/n获取待进行缺陷检测的软件源代码;/n基于所述软件源代码的语法结构,提取所述软件源代码中的数据流关系和控制流关系;/n根据所述数据流关系和所述控制流关系,对所述软件源代码进行切片处理,得到所述软件源代码的代码片段;/n利用预先构建的人工智能模型对所述软件源代码的代码片段进行缺陷检测处理,得到所述软件源代码的代码片段的缺陷检测结果。/n
【技术特征摘要】
1.一种源代码缺陷检测方法,其特征在于,包括:
获取待进行缺陷检测的软件源代码;
基于所述软件源代码的语法结构,提取所述软件源代码中的数据流关系和控制流关系;
根据所述数据流关系和所述控制流关系,对所述软件源代码进行切片处理,得到所述软件源代码的代码片段;
利用预先构建的人工智能模型对所述软件源代码的代码片段进行缺陷检测处理,得到所述软件源代码的代码片段的缺陷检测结果。
2.根据权利要求1所述的方法,其特征在于,所述基于所述软件源代码的语法结构,提取所述软件源代码中的数据流关系和控制流关系,包括:
解析并提取所述软件源代码中含有的语义信息和/或语法信息,并生成包含所述语义信息和/或语法信息的抽象语法树;
根据所述抽象语法树,提取所述软件源代码中各个函数内的控制流关系,并生成分别对应于各个函数内的控制流关系的各个控制流图;
将各个控制流图进行整合,生成具有函数间控制流关系的控制流图;
根据所述抽象语法树,提取所述软件源代码中的数据流关系,并生成相对应的数据流图;
将所述控制流图和所述数据流图进行整合,生成包含有控制流关系和数据流关系的控制流-数据流图。
3.根据权利要求2所述的方法,其特征在于,所述根据所述数据流关系和所述控制流关系,对所述软件源代码进行切片处理,得到所述软件源代码的代码片段,包括:
对所述控制流-数据流图进行子图提取,得到至少一个子图;
根据所述至少一个子图,提取代码语句,生成对应于至少一个子图的含有控制流关系和/或数据流关系的至少一个代码片段。
4.根据权利要求3所述的方法,其特征在于,所述利用预先构建的人工智能模型对所述软件源代码的代码片段进行缺陷检测处理,得到所述软件源代码的代码片段的缺陷检测结果,包括:
对所述代码片段进行编码,生成所述代码片段的向量化表示;
将代码片段的向量化表示输入预先构建的人工智能模型,由所述人工智能模型对代码片段进行缺陷分析与缺陷类别判定,得到包含所述代码片段的缺陷类别的缺陷检测结果。
5.根据权利要求1所述的方法,其特征在于,在利用预先构建的人工智能模型对所述软件源代码的代码片段进行缺陷检测处理之前,还包括:
对所述软件源代码的代码片段进行规范化处理;
其中,对代码片段的规范化处理包括:提取代码片段的预定补充信息,和/或,剔除重复的代码片段。
6.根据权利要求1所述的方法,其特征在于,在得到所述软件源代码的代码片段的缺陷检测结果之后,还包括...
【专利技术属性】
技术研发人员:王晓萌,管志斌,辛伟,王嘉捷,崔静,景湘评,
申请(专利权)人:中国信息安全测评中心,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。