System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于静态分析的自动化代码审计方法及系统技术方案_技高网

一种基于静态分析的自动化代码审计方法及系统技术方案

技术编号:40700264 阅读:5 留言:0更新日期:2024-03-22 10:57
本发明专利技术涉及一种基于静态分析的自动化代码审计方法及系统,通过将非结构化的源代码经过抽象语法树构造、依赖分析及数据分析,输出结构化的AST、CFG以及PDG,达到对代码更准确地进行审计分析的目的,还采用了多种静态分析方法对程序依赖图进行检测,以达到检测目标源代码是否存在安全脆弱的目的。

【技术实现步骤摘要】

本专利技术涉及代码审计,尤其是指一种基于静态分析的自动化代码审计方法及系统


技术介绍

1、随着计算机技术在科技、教育、文化、商业、运输和办公等领域的迅速发展和广泛应用,互联网已经成为现代社会的一个重要组成部分。web应用程序的重要性日益增加,但是由于时间限制、编程技能有限以及开发人员缺乏安全意识等原因,其导致的安全缺陷对网络和系统构成了挑战,这也增加了此类应用程序中安全缺陷对人们日常生活的负面影响。当这些安全缺陷被不断报告时,由此对用户造成的损失成本也在增加。然而,目前大多数公共web服务没有对其运行的应用程序执行任何类型的安全质量保证,这可能会使web服务器容易受到来自外部的攻击。

2、为了实现各种丰富的功能和服务,需要使用一种或多种编程语言。其中,php、ava、asp.net、asp等是常用的web应用开发语言。php作为一种功能丰富,使用方便灵活的编程语言,在网络开发中得到了广泛的应用。php语言虽然相对容易上手,但是由于开发人员安全素质参差不齐,导致web应用程序漏洞频发。据当前cve漏洞数据库统计,大约29%的安全漏洞与php相关。php web应用程序安全缺陷包含传统web应用安全问题,如sql注入、跨站脚本攻击等,以及一些php语言独有的安全漏洞,例如类注入、模板注入等。这些安全漏洞让phpweb应用程序的安全性难以保证,使得php web应用程序处于持续风险之中。因此,在开发过程中,开发人员必须注重安全性,并采取相应的安全措施来保护php web应用程序。php web应用程序中威胁增加的原因可以分为两个方面:一方面,软件开发规模过大,软件的复杂性和扩展性不断扩大;另一方面,php web应用程序漏洞不容易被检测和低级软件应用程序的泛滥。

3、目前提升php web应用程序安全性的方法主要是对代码进行安全性审计。使用代码审计工具进行自动化的分析,来取代人工审计就成了必然的趋势。利用审计工具,根据不同的策略和规则,对目标php web应用程序进行缺陷分析,可以有效地检测出常见的php代码缺陷。虽然单一的检测方法和工具不能检测全部的php缺陷,但是相比于人工审核方法,自动检测工具可以有效的帮助审核人员提高工作效率,避免重复工作,进而提高php网络应用的安全性,减少web应用被攻击的概率。利用代码审计工具实现对web应用的自动分析,是目前改善web应用安全的主要途径之一。但是目前,代码审计技术还不成熟,存在着缺乏实用性和高误报率的问题,并且缺少工业和商业的支持,所以存在各方面问题,导致发展速度相对缓慢。所以如何有效、高效的开发出一款自动化代码审计的软件来应对上述挑战具有十分重要的理论和现实研究意义。

4、需要说明的是,在上述
技术介绍
部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现思路

1、为此,本专利技术所要解决的技术问题在于克服现有技术中代码审计技术还不成熟,存在着缺乏实用性和高误报率的问题,并且缺少工业和商业的支持,所以导致发展速度相对缓慢。

2、为解决上述技术问题,本专利技术的第一方面提供了一种基于静态分析的自动化代码审计方法,所述方法包括:获取目标源代码;所述目标源代码为非结构化代码;

3、对所述目标源代码进行词法分析和语法分析生成抽象语法树;

4、对所述抽象语法树进行控制流分析,生成控制流图;

5、对所述控制流图进行数据依赖分析,生成程序依赖图;

6、根据ast的代码分析方法对所述程序依赖图进行检测,生成第一检测结果;

7、根据ir/cfg的代码分析方法对所述程序依赖图进行检测,生成第二检测结果;

8、根据ql的漏洞发现方法对所述程序依赖图进行检测,生成第三检测结果;

9、根据动态污染扩散的漏洞发现方法对所述程序依赖图进行检测,生成第四检测结果;

10、将所述第一检测结果、所述第二检测结果、所述第三检测结果和所述述第四检测结果进行整合,生成代码检测结果。

11、在本专利技术的一个实施例中,对所述抽象语法树进行控制流分析,生成控制流图的步骤包括:

12、对所述抽象语法树进行遍历,将所述抽象语法树中的节点和边添加至图形对象;

13、将所述图形对象渲染为png格式的图像,以生成所述控制流图。

14、在本专利技术的一个实施例中,将所述抽象语法树中的节点和边添加至图形对象的步骤包括:

15、判断所述节点是否包括子节点;

16、若所述节点不包括子节点,则判断所述节点的类型是否为列表;

17、若所述节点的类型为列表,则递归遍历所述节点中的每个元素;

18、若所述节点的类型不为列表,则将所述节点添加至所述图形对象;

19、若所述节点包括子节点,则遍历所述子节点,并将所述子节点添加至所述图形对象。

20、在本专利技术的一个实施例中,对所述控制流图进行数据依赖分析,生成程序依赖图的步骤包括:

21、根据深度优先方法遍历所述控制流图,生成数据依赖关系;

22、以有向边的形式为所述控制流图添加所述数据依赖关系,生成程序依赖图。

23、在本专利技术的一个实施例中,根据ast的代码分析方法对所述程序依赖图进行检测,生成第一检测结果的步骤包括:

24、对所述程序依赖图中的节点进行遍历;

25、若所述节点属于危险函数,则利用递归查询,生成所述目标源代码的被动输入电流;

26、根据所述被动输入电流生成第一检测结果。

27、在本专利技术的一个实施例中,根据ir/cfg的代码分析方法对所述程序依赖图进行检测,生成第二检测结果的步骤包括:

28、遍历所述抽象语法树的多个节点;

29、根据所述节点的节点类型,判断所述节点是否包含敏感函数;

30、若所述节点不包含敏感函数,则遍历所述节点的子节点;

31、若所述节点包含敏感函数,则记录所述节点的节点信息;

32、根据多个所述节点信息生成所述目标源代码的脆弱列表;

33、根据所述脆弱列表生成所述第二检测结果。

34、在本专利技术的一个实施例中,根据动态污染扩散的漏洞发现方法对所述程序依赖图进行检测,生成第四检测结果的步骤包括:

35、根据深度优先算法对所述程序依赖图进行遍历并进行路径检测,生成污染标签的扩散途径;

36、对污染标签进行安全检验,生成第四检测结果。

37、本专利技术的第二方面提供了一种基于静态分析的自动化代码审计系统,应用于上述第一方面中任意一项提出的一种方法,所述系统包括:获取模块、计算模块、检测模块和整合模块;

38、所述获取模块被配置为:获取目标源代码;所述目标源代码为非结构化代码;

39、所述计算模块被配置为:对所述目标源代码进行词法分析和语法分析生本文档来自技高网...

【技术保护点】

1.一种基于静态分析的自动化代码审计方法,其特征在于,所述方法包括:

2.根据权利要求1所述的一种基于静态分析的自动化代码审计方法,其特征在于,对所述抽象语法树进行控制流分析,生成控制流图的步骤包括:

3.根据权利要求2所述的一种基于静态分析的自动化代码审计方法,其特征在于,将所述抽象语法树中的节点和边添加至图形对象的步骤包括:

4.根据权利要求1所述的一种基于静态分析的自动化代码审计方法,其特征在于,对所述控制流图进行数据依赖分析,生成程序依赖图的步骤包括:

5.根据权利要求1所述的一种基于静态分析的自动化代码审计方法,其特征在于,根据AST的代码分析方法对所述程序依赖图进行检测,生成第一检测结果的步骤包括:

6.根据权利要求1所述的一种基于静态分析的自动化代码审计方法,其特征在于,根据IR/CFG的代码分析方法对所述程序依赖图进行检测,生成第二检测结果的步骤包括:

7.根据权利要求1所述的一种基于静态分析的自动化代码审计方法,其特征在于,根据动态污染扩散的漏洞发现方法对所述程序依赖图进行检测,生成第四检测结果的步骤包括:

8.一种基于静态分析的自动化代码审计系统,其特征在于,应用于上述权利要求1至7任一项所述的一种基于静态分析的自动化代码审计方法,所述系统包括:获取模块、计算模块、检测模块和整合模块;

9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述一种基于静态分析的自动化代码审计方法的步骤。

10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述一种基于静态分析的自动化代码审计方法的步骤。

...

【技术特征摘要】

1.一种基于静态分析的自动化代码审计方法,其特征在于,所述方法包括:

2.根据权利要求1所述的一种基于静态分析的自动化代码审计方法,其特征在于,对所述抽象语法树进行控制流分析,生成控制流图的步骤包括:

3.根据权利要求2所述的一种基于静态分析的自动化代码审计方法,其特征在于,将所述抽象语法树中的节点和边添加至图形对象的步骤包括:

4.根据权利要求1所述的一种基于静态分析的自动化代码审计方法,其特征在于,对所述控制流图进行数据依赖分析,生成程序依赖图的步骤包括:

5.根据权利要求1所述的一种基于静态分析的自动化代码审计方法,其特征在于,根据ast的代码分析方法对所述程序依赖图进行检测,生成第一检测结果的步骤包括:

6.根据权利要求1所述的一种基于静态分析的自动化代码审计方法,其特征在于,根据ir/cfg的代码分析方法对所述程序依赖图...

【专利技术属性】
技术研发人员:周自强刘珊杨大哲张宇王尧
申请(专利权)人:国网山西省电力公司电力科学研究院
类型:发明
国别省市:

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

1