【技术实现步骤摘要】
一种安全扫描方法及装置
[0001]本申请涉及计算机
,尤其涉及一种安全扫描方法及装置。
技术介绍
[0002]目前,业界对应用安全的自动化测试提出的技术方案包括静态应用安全测试(static application security testing,SAST),SAST的解决方案为针对静态源代码文件直接进行分析,但在分析的过程中并不是执行静态源代码,而是仅根据静态源代码中的部分特征,确定是否存在安全漏洞。通常SAST的技术方案实现为:根据安全漏洞对具体产生问题的漏洞组件进行分析,通过分析该漏洞组件的特征,提炼出特定的关键信息(包括指纹、关键词、方法名等);然后,基于漏洞的攻击途径,根据漏洞攻击过程中所有防护点的安全加固方法提炼出关键实现(包括方法名、加固组件等);最后,根据上述提炼出的特定的关键信息和关键实现生成一组正则表达式,将该正则表达式用于安全扫描。
[0003]虽然在上述技术方案中,对于关键信息和关键实现,可以通过生成正则表达式的方法,较为简单的实现安全扫描,但是存在无法对攻击途径分析的缺点,从而导致 ...
【技术保护点】
【技术特征摘要】
1.一种安全扫描方法,其特征在于,该方法包括:响应于安全扫描指令,获取被检测静态源代码;根据所述被检测静态源代码中包含的关键语法信息和代码行号信息,对所述被检测静态源代码进行转化得到第一结构表示;其中所述第一结构用于指示所述被检测静态源代码中包含的关键语法信息,且所述第一结构表示中包含各关键语法信息在所述被检测静态源代码中的代码行号信息;基于所述第一结构表示得到对所述被检测静态源代码的流数据表示,所述流数据用于指示所述被检测静态源代码中包含的至少一条逻辑关系;基于所述流数据进行安全扫描。2.根据权利要求1所述的方法,其特征在于,所述基于所述第一结构表示得到对所述被检测静态源代码的流数据表示,包括:从所述第一结构表示中解析得到多个语法节点,各语法节点具有调用关系和/或被调用关系;基于所述各语法节点的调用关系和/或被调用关系,生成所述被检测静态源代码的第二结构表示;所述第二结构中包含所述被检测静态源代码中多个语法节点的逻辑关系;根据所述第二结构表示得到树状结构表示,所述树状结构用于指示所述被检测静态源代码中多个语法节点的逻辑关系;基于所述树状结构,生成至少一条控制流以及各控制流匹配的数据流;其中,每条控制流用于指示一条逻辑关系;将所述控制流和数据流进行整合,得到所述流数据表示。3.根据权利要求1所述的方法,其特征在于,所述响应于安全扫描指令,获取被检测静态源代码,包括:响应于对静态源代码基线版本的安全扫描指令,将所述静态源代码基线版本作为所述待检测静态源代码;或者,响应于对静态源代码迭代版本的安全扫描指令,且本地存储有对所述静态源代码基线版本的安全扫描结果,获取所述静态源代码迭代版本相对于基线版本变更的代码部分,将所述变更的代码部分作为所述待检测静态源代码;或者,响应于对静态源代码迭代版本的安全扫描指令,且本地存储有对所述静态源代码历史迭代版本的安全扫描结果,获取所述静态源代码迭代版本相对于历史迭代版本变更的代码部分,将所述变更的代码部分作为所述待检测静态源代码。4.根据权利要求1~3任一所述的方法,其特征在于,所述关键语法信息至少包括以下中的一种:类结构、方法结构、继承结构;所述第一结构表示为抽象语法树结构。5.根据权利要求2所述的方法,其特征在于,所述第二结构表示为有向图结构。6.根据权利要求1所述的方法,其特征在于,基于所述流数据进行安全扫描,包括:基于用于安全扫描的检索关键词对所述流数据进行遍历,所述检索关键词通过安全扫描规则得到;在遍历到所述流数据中存在与所述检索关键词匹配的数据,则表示存在安全漏洞。7.一种安全扫描装置,其特征在于,该装置包括:
获取模块,用于响应于安全扫描指令,获取被检测静态源代码;第一结构生成模块,用于根据所述被检测静态源代码中包含的关键语法信息和代码行号信息,对所述被检测静态源代码进行转化得到第一结构表示;其中所述第一结构用于指示所述被检测静态源代码中包含的关键语法信息,且所述第一结构表示中包含各关键语法信息在所述被...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。