本发明涉及应用安全,尤其是涉及一种基于污点分析的应用程序脆弱性检测方法及装置、介质。
背景技术:
1、随着互联网行业的不断发展,企业云平台的应用程序呈现领域化、复杂化、规模化。企业在数字化时代的进程中愈发依赖云服务,云应用安全问题成为不容忽视的焦点。云服务的便捷性为企业提供了强大的存储、计算、应用能力。然而,伴之而来的网络攻击风险也日益显著。在这一背景下,及时发现云应用的脆弱性,确保云安全措施的有效性迫在眉睫,已经成为企业云平台维护业务安全的不可或缺之举。
2、应用程序脆弱性通常是指应用程序中隐藏的一些漏洞或弱点,本身不会引起危害,但被利用后会产生严重的安全问题。这些漏洞或弱点可能源于软件开发过程中自觉或不自觉引入的逻辑错误,也可能与具体的系统环境密切相关。此外,旧的脆弱性得到修补或纠正的同时可能引入新的脆弱性,因此脆弱性问题会长期存在。应用程序脆弱性可能存在于硬件、软件、协议的设计和实现中,以及系统采取的安全策略中。它的存在直接后果是允许非法或非授权用户获取或提高访问权限,从而给攻击者可乘之机破坏网络系统。
3、目前常规的云平台应用程序脆弱性检测分析方法主要有如下两种:
4、静态代码分析,通过检查源代码或二进制文件来查找软件漏洞,是一种人工检查代码的方法,通过走查审计找出代码中的漏洞。
5、动态测试分析,通过运行应用程序来检测漏洞。在动态测试期间,测试人员通过模拟攻击对应用程序运行状态进行观测,获取并分析应用程序的行为,进而发现应用程序的漏洞。
6、常规的云平台应用程序脆弱性检测分析方法通常需要对代码内容直接遍历或动态运行,耗时较长,且存在一定的漏检情况。
技术实现思路
1、针对以上至少一个技术问题,本发明实施例提供一种基于污点分析的应用程序脆弱性检测方法及装置、介质。
2、根据第一方面,本发明实施例提供的基于污点分析的应用程序脆弱性检测方法包括:
3、对应用程序的原始代码进行词法和语法分析处理,得到等价中间表示数据;其中,所述等级中间表示数据包括由所述原始代码中的关键元素形成的抽象语法树;
4、对所述抽象语法树进行遍历,以提取出数据依赖关系和方法调用依赖关系,将所述数据依赖关系和所述方法调用依赖关系形成所述应用程序对应的传播路径树;
5、收集所述应用程序的脆弱点,将所述脆弱点标记为污染数据的入口,并设置污染数据从所述入口到出口之间的传播过程中的传播规则;
6、将所述污染数据输入到所述入口,以使所述污染数据依据所述传播规则在所述传播路径树中沿着各条传播路径进行传播,并在各个传播路径各自的出口处得到输出结果;
7、判断在所述出口处得到的输出结果是否与脆弱性检测规则相匹配;
8、若是,则确定所述输出结果对应的传播路径存在漏洞。
9、在一个实施例中,所述对所述抽象语法树进行遍历,以提取出数据依赖关系和方法调用依赖关系,包括:
10、s1、将所述抽象语法树中第n个节点放入队列中的队尾;其中,n的初始至为0,第0个节点为所述抽象语法树的根节点;n为整数;
11、s2;将不为空的所述队列中的第一个节点取出并作为当前节点,调用所述当前节点对应的处理函数;
12、s3、判断第n个节点是否为所述抽象语法树的叶子节点;
13、s4、若是,则退出遍历过程,将各个节点的处理函数之间的先后调用关系作为所述方法调用依赖关系输出,并将所述处理函数的输出参数与输入参数之间的依赖关系作为所述数据依赖关系输出;
14、s5、否则,将第n个节点的子节点作为第n+1个节点,并返回到s1中。
15、在一个实施例中,所述出口处输出所述污染数据对应的输出结果中包括表现特征和污染数据对应的处理结果;其中,所述表现特征为体现传播路径的特征信息。
16、在一个实施例中,所述判断在所述出口处得到的输出结果是否与脆弱性检测规则相匹配,包括:
17、将所述输出结果中的所述处理结果分别与对应的脆弱点存在的各种攻击模式的脆弱性检测规则进行匹配操作;
18、若所述处理结果命中至少一种攻击模式的脆弱性检测规则,则所述输出结果中的表现特征对应的传播路径存在该至少一种攻击模式对应的漏洞。
19、在一个实施例中,所述方法还包括:
20、若各个入口对应的各个出口处得到的所述处理结果均未命中对应的脆弱点存在的任何一种攻击模式的脆弱性检测规则,则所述应用程序为正常应用程序。
21、在一个实施例中,所述方法还包括:
22、若所述输出结果对应的传播路径存在漏洞,则生成漏洞利用路径图,生成漏洞修复建议;
23、根据所述漏洞利用路径图和所述漏洞修复建议生成告警信息,并将所述告警信息推送给运维人员,以使运维人员根据所述漏洞利用路径图和所述漏洞修复建议进行漏洞修复。
24、在一个实施例中,所述对应用程序的原始代码进行词法和语法分析处理,得到等价中间表示数据,包括:
25、对所述应用程序中的类、函数、对象、变量、注释、语法关键字和正则表达式进行扫描,标注所述应用程序中语法以及所述应用程序的代码起始段和代码结束段,依据所述应用程序的文本类型的语法规则对所述应用程序进行语法分析,通过上下文关联语法来表示所述应用程序的语法特点,得到所述应用程序中的关键元素,并将所述关键元素形成所述等价中间表示数据。
26、根据第二方面,本发明实施例提供的基于污点分析的应用程序脆弱性检测装置包括:
27、第一分析模块,用于对应用程序的原始代码进行词法和语法分析处理,得到等价中间表示数据;其中,所述等级中间表示数据包括由所述原始代码中的关键元素形成的抽象语法树;
28、遍历分析模块,用于对所述抽象语法树进行遍历,以提取出数据依赖关系和方法调用依赖关系,将所述数据依赖关系和所述方法调用依赖关系形成所述应用程序对应的传播路径树;
29、入口标记模块,用于收集所述应用程序的脆弱点,将所述脆弱点标记为污染数据的入口,并设置污染数据从所述入口到出口之间的传播过程中的传播规则;
30、数据传播模块,用于将所述污染数据输入到所述入口,以使所述污染数据依据所述传播规则在所述传播路径树中沿着各条传播路径进行传播,并在各个传播路径各自的出口处得到输出结果;
31、结果匹配模块,用于判断在所述出口处得到的输出结果是否与脆弱性检测规则相匹配;若是,则确定所述输出结果对应的传播路径存在漏洞。
32、根据第三方面,本发明实施例提供计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行实现第一方面提供的方法。
33、根据第四方面,本发明实施例提供的计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面提供的方法。
34、本发明实施例提供的基于污点分析的应用程序脆弱性检测方法及装置、介质,对应用程序的原始代码进行词法和语法分析处理,得到等价中间表示数据,对等价中间表示数据中的抽象语法树进行遍历,从而提取出数据依赖关系和方法调用依赖关系,进而将所述数据依赖关系和所述方法调用依赖关系形成所述应用程序对应的传播路径树。接着,收集所述应用程序的脆弱点,将所述脆弱点标记为污染数据的入口,并设置污染数据从所述入口到出口之间的传播过程中的传播规则。然后将所述污染数据输入到所述入口,这样所述污染数据依据所述传播规则在所述传播路径树中沿着各条传播路径进行传播,并在各个传播路径各自的出口处得到输出结果,然后判断在所述出口处得到的输出结果是否与脆弱性检测规则相匹配;若是,则确定所述输出结果对应的传播路径存在漏洞。可见,本发明实施例是一种基于污点分析技术的脆弱性检测方案,可以检测出应用程序中的各种漏洞问题,从而提高云平台应用安全管理能力。相比于现有技术中的静态分析方法,本发明实施例可以提高检测的灵活性。相对于现有技术中的动态测试方法,本发明实施例可以提高检测效率。可见,本发明实施例可以提升应用程序脆弱性检测的效率和准确率,保证了云平台应用程序的安全性,进而增强云平台的网络系统安全,降低企业机密数据、隐私数据泄露事件的发生率。
1.一种基于污点分析的应用程序脆弱性检测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述对所述抽象语法树进行遍历,以提取出数据依赖关系和方法调用依赖关系,包括:
3.根据权利要求1所述的方法,其特征在于,所述出口处输出所述污染数据对应的输出结果中包括表现特征和污染数据对应的处理结果;其中,所述表现特征为体现传播路径的特征信息。
4.根据权利要求3所述的方法,其特征在于,所述判断在所述出口处得到的输出结果是否与脆弱性检测规则相匹配,包括:
5.根据权利要求4所述的方法,其特征在于,还包括:
6.根据权利要求1所述的方法,其特征在于,还包括:
7.根据权利要求1所述的方法,其特征在于,所述对应用程序的原始代码进行词法和语法分析处理,得到等价中间表示数据,包括:
8.一种基于污点分析的应用程序脆弱性检测装置,其特征在于,包括:
9.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行实现权利要求1~7中的任一项所述的方法。
10.一种计算设备,其特征在于,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1~7中的任一项所述的方法。