一种静态代码安全诊断方法及装置制造方法及图纸

技术编号:27616424 阅读:13 留言:0更新日期:2021-03-10 10:48
本发明专利技术实施例提供的静态代码安全诊断方法及装置,本发明专利技术可用于信息安全技术领域,通过获取待诊断程序的静态代码;对每个分词进行词法分析,得到分词符号表;根据每个分词的特征信息对每个条目下的分词进行漏洞检测,确定每个条目下的漏洞分词,进而诊断出漏洞代码。本发明专利技术基于文本分析技术,构建了词法分析器,对静态代码进行词法分析,得到代码对应的符号表,在无需开发人员手动进行的情况下,获取应用代码的安全指标情况和以及更为细粒度的漏洞描述,具体的漏洞详细信息和漏洞整改方案,获取的数据可以进行漏洞整体数据分析和数据挖掘,不需要再通过人工去进行安全代码漏洞测试的检验和分析。试的检验和分析。试的检验和分析。

【技术实现步骤摘要】
一种静态代码安全诊断方法及装置


[0001]本专利技术涉及安全诊断
,具体涉及一种静态代码安全诊断方法及装置。

技术介绍

[0002]在高速发展的互联网业务时代。各项目组采用敏捷、迭代等开发方法保证开发效率,在这种快速上线快速交付的模式下,如何使用高效的测试方法保证项目中的安全测试环节,缩短项目测试周期显得尤为重要。目前对Java web应用进行安全测试存在多种常规方法,如使用AppScan工具进行黑盒扫描,以及使用一些渗透测试工具例如Nessus,通过篡改请求等对数据进行安全分析。但无一例外的,都属于项目编码阶段完成后进行的安全检查,但是越是项目开发早期发现的安全问题,越是能较早修复,并且修复成本便越低。而上述方法都需要测试人员手动进行应用链接爬取,以及对发起请求进行某种改造,但是由于发起请求改造同时可能会对系统造成某种不可逆的伤害,例如系统宕机,数据库持久化数据被删除,影响到正常的功能/流程/性能测试等,这无疑对测试人员造成了很大负担,测试时间大大增加;同时开发进行问题修复后,测试人员需要再次去迭代测试,测试成本大大提高。如何在尽快降低程序安全错误的修复成本,缩短项目安全测试周期的目标下,无感知且高效精准的安全测试并自动化预测分析安全问题,进行高效的安全测试是一个亟待解决的问题。

技术实现思路

[0003]针对现有技术中的问题,本专利技术实施例提供一种静态代码安全诊断方法及装置,能够至少部分地解决现有技术中存在的问题。
[0004]一个方面,本专利技术提供一种静态代码安全诊断方法,包括:
[0005]获取待诊断程序的静态代码;所述静态代码包括多个分词;
[0006]对每个分词进行词法分析,得到分词符号表;所述分词符号表的每个条目包括对应分词的特征信息;
[0007]根据每个分词的特征信息对每个条目下的分词进行漏洞检测,确定每个条目下的漏洞分词,进而诊断出漏洞代码。
[0008]在优选的实施例中,所述对每个分词进行词法分析,得到分词符号表,包括:
[0009]根据所述分词构建每个条目对应的词素;
[0010]根据每个词素从静态代码中分离出对应的分词,每个词素对应的分词共同组成单词流;
[0011]利用词法分析器分析各个分词的语法组成,得到各分词的语法树;
[0012]根据所述单词流和所述语法树生成所述分词符号表。
[0013]在优选的实施例中,所述根据每个分词的特征信息对每个条目下的分词进行漏洞检测,确定每个条目下的漏洞分词,包括:
[0014]分别将每个条目下的所述分词输入至已搭建的二分类器模型;
[0015]若所述二分类器输出是,则该分词为所述漏洞分词;其中所述二分类器是通过训练集训练得到。
[0016]在优选的实施例中,所述根据所述分词构建每个条目对应的词素,包括:
[0017]根据所述分词确定语言的词法单元,构造语法单元的模式代码,所述模式代码包括所述语法单元的词素的所有可能形式。
[0018]在优选的实施例中,还包括:
[0019]基于至少一个修正模型对所述漏洞代码进行修正,去除所述漏洞代码中误报的漏洞分词。
[0020]在优选的实施例中,所述基于至少一个修正模型对所述漏洞代码进行修正,去除所述漏洞代码中误报的漏洞分词,包括如下步骤中的至少一个:
[0021]基于无效注入模型对SQL注入模型进行优化,剔除不存在于servlet中的漏洞分词;
[0022]基于Sql校验模型对漏洞分词进行分析,检测其#{}标识的变量种类,剔除代码控制的变量;
[0023]基于邮箱敏感信息泄露模型对漏洞分词中的邮箱敏感信息进行二次判断,若所述邮箱敏感信息为原始框架库中自有的信息,则优化原始结果。
[0024]在优选的实施例中,还包括:基于深度学习分析模型对安全问题进行特征分析,得到安全结果。
[0025]另一方面,本专利技术提供一种静态代码安全诊断装置,包括:
[0026]静态代码获取模块,获取待诊断程序的静态代码;所述静态代码包括多个分词;
[0027]词法分析模块,对每个分词进行词法分析,得到分词符号表;所述分词符号表的每个条目包括对应分词的特征信息;
[0028]漏洞检测模块,根据每个分词的特征信息对每个条目下的分词进行漏洞检测,确定每个条目下的漏洞分词,进而诊断出漏洞代码。
[0029]再一方面,本专利技术提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述静态代码安全诊断方法的步骤。
[0030]又一方面,本专利技术提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一实施例所述静态代码安全诊断方法的步骤。
[0031]本专利技术实施例提供的静态代码安全诊断方法及装置,通过获取待诊断程序的静态代码;所述静态代码包括多个分词;对每个分词进行词法分析,得到分词符号表;所述分词符号表的每个条目包括对应分词的特征信息;根据每个分词的特征信息对每个条目下的分词进行漏洞检测,确定每个条目下的漏洞分词,进而诊断出漏洞代码。本专利技术基于文本分析技术,构建了词法分析器,对静态代码进行词法分析,得到代码对应的符号表,在无需开发人员手动进行的情况下,获取应用代码的安全指标情况和以及更为细粒度的漏洞描述,具体的漏洞详细信息和漏洞整改方案,获取的数据可以进行漏洞整体数据分析和数据挖掘,不需要再通过人工去进行安全代码漏洞测试的检验和分析。
附图说明
[0032]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
[0033]图1示出本专利技术实施例中一种静态代码安全诊断方法的流程示意图。
[0034]图2示出本专利技术实施例中虚拟装置:安全自动化配置定义装置的虚拟结构示意图。
[0035]图3示出本专利技术实施例中虚拟装置:智能安全分析装置的虚拟结构示意图。
[0036]图4示出本专利技术实施例中场景中的应用方法流程示意图。
[0037]图5示出本专利技术实施例中静态代码安全诊断装置的结构示意图。
[0038]图6示出本专利技术实施例中实现本专利技术方法步骤的电子设备结构示意图。
具体实施方式
[0039]为使本专利技术实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本专利技术实施例做进一步详细说明。在此,本专利技术的示意性实施例及其说明用于解释本专利技术,但并不作为对本专利技术的限定。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0040]图1是本专利技术实施例中一种静态代码安全诊断方法的流程示意图,如图1所示,包括:
[0041]S1:获取待诊断程本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种静态代码安全诊断方法,其特征在于,包括:获取待诊断程序的静态代码;所述静态代码包括多个分词;对每个分词进行词法分析,得到分词符号表;所述分词符号表的每个条目包括对应分词的特征信息;根据每个分词的特征信息对每个条目下的分词进行漏洞检测,确定每个条目下的漏洞分词,进而诊断出漏洞代码。2.根据权利要求1所述的静态代码安全诊断方法,其特征在于,所述对每个分词进行词法分析,得到分词符号表,包括:根据所述分词构建每个条目对应的词素;根据每个词素从静态代码中分离出对应的分词,每个词素对应的分词共同组成单词流;利用词法分析器分析各个分词的语法组成,得到各分词的语法树;根据所述单词流和所述语法树生成所述分词符号表。3.根据权利要求1所述的静态代码安全诊断方法,其特征在于,所述根据每个分词的特征信息对每个条目下的分词进行漏洞检测,确定每个条目下的漏洞分词,包括:分别将每个条目下的所述分词输入至已搭建的二分类器模型;若所述二分类器输出是,则该分词为所述漏洞分词;其中所述二分类器是通过训练集训练得到。4.根据权利要求1所述的静态代码安全诊断方法,其特征在于,所述根据所述分词构建每个条目对应的词素,包括:根据所述分词确定语言的词法单元,构造语法单元的模式代码,所述模式代码包括所述语法单元的词素的所有可能形式。5.根据权利要求4所述的静态代码安全诊断方法,其特征在于,还包括:基于至少一个修正模型对所述漏洞代码进行修正,去除所述漏洞代码中误报的漏...

【专利技术属性】
技术研发人员:郭雷娟杨卓俊勾志营李麦琪
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1