CN112906011B - 漏洞发现方法、测试方法、安全测试方法及相关装置、平台 - Google Patents
漏洞发现方法、测试方法、安全测试方法及相关装置、平台 Download PDFInfo
- Publication number
- CN112906011B CN112906011B CN202110492635.8A CN202110492635A CN112906011B CN 112906011 B CN112906011 B CN 112906011B CN 202110492635 A CN202110492635 A CN 202110492635A CN 112906011 B CN112906011 B CN 112906011B
- Authority
- CN
- China
- Prior art keywords
- type
- vulnerability
- message
- attack
- effective
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种漏洞发现方法、测试方法、安全测试方法及相关装置、平台。其中的技术方案,通过在服务端的与目标程序耦合的代理,通过获取接收的第一合法请求,并利用第一合法请求识别可能潜藏的第一类型漏洞集合,自动触发和接受攻击测试,主动发现目标程序中相应的第一类型漏洞,以及对应地在测试端响应触发,提供相应的攻击测试,以解决在应用安全测试过程中为目标对象提供更具针对性的精准化安全测试的问题,以及解决其他如检测精确度、漏洞定位、漏洞收敛等的问题。
Description
技术领域
本申请涉及计算机应用程序安全测试技术领域,具体涉及一种漏洞发现方法、测试方法、安全测试方法及相关装置、平台。
背景技术
随着数字时代的到来,基于B/S的Web应用技术被广泛用于政企业务数字化转型中。然而,随之而来的应用安全威胁也显著增加。相关研究显示,越来越多的安全漏洞发生在应用程序层,而非我们以往认知的网络层。为了确保应用程序在交付部署后能够安全稳定的提供服务,通常都会在交付前使其通过应用安全测试,发现和修复其中的薄弱点和漏洞,以防止相关应用程序被黑客及非法人员利用,造成安全危害。那么,对于应用程序的安全测试,如何提供一个更为高效和广泛适用的技术方案,成为一个技术难题。
发明内容
有鉴于此,本申请旨在提供一种漏洞发现方法、测试方法、安全测试方法及相关装置、平台,以解决上述技术问题。
根据本申请公开的示例实施例,提供一种自动化漏洞发现方案,以及对应的攻击测试方案和基于此的用于自动化安全测试的IAST灰盒安全测试方案。
在本公开的第一方面中,提供一种自动化的漏洞发现方法。该方法基于Agent技术,应用于服务端,包括:在服务端,对目标程序中的关键函数插桩探针;对于目标程序中可能潜藏的不同类型的漏洞,对应其中的每一类型的漏洞,在目标程序中均包括至少一个与之对应的关键函数;获取服务端接收的自客户端发出的第一合法请求报文;根据目标程序中处理第一合法请求报文的内部逻辑结构,确定第一类型漏洞集合;第一类型漏洞集合中包括至少一种第一类型漏洞;转发第一合法请求报文及第一类型漏洞集合信息到测试端;转发到测试端的第一合法请求报文及所述集合信息中的每一种第一类型漏洞信息,用于测试端在发起攻击测试时根据其中的所述第一类型漏洞信息中的漏洞类型构造与之对应的有效载荷,并以此替换第一合法请求报文中对应的原始载荷,生成对应的、能够验证所述第一类型漏洞的第一攻击测试报文;第一攻击测试报文用于攻击服务端,诱发目标程序中对应的第一类型漏洞;以及在服务端受到自测试端发出的第一攻击测试报文的攻击过程中,在每次第一攻击测试报文攻击时,获取服务端接收的第二攻击测试报文,第二攻击测试报文是指当前攻击的第一攻击测试报文;解析提取第二攻击测试报文中的有效报文内容,并在目标程序处理第二攻击测试报文过程中获取对应其的有效实时响应数据;根据第二攻击测试报文的有效报文内容和对应的有效实时响应数据,验证目标程序中是否潜藏了第二类型漏洞,第二类型漏洞是指对应第二攻击测试报文的第一类型漏洞;其中,提取的第二攻击测试报文有效报文内容,包括第二攻击测试报文中的有效载荷参数内容;获取的有效实时响应数据,包括目标程序处理第二攻击测试报文过程中的运行上下文;上述的运行上下文,主要包括:有效运行时数据,及其对应的关键函数信息;其中的有效运行时数据,是指使插桩探针在第二攻击测试数据流执行到插桩点时所获取的运行时数据,第二攻击测试数据流是指在目标程序处理第二攻击测试报文过程中发生的对应第二攻击测试报文的攻击测试数据流;而有效运行时数据对应的关键函数信息,是指获取所述有效运行时数据的插桩点对应的***桩关键函数的信息;在上述的关键函数信息中,主要包括获取所述***桩关键函数的函数名称等。
在本公开的第二方面中,对应地,提供一种用于自动化漏洞发现的攻击测试方法。该方法,应用于测试端,包括:在测试端,接收自服务端转发的第一合法请求报文、及其对应的第一类型漏洞集合信息;第一类型漏洞集合中包括至少一种第一类型漏洞;根据所述集合信息中的每一种第一类型漏洞信息,构造与所述第一类型漏洞信息中的漏洞类型对应的有效载荷,替换第一合法请求报文中对应的原始载荷,生成验证所述第一类型漏洞的第一攻击测试报文;向服务端发送第一攻击测试报文,攻击服务端;第一攻击测试报文,用于诱发目标程序中对应的第一类型漏洞。
在本公开的第三方面中,提供一种自动化IAST灰盒安全测试方法。该方法包括:在服务端,接收自客户端发出的第一合法请求报文,执行第一方面述及的方法,通过自动触发和接受测试端发起的攻击测试,主动发现目标程序中对应该类第一合法请求的第一类型漏洞;以及对应地,在测试端,执行第二方面述及的方法,接收服务端的转发,并据此向服务端发起相应的攻击测试。
在本公开的第四方面中,提供一种用于自动化漏洞发现的装置。该装置,部署在服务端,包括:程序插桩模块、自动化攻击测试触发模块和漏洞验证发现模块;程序插桩模块,被配置为对目标程序中的关键函数插桩探针;自动化攻击测试触发模块,被配置为获取服务端接收的自客户端发出的第一合法请求报文,根据目标程序中处理第一合法请求报文的内部逻辑结构确定第一类型漏洞集合,以及转发第一合法请求报文及第一类型漏洞集合信息到测试端;其中,自动化攻击测试触发模块确定的第一类型漏洞集合中,包括至少一种第一类型漏洞;漏洞验证发现模块,被配置为在服务端受到自测试端发出的第一攻击测试报文的攻击过程中的每次第一攻击测试报文攻击时,获取服务端接收的第二攻击测试报文,解析提取第二攻击测试报文中的有效报文内容,并在目标程序处理第二攻击测试报文过程中获取对应其的有效实时响应数据,以及根据第二攻击测试报文的有效报文内容和对应的有效实时响应数据,验证目标程序中是否潜藏了第二类型漏洞;其中,第二攻击测试报文是指当前攻击的第一攻击测试报文;第二类型漏洞是指对应第二攻击测试报文的第一类型漏洞。
对于程序插桩模块插桩探针的关键函数,对应目标程序中任一可能潜藏的类型的漏洞,在目标程序中均包括至少一个与之对应的、能够被程序插桩模块插桩探针的关键函数;自动化攻击测试触发模块转发到测试端的第一合法请求报文及其对应的及第一类型漏洞集合信息中的每一种第一类型漏洞信息,用于测试端在发起攻击测试时根据其中的所述第一类型漏洞信息中的漏洞类型构造与之对应的有效载荷,并以此替换第一合法请求报文中对应的原始载荷,生成对应的、能够验证所述第一类型漏洞的第一攻击测试报文;第一攻击测试报文用于攻击服务端,诱发目标程序中对应的第一类型漏洞;漏洞验证发现模块从第二攻击测试报文提取的有效报文内容,包括第二攻击测试报文中的有效载荷参数内容;获取的有效实时响应数据,包括目标程序处理第二攻击测试报文过程中的运行上下文;上述的运行上下文,主要包括:有效运行时数据,及其对应的关键函数信息;其中的有效运行时数据,是指使插桩探针在第二攻击测试数据流执行到插桩点时所获取的运行时数据,第二攻击测试数据流是指在目标程序处理第二攻击测试报文过程中发生的对应第二攻击测试报文的攻击测试数据流;而有效运行时数据对应的关键函数信息,是指获取所述有效运行时数据的插桩点对应的***桩关键函数的信息;在上述的关键函数信息中,主要包括获取所述***桩关键函数的函数名称。
在本公开的第五方面中,提供一种用于自动化漏洞发现的攻击测试装置。该装置,用于测试端的攻击测试,包括:接收模块和攻击测试模块;接收模块,被配置为接收自服务端转发的第一合法请求报文、及其对应的第一类型漏洞集合信息;第一类型漏洞集合中包括至少一种第一类型漏洞;攻击测试模块,被配置为根据接收的所述集合信息中的第一类型漏洞信息,构造与所述第一类型漏洞信息中的漏洞类型对应的有效载荷,替换第一合法请求报文中对应的原始载荷,生成验证所述第一类型漏洞的第一攻击测试报文;向服务端发送第一攻击测试报文;第一攻击测试报文,用于诱发目标程序中对应的第一类型漏洞。
在本公开的第六方面中,提供一种用于IAST灰盒安全测试的电子设备。该电子设备,用作IAST灰盒安全测试中的服务端节点或测试端节点,包括:至少一个处理器,和至少一个处理器耦合的存储器,以及存储在存储器中的计算机程序;其中的处理器执行所述计算机程序,对应地能够实现第一方面述及的自动化漏洞发现的方法或第二方面述及的攻击测试方法。
在本公开的第七方面中,提供一种自动化IAST灰盒安全测试平台。该平台包括:部署在服务端的、能够与目标程序耦合的自动化安全测试代理单元,及与其分离部署的测试单元;自动化安全测试代理单元,用于在服务端接收自客户端发出的合法请求报文后,通过自动触发和接受攻击测试,主动发现目标程序中相关的漏洞;其中,自动化安全测试代理单元被配置为能够执行第一方面述及的方法,主动发现目标程序中的第一类型漏洞;测试单元,用于提供对应的攻击测试服务;测试单元包括至少一个攻击测试引擎节点;攻击测试引擎节点,被配置为能够执行第二方面述及的方法,响应服务端触发,对服务端发起相应的攻击测试。
在本公开的第八方面中,提供了一种计算机可读存储介质。该介质上存储有用于安全测试的计算机指令,该计算机指令在被计算机处理器执行时能够实现第一、第二、第三方面述及的方法中的部分方法或全部方法。
在本公开的第九方面中,提供了一种计算机程序产品。该程序产品包括计算机程序,该计算机程序在被计算机处理器执行时能够实现第一、第二、第三方面述及的方法中的部分方法或全部方法。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:
图1示出了现有的用于Web应用程序安全测试的DAST黑盒测试方案的示例示意图;
图2示出了现有的基于主动插桩的IAST灰盒扫描方案的示例示意图;
图3示出了根据本申请公开的多个实施例能够在其中或其中组成部分实现的示例环境的示意图;
图4示出了根据本公开的一些实施例的自动化漏洞发现方法的流程示意图;
图5示出了上述实施例中的一些的确定第一类型漏洞集合的过程的示意图;
图6示出了上述实施例中的一些的根据有效报文内容和有效实时响应数据验证目标程序中是否潜藏了第二类型漏洞的过程的示意图;
图7示出了图6示出的实施例中的一些在验证漏洞过程中判定关键函数是否异常执行的过程的示意图;
图8示出了图6示出的实施例中的另一些在验证漏洞过程中判定关键函数是否异常执行的过程的示意图;
图9示出了根据本公开的一些实施例的用于自动化漏洞发现的攻击测试方法的流程示意图;
图10示出了根据本公开的一些实施例的自动化IAST灰盒安全测试方法中的一个示例的具体过程的流程示意图;
图11示出了根据本公开的一些实施例的用于自动化漏洞发现的装置的框图;
图12示出了根据本公开的一些实施例的用于自动化漏洞发现的攻击测试装置的框图;
图13示出了根据本公开的一些实施例的用于IAST灰盒安全测试的电子设备的框图;
图14示出了根据本公开的一些实施例的自动化IAST灰盒安全测试平台的架构示意图。
具体实施方式
参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
在本公开的实施例的描述中技术术语“目标程序”,是指在安全测试过程中被作为检测对象的计算机应用程序。对于计算机程序来说,安全漏洞是不可避免的。程序是由人来编程的,兼顾代码质量和开发效率,是不可能存在开发阶段一蹴而就、完全符合编程规范、没有漏洞和缺陷的大型应用程序的;尤其是那些满足诸多功能需求、有着复杂业务逻辑的基于B/S的Web应用程序,是不可避免地存在着漏洞和缺陷的。在数字时代的今天,在软件,特别是各种应用程序(例如各种衣食住行相关的手机App等),越来越定义我们生活的每一部分的今天,考虑到大多数的安全漏洞存在于应用程序中,为了减少被非法利用造成损害,应用程序在上线部署前,一般要求其通过应用安全测试。这里的“目标程序”,主要是指安全测试过程中的被测应用程序。
在本公开的实施例的描述中技术术语“插桩”,又称“程序插桩”,是指在保证被测程序原有逻辑完整性的基础上在程序中***“探针”,通过“探针”的执行获取程序的运行特征数据(即运行时数据),并通过对上述特征数据的分析,获得程序的控制流和数据流,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。其中的“探针”,本质上是进行信息采集的代码片段,可以是赋值语句或采集覆盖信息的函数调用;根据插桩点、捕获数据需求等的不同,可以设计具有相应捕获功能的“探针”,获取所需的数据。在同一个被测程序中,根据不同的测试需要,可以包括仅插桩一个“探针”,也可以在其中多个不同的插桩点分别***“探针”。
在本公开的实施例的描述中技术术语“关键函数”,是指“目标程序”中那些在潜藏的漏洞被触发时异常执行的函数。对于目标程序中可能潜藏的各种不同类型的漏洞,对应其中的每一类型的漏洞,在目标程序中均包括至少一个与之对应的关键函数。
在本公开的实施例的描述中技术术语“第一合法请求报文”,是指“第一合法请求”的报文。而“第一合法请求”是指“第一合法请求集合”中的任一合法请求;“第一合法请求集合”是指自客户端发往服务端的任意一类合法请求的集合;其中,同属于一类的合法请求,是指其报文内容、及其中参数输入内容等都遵守相同的内容格式、规范的一类合法请求。对于任意一类“第一合法请求”,都存在着与之同构的“第一恶意请求”。“第一恶意请求”,能够触发“目标程序”中潜藏的“第一类型漏洞”;对应同一类“第一合法请求”的“第一恶意请求”,根据“第一恶意请求”中参数的恶意输入部分,相对于“第一合法请求”中参数的全部合法输入所处的位置、及所述恶意输入内容等,对应同一类“第一合法请求”,可以包括不同种类的“第一恶意请求”;一般地,对应同一类“第一合法请求”,包括至少一种“第一恶意请求”;对应同一类“第一合法请求”的不同种类的“第一恶意请求”,能够触发“目标程序”中潜藏的对应种类的“第一类型漏洞”;其中,“第一类型漏洞”,属于“第一类型漏洞集合”;“第一类型漏洞集合”,是指对于任意一类“第一合法请求”:其对应的任意一种“第一恶意请求”能够触发的“第一类型漏洞”的集合。
在本公开的实施例的描述中技术术语“第一攻击测试报文”,是指“第一攻击测试请求”的报文;而“第一攻击测试请求”是指能够触发目标程序中的潜藏的“第一类型漏洞”的攻击测试请求。当对于同一类“第一合法请求”,“目标程序”中可能潜藏多种“第一类型漏洞”时,则需要设计不同的“第一攻击测试请求”,攻击服务端,诱发目标程序中对应的“第一类型漏洞”。在本公开的实施例的描述中技术术语“第二攻击测试报文”,是指在服务端触发并被自测试端发出的第一攻击测试报文的攻击过程中,在每次第一攻击测试报文攻击时,当前攻击的“第一攻击测试报文”。
在本公开的实施例的描述中技术术语“有效载荷”,即“Payload”,是指数据传输中被承载运输的实际信息,通常也称作实际数据或数据体。在传输数据时为使数据传输更可靠,通常需要在每一批数据套加一些辅助信息而每一批数据与其辅助“外套”,就构成了传输通道的基本传输单元,即数据帧或数据包;这些“外套”通常被用于辅助数据传输,也称为开销数据;而其中的原始数据通常被视为有效载荷。在应用安全测试技术技术领域,有效载荷主要是指在安全测试中用于检测“目标程序”是否潜藏了漏洞的安全测试数据;具体来说,是指通过诱发“目标程序”中潜藏漏洞进而验证之的安全测试数据。
随着云原生和开源技术的普及,基于B/S的Web应用技术被广泛用于众多政企实体的业务数字化转型发展中。然而,随着软件应用程序总的体量的大规模增长,随之而来的应用安全威胁也显著增加。根据加特纳公司(Gartner Group Inc.)的调研显示,75%的安全漏洞发生在应用程序层,而非我们以往认知的网络层;而美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)发布的相似调查,更是直接指出92%的已知的安全漏洞存在于应用程序中,而非网络层中。
为了及时发现软件应用的漏洞和缺陷,确保Web应用程序在交付部署前后的安全性,通常需要利用Web应用安全测试技术发现Web应用程序中架构的薄弱点和漏洞,防止相关应用被黑客及非法人员利用,造成安全危害。
在传统的应用安全测试技术中,主要包括SAST(静态应用安全测试)和DAST(动态应用安全测试)。SAST对应用程序源代码进行白盒分析,DAST对应用程序进行黑盒测试。然而,SAST白盒分析是在代码的静态视图上运行的,往往无法控制误报率在可接受范围,且无法适用于程序在生产阶段的应用安全测试。图1示出了现有的DAST黑盒测试的示例示意图。DAST黑盒测试,作为一种基于功能的测试,如图1所示,其中的DAST架构100无需了解应用程序的内部逻辑结构,仅通过在扫描端120,利用大量的篡改的请求报文的覆盖扫描,攻击服务端110,进而根据攻击特征库做漏洞发现与验证,即可发现很多的高风险问题。然而,DAST黑盒测试,一方面需要爬虫尽可能地将被测程序或类似程序的结构爬取完整,并根据爬取内容篡改原始请求报文,生成对应的、且尽可能全面的漏洞攻击报文;另一方面需要对被测程序发送上述漏洞攻击报文,对被测程序进行大量攻击,并结合反馈的响应报文,发现其中潜藏的漏洞;正因为此,DAST黑盒测试,对于被测程序,特别是其代码序列中具有相对完整的业务逻辑、相对独立的组成部分的程序代码序列片段的动态执行过程,缺乏针对性、前置(到开发环节)的安全测试能力;换而言之,推而及之到整个软件开发的行业高度,DAST黑盒测试无法适用于程序在开发阶段的应用安全测试,进而使得其在整个行业提倡“安全左移”大趋势下,无法满足DevSecOps(安全开发运维一体化)开发模式下其核心要义——开发环节高效、精准的应用安全测试的需求,无法实践“左移安全赋能”(Earlier SecurityEmpowerment)的理念。
此外,DAST黑盒测试还存在着其他诸多缺点,例如:由于其不能访问代码或实现细节,只是通过对响应报文等的分析发现漏洞,故只能做到定位漏洞的URL,无法定位漏洞的具体代码片段与产生原因;DAST黑盒测试在漏洞扫描过程中,需要向被测程序发送大量的漏洞攻击报文以期尽可能全面地覆盖其中潜藏漏洞,本就缺少针对性,更会产生大量脏数据干扰其他测试;以及由于DAST黑盒测试前对程序结构的爬取无法实现对业务分支的全覆盖等原因,DAST黑盒测试无法做到穷举输入,难免漏报。
IAST(交互式安全测试),作为一种新兴的应用安全测试技术,它融合了DAST和SAST的优势,漏洞检出率高、误报率低,同时还可以较为精准地定位到API接口和代码片段。IAST技术有着多种实现模式,例如插桩模式、代理模式、VPN、流量镜像等,其中各有优劣。以其中具代表性的插桩模式IAST为例,它是指在保证被测程序原有逻辑完整的情况下,对程序插桩探针,并在程序运行时,通过探针获取程序内部信息,基于程序内部信息等综合分析判断漏洞。而根据实现原理的不同,插桩模式IAST又分为被动插桩 IAST 和主动插桩IAST。
其中,被动插桩IAST会在整个安全测试过程中始终静默监听被测程序,需要通过业务测试(手动或自动)触发安全测试,在测试流量通过程序时进行漏洞检测分析,而不是主动攻击被测程序;一般地,被动插桩IAST主要是通过对外部输入在未经安全过滤的前提下在被测程序中传播时潜在的风险扩散情况的分析识别进而综合判定漏洞是否存在的。事实上,单一插桩点获取的程序内部动态数据,并不能直接地、确定地表征漏洞存在;尤其是在被动插桩IAST中,一般需要多点插桩,分别获取各插桩点的内部动态数据,以尽可能充分地表征外部输入在程序中传播的传播过程以及可能的风险扩散情况、以及感知测试流量触发安全测试。即便如此,由于是综合多个插桩点的内部动态数据,意图复现外部输入在未经安全过滤的前提下在被测程序中的传播过程及可能的风险扩散,那么难免因插桩采样缺失导致漏报、误报。另外,在整个安全测试过程中的持续监听,为提高检测精度而不得不采取更密集的多点插桩采集更多的内部动态数据等,都将对运行目标应用程序的设备节点造成性能损耗,影响业务测试效率。此外,在开发者通过被动插桩IAST等方式及时地检出、定位和修复了漏洞后,却仍采用全面回归测试等传统验证方式做漏洞修复验证,显然也是低效的,不利于帮助开发人员快速提高漏洞收敛效率。
图2示出了现有的一些涉及主动插桩IAST的应用示例,即基于主动插桩的IAST灰盒扫描方案的示例示意图。如图2所示,其中的主动插桩IAST架构200,像极了一种改进版的DAST,除了需要IAST代理230插桩追踪被测程序在扫描期间数据流、覆盖率等,仍需要通过爬取生成大量的恶意攻击流量,作为安全测试报文,以扫描端220发出,覆盖扫描服务端210的被测程序,并在扫描过程中将通过IAST代理230广泛插桩持续追踪到大量的数据流、覆盖率等信息上传到管理分析端240,进行漏洞检测分析,进而获得基于漏洞扫描的安全测试报告。在扫描端220,还可以通过接收DAST中响应报文,以及其DAST分析的功能,将基于响应报文分析的漏洞分析报告也上传到管理分析端240,辅助管理分析端240得出更全面的安全测试报告。然而,上述的主动插桩IAST,同DAST一样,存在着诸多相同或相近的问题:例如,仍需要生成尽可能全面的安全测试报文进行覆盖式漏扫,严格来说,即仍未从根本上改变对目标程序内部缺乏精准化安全测试的能力,尤其是缺少对其中的,例如对应着某类外部请求的,程序内部特定业务逻辑等(比如,具有相对完整的业务逻辑、相对独立的组成部分的程序序列代码片段在程序运行时对应的执行过程等)的靶向漏洞验证和发现的能力;事实上,为了追求全面覆盖式的扫描,避免漏报,甚至会为每一种类型的漏洞分别生成对应的攻击测试报文而使得需要生成的攻击测试流量***性增长,导致更多的脏数据产生、干扰其他测试,最终也使得安全测试漏洞扫描过程变得漫长而又低效。
针对上述现有技术存在的具体问题,本申请旨在提供一种漏洞发现方法、测试方法、安全测试方法及相关装置、平台,以解决在应用安全测试过程中为目标对象提供更具针对性的精准化安全测试的问题,以及解决其他如检测精确度、漏洞定位、漏洞收敛等的问题。
根据本申请公开的实施例,提出一种自动化IAST灰盒安全测试方案。在该方案中,包括在服务端的与目标程序耦合的代理,通过获取接收的第一合法请求,并利用第一合法请求识别可能潜藏的第一类型漏洞集合,自动触发和接受攻击测试,主动发现目标程序中相应的第一类型漏洞,以及对应地在测试端响应触发,提供相应的攻击测试;在发现所述第一类型漏洞过程中,通过预先插桩探针监控目标的关键函数,获取更有针对性的动态数据,有助于低成本和高效、精确地所述第一类型漏洞。
本公开的方案,通过融合经过优化改进的主动插桩IAST,和采用自动化和更具针对性的攻击测试机制,避免了动辄全面性覆盖扫描的粗糙检测模式,为目标程序,特别是为目标程序中的那些例如对应着某类外部请求的程序内部特定业务逻辑、那些具有相对完整的业务逻辑、相对独立的组成部分的程序代码序列片段在程序运行时的执行过程等,提供了精准化的安全测试能力,靶向验证、发现相关漏洞,使安全能力左移前置,将自动化、精准化的应用安全测试高效无缝地应用于从开发到测试的DevSecOps全流程;而且,相较于大多数现有安全测试方案,本公开的方案在保障漏洞检测精度的同时,还实现了对相关漏洞的精准定位,避免了低效率地广布插桩和不必要的开销,以及能够为已修复漏洞提供及时的验证,帮助开发人员快速收敛漏洞。
以下将参照附图来具体描述本公开的实施例。图3示出了本申请公开的多个实施例能够在其中实现的或者在其中组成部分上实现的示例环境300的示意图。如图3所示,示例环境300,包括:服务端310和与服务端310耦合的IAST代理330、测试端320,以及客户端340;其中,服务端310、测试端320可以是实体的服务器设备,也可以是由硬件设备节点/虚拟节点组成的服务器/云服务器集群;对应地,在服务端310服务器/云服务器集群上,其每个节点都耦合一个IAST代理330;而对于客户端340,在示例环境300中,可以是接入一个客户端设备,也可以是接入多个客户端设备。客户端340,能够向服务端310发出请求,要求服务端310上运行的目标程序处理;对应地,服务端310,能够运行目标程序,目标程序用于接收自客户端340发出的包括合法请求在内的各种请求,和处理上述请求后反馈处理结果,以及能够接收自测试端320发出的攻击测试报文,接受测试,和返回响应报文等;而IAST代理330,则能够与服务端310的目标程序耦合,通过对其插桩探针,并通过插桩探针采集程序内部动态数据,用于服务端310接收攻击测试等的安全测试分析,以及监控服务端310的目标程序,与测试端320通信,自动触发相关攻击测试;测试端320,能够向服务端310发起攻击测试,向其发送攻击测试报文,进行安全测试,其中包括能够在IAST代理330触发后,生成或从历史的漏洞攻击规则库中选择相应的攻击测试报文,对服务端310发起攻击测试。
根据本公开的一些实施例,提出了一种自动化漏洞发现方法。该方法基于Agent技术(这里的Agent,是分布式计算领域的概念,涉及一种持续自主发挥作用的,具有自主性、交互性、反应性、主动性的计算实体的概念),应用于服务端,其中包括在示例环境300中的服务端310上实现的示例。图4示出了上述示例的自动化漏洞发现方法的流程示意图。如图4所示,示例中的自动化漏洞发现方法可以在示例环境300中的服务端310上实现,所述自动化漏洞发现方法的实现过程400,包括:在服务端310,运行与之耦合的IAST代理330,对目标程序中的关键函数插桩探针;对于前面述及的关键函数:在目标程序中,可能潜藏着多种不同类型的漏洞,而对应其中的每一种类型的漏洞,在目标程序中均包括至少一个与之对应的关键函数;使IAST代理330获取服务端310接收的自客户端340发出的第一合法请求报文;并根据目标程序中处理第一合法请求报文的内部逻辑结构,确定第一类型漏洞集合;第一类型漏洞集合中包括至少一种第一类型漏洞;转发第一合法请求报文及对应的、根据其确定的第一类型漏洞集合信息到测试端320;转发到测试端320的第一合法请求报文及所述集合信息中的每一种第一类型漏洞信息,用于测试端320在发起攻击测试时根据其中的第一类型漏洞信息中的漏洞类型构造与之对应的有效载荷,并以此替换第一合法请求报文中对应的原始载荷,生成对应的、能够验证所述第一类型漏洞的第一攻击测试报文;第一攻击测试报文用于攻击服务端310,诱发目标程序中对应的第一类型漏洞;以及在服务端310受到自测试端320发出的第一攻击测试报文的攻击过程中,在每次第一攻击测试报文攻击时,获取服务端310接收的第二攻击测试报文,第二攻击测试报文是指当前攻击的第一攻击测试报文;解析提取第二攻击测试报文中的有效报文内容,并在目标程序处理第二攻击测试报文过程中获取对应其的有效实时响应数据;根据第二攻击测试报文的有效报文内容和对应的有效实时响应数据,验证目标程序中是否潜藏了第二类型漏洞,第二类型漏洞是指对应第二攻击测试报文的第一类型漏洞;其中,提取的第二攻击测试报文有效报文内容,包括第二攻击测试报文中的有效载荷参数内容;获取的有效实时响应数据,包括目标程序处理第二攻击测试报文过程中的运行上下文;上述的运行上下文,主要包括:有效运行时数据,及其对应的关键函数信息;其中的有效运行时数据,是指使插桩探针在第二攻击测试数据流执行到插桩点时所获取的运行时数据,第二攻击测试数据流是指在目标程序处理第二攻击测试报文过程中发生的对应第二攻击测试报文的攻击测试数据流;而有效运行时数据对应的关键函数信息,是指获取所述有效运行时数据的插桩点对应的***桩关键函数的信息;在上述的关键函数信息中,主要包括获取所述***桩关键函数的函数名称等。
在一些实施例中,根据目标程序中处理第一合法请求报文的内部逻辑结构确定第一类型漏洞集合,可以是:在对目标程序中关键函数插桩探针后,使在目标程序中关键函数的插桩探针监控目标程序中处理第一合法请求报文的过程,以准确获取该处理过程的内部逻辑结构,进而根据其识别和确定第一类型漏洞集合。以下将参考图5来描述框402的具体过程。图5示出了上述实施例中的一些的确定第一类型漏洞集合的过程的示意图。如图5所示,在框402,在对目标程序的关键函数插桩探针和获取服务端310接收的自客户端340发出的第一合法请求报文后,使服务端310的目标程序对第一合法请求报文进行处理(参考框501的过程),同时通过插桩探针监控服务端310的目标程序对第一合法请求报文的处理过程,记录处理过程中涉及的关键函数,形成表征该处理过程的内部逻辑结构,进而根据获取的内部逻辑结构(参考框502的过程),特别是该处理过程中涉及的关键函数,更为精确地识别和确定第一类型漏洞集合(参考框503的过程),进而与第一合法请求报文一并在后续的框403的过程中转发给测试端320。
在一些实施例中,可以采用运行时插桩的方式,对目标程序中的关键函数插桩探针。所述运行时插桩方式,是指在目标程序运行时对其插桩探针。具体地,可以是,在框401,使IAST代理330监控服务端,在例如目标程序启动过程等的程序运行时,在各个关键函数插桩探针。例如,以Java编程的目标程序为例,对其执行运行时插桩:即可在该Java程序启动中或启动后的类加载过程中,采用字节码插桩工具等方式,在需要的位点插桩探针。
在一些实施例中,根据有效报文内容和有效实时响应数据验证目标程序中是否潜藏了第二类型漏洞,是建立在目标程序中潜藏了第二类型漏洞的假设上的,进而利用第二攻击测试报文攻击过程中涉及的关键函数是否异常执行,验证是否潜藏了第二类型漏洞。以下将参考图6来描述框407的具体过程。图6示出了上述实施例中的一些的根据有效报文内容和有效实时响应数据验证目标程序中是否潜藏了第二类型漏洞的过程的示意图。如图6所示,在框407,根据第二攻击测试报文攻击过程中涉及的关键函数是否异常执行,验证是否潜藏了第二类型漏洞。一般来说,若涉及的关键函数异常执行,则验证假设为真,即存在第二类型漏洞。在框601中,对于第二攻击测试报文攻击过程中涉及的任一关键函数,判定其是否异常执行的过程,可以结合有效报文内容和有效实时响应数据作出判定,进而基于此验证是否潜藏了第二类型漏洞(参考框602的过程)。以下结合附图7、8描述框601中的判定关键函数是否异常执行的具体过程。图7示出了图6示出的实施例中的一些在验证漏洞过程中判定关键函数是否异常执行的过程的示意图。如图7所示,可以包括:
D1:判断第二攻击测试报文中是否第二攻击测试报文对应的有效载荷参数内容;若是,则继而,D2:根据第二攻击测试报文中的有效载荷参数内容,判断该关键函数对应的有效运行时数据中是否包括经无害化处理的第二攻击测试报文有效载荷参数内容;若否,则判定该关键函数异常执行。
而图8示出了图6示出的实施例中的另一些在验证漏洞过程中判定关键函数是否异常执行的过程的示意图。其中,在框406获取所述有效报文内容时,使其包括第二攻击测试报文中的请求参数值;事实上,所述请求参数值,也是生成第二攻击测试报文时,被利用作为被替换原始载荷的第一合法请求的请求参数值;所述请求参数值,定义了第一合法请求的内容格式。如图8所示,所述在验证漏洞过程中判定关键函数是否异常执行的过程,还可以包括:
D1:判断第二攻击测试报文中是否第二攻击测试报文对应的有效载荷参数内容;若是,则继而,D2:根据第二攻击测试报文中的有效载荷参数内容,判断该关键函数对应的有效运行时数据中是否包括经无害化处理的第二攻击测试报文有效载荷参数内容;以及D3:判断该关键函数对应的有效运行时数据中是否包括所述请求参数值;若D2为否且D3为是,则判定该关键函数异常执行。
在一些实施例中,在目标程序中可能潜藏的不同类型的漏洞中,对于其中的一些类型的漏洞,对应任意一种上述类型的漏洞,在目标程序中,包括多个与之对应的关键函数;在框401过程中,对这些关键函数都插桩探针。一般地,在对目标程序中的关键函数插桩探针时,对于该关键函数,通常包括至少一个插桩点。而在一些实施例中,在框401,其中的一些关键函数,可以包括多个插桩点。对于被验证的第二类型漏洞,在目标程序中包括多个关键函数的、其中的关键函数包括多个插桩点的,或二者兼有之的,在框406,分别获取各个插桩点的有效运行时数据,及其对应的关键函数信息;当所述关键函数包括多个插桩点时,所述关键函数信息还可以包括:插桩点在所述关键函数的位置信息。
附加地,在一些实施例中,对应地,其中的在任一关键函数、任一插桩点获取的有效运行时数据及其对应的关键函数信息,都能够用于独立地验证目标程序中是否潜藏了第二类型漏洞。
相反地,在一些实施例中,对应地,其中的一些在所述关键函数、插桩点获取的有效运行时数据及其对应的关键函数信息,需要结合使用,通过综合分析验证目标程序中是否潜藏了第二类型漏洞。
在一些实施例中,在获取的所述有效实时响应数据中,还可以包括将反馈给测试端的对应第二攻击测试报文的响应报文内容;所述的响应报文内容,用于辅助验证目标程序中是否潜藏了第二类型漏洞。具体地,可以是,在框406,在攻击测试过程中,在第二攻击测试报文被目标程序处理临近结束和生成对应的响应报文时,获取该响应报文内容,作为有效实时响应数据的一部分,验证目标程序中是否潜藏了第二类型漏洞,提高验证准确率。
在一些实施例中,其中的第二攻击测试报文及其有效报文内容、响应报文内容等,也可以是通过预先插桩相应的探针获取的。具体地,可以是,在一些实施例中,在框401,预先插桩相应地探针,以及在框406,在接收攻击测试时,获取第二攻击测试报文,提取其有效报文内容等。同样地,在一些实施例中,在框401,预先插桩相应地探针,以及在框406,在接收攻击测试时,获取响应报文内容等。其中,例如,在目标程序接收和准备处理第二攻击测试报文的位点,通过插桩相应的探针,获取第二攻击测试报文的有效载荷参数内容、请求参数值等;在第二攻击测试报文被目标程序处理临近结束和生成对应的响应报文位点,通过插桩相应的探针,获取对应的响应报文内容等。
在一些实施例中,所述的插桩探针,可以是根据插桩点位置、对获取所述有效报文内容或有效实时响应数据的需要等的不同而差异化设计的。例如,在获取所述有效实时响应数据中的运行时数据时,根据其插桩点位置、获取数据内容的需要,设计专用的探针,采用适度的覆盖策略,仅覆盖符合当前需要的业务逻辑,采集所需要的运行时数据。
在一些实施例中,所述的有效实时响应数据,还可以包括:函数调用栈信息;当发现第二类型漏洞时,根据所述函数调用栈信息确定第二类型漏洞触发的代码行信息;在上报发现第二类型漏洞的安全测试结果时,将所述函数调用栈信息、第二类型漏洞触发代码行信息等一并上报,辅助第二类型漏洞定位。具体地,可以是,在框401,预先插桩具有相关能力的探针,以及在框406,在接收攻击测试的过程中,在获取第二攻击测试报文对应的运行时数据时,配置得使所述插桩探针获取的运行时数据中包括函数调用栈信息;且发现第二类型漏洞时,根据所述函数调用栈信息确定第二类型漏洞触发的代码行信息;以及在上报发现第二类型漏洞的安全测试结果时,将所述函数调用栈信息、第二类型漏洞触发代码行信息等一并上报,辅助第二类型漏洞定位。而在一些实施例中,在上报发现第二类型漏洞的安全测试结果时,还可以将获取的对应的响应报文内容等一并上报,辅助第二类型漏洞分析。
根据本公开的一些实施例,提出了一种攻击测试方法。该方法,应用于测试端,用于自动化漏洞发现的方案中,其中包括在示例环境300中的测试端320上实现的示例。图9示出了根据本公开的一些实施例的用于自动化漏洞发现的攻击测试方法的流程示意图。如9所示,示例中的用于自动化漏洞发现的攻击测试方法可以在示例环境300中的测试端320上实现,所述攻击测试方法的实现过程900,包括:在测试端320,接收自服务端310转发的第一合法请求报文、及其对应的第一类型漏洞集合信息(参考框901的过程);第一类型漏洞集合中包括至少一种第一类型漏洞;根据所述集合信息中的每一种第一类型漏洞信息,分别构造与所述第一类型漏洞信息中的漏洞类型对应的有效载荷,替换第一合法请求报文中对应的原始载荷,生成验证所述第一类型漏洞的第一攻击测试报文;向服务端310发送第一攻击测试报文,攻击服务端310(参考框902的过程);第一攻击测试报文,用于诱发目标程序中对应的第一类型漏洞。
根据本公开的一些实施例,提出了一种自动化IAST灰盒安全测试方法。该方法主要包括在服务端的通过基于Agent技术自动化发现漏洞的过程,以及在分离部署的测试端的对应的响应攻击测试的过程;其中包括:在服务端,接收自客户端发出的第一合法请求报文,执行上述实施例中述及的自动化漏洞发现的方法,通过自动触发和接受测试端发起的攻击测试,主动发现目标程序中对应该类第一合法请求的第一类型漏洞;以及对应地,在测试端,执行上述实施例中述及的攻击测试方法,接收服务端的转发,并据此向服务端发起相应的攻击测试。在上述实现自动化IAST灰盒安全测试方法的方案中,其中包括在示例环境300中实现的示例。以下将参考图10和具体示例来描述上述的自动化IAST灰盒安全测试方法的具体过程。图10示出了根据本公开的一些实施例的自动化IAST灰盒安全测试方法中的一个示例的具体过程的流程示意图。如图10所示,所述实现自动化IAST灰盒安全测试方法的全过程1000,包括:
在服务端310,运行与之耦合的IAST代理330,对目标程序中的关键函数插桩探针(参考框1001的过程);对于前面述及的关键函数:在目标程序中,可能潜藏着多种不同类型的漏洞,而对应其中的每一种类型的漏洞,在目标程序中均包括至少一个与之对应的关键函数;使IAST代理330获取服务端310接收的自客户端340发出的第一合法请求报文;并根据目标程序中处理第一合法请求报文的内部逻辑结构,确定第一类型漏洞集合(参考框1002的过程);第一类型漏洞集合中包括至少一种第一类型漏洞;转发第一合法请求报文及对应的、根据其确定的第一类型漏洞集合信息到测试端320(参考框1003的过程);
在测试端320,接收自服务端310转发的第一合法请求报文、及其对应的第一类型漏洞集合信息(参考框1004的过程);根据所述集合信息中的每一种第一类型漏洞信息,分别构造与所述第一类型漏洞信息中的漏洞类型对应的有效载荷,替换第一合法请求报文中对应的原始载荷,生成验证所述第一类型漏洞的第一攻击测试报文;向服务端310发送第一攻击测试报文,攻击服务端310(参考框1005的过程);第一攻击测试报文,用于诱发目标程序中对应的第一类型漏洞;
在服务端310,在其受到自测试端320发出的第一攻击测试报文的攻击过程中,在每次第一攻击测试报文攻击时,获取服务端310接收的第二攻击测试报文,第二攻击测试报文是指当前攻击的第一攻击测试报文;解析提取第二攻击测试报文中的有效报文内容,并在目标程序处理第二攻击测试报文过程中获取对应其的有效实时响应数据(参考框1006的过程);根据第二攻击测试报文的有效报文内容和对应的有效实时响应数据,验证目标程序中是否潜藏了第二类型漏洞(参考框1007的过程),第二类型漏洞是指对应第二攻击测试报文的第一类型漏洞;
其中,提取的第二攻击测试报文有效报文内容,包括第二攻击测试报文中的有效载荷参数内容;获取的有效实时响应数据,包括目标程序处理第二攻击测试报文过程中的运行上下文;上述的运行上下文,主要包括:有效运行时数据,及其对应的关键函数信息;其中的有效运行时数据,是指使插桩探针在第二攻击测试数据流执行到插桩点时所获取的运行时数据,第二攻击测试数据流是指在目标程序处理第二攻击测试报文过程中发生的对应第二攻击测试报文的攻击测试数据流;而有效运行时数据对应的关键函数信息,是指获取所述有效运行时数据的插桩点对应的***桩关键函数的信息;在上述的关键函数信息中,主要包括获取所述***桩关键函数的函数名称等。
根据本公开的一些实施例,提出了一种用于自动化漏洞发现的装置。该装置,能够部署在服务端,基于Agent技术,自动化地响应客户端合法请求,发现服务端运行的目标程序中潜藏的漏洞。其中示例包括应用于示例环境300中的服务端310上。以下将参考图11来描述所述用于自动化漏洞发现的装置的基本组成。图11示出了根据本公开的一些实施例的用于自动化漏洞发现的装置的框图。如图11所示,所述用于自动化漏洞发现的装置1100,包括:程序插桩模块1110、自动化攻击测试触发模块1120和漏洞验证发现模块1130;程序插桩模块1110,被配置为对目标程序中的关键函数插桩探针;自动化攻击测试触发模块1120,被配置为获取服务端310接收的自客户端340发出的第一合法请求报文,根据目标程序中处理第一合法请求报文的内部逻辑结构确定第一类型漏洞集合,以及转发第一合法请求报文及第一类型漏洞集合信息到测试端320;其中,自动化攻击测试触发模块确定的第一类型漏洞集合中,包括至少一种第一类型漏洞;漏洞验证发现模块1130,被配置为在服务端310受到自测试端320发出的第一攻击测试报文的攻击过程中的每次第一攻击测试报文攻击时,获取服务端310接收的第二攻击测试报文,解析提取第二攻击测试报文中的有效报文内容,并在目标程序处理第二攻击测试报文过程中获取对应其的有效实时响应数据,以及根据第二攻击测试报文的有效报文内容和对应的有效实时响应数据,验证目标程序中是否潜藏了第二类型漏洞;其中,第二攻击测试报文是指当前攻击的第一攻击测试报文;第二类型漏洞是指对应第二攻击测试报文的第一类型漏洞。
对于程序插桩模块1110插桩探针的关键函数,对应目标程序中任一可能潜藏的类型的漏洞,在目标程序中均包括至少一个与之对应的、能够被程序插桩模块1110插桩探针的关键函数;自动化攻击测试触发模块1120转发到测试端320的第一合法请求报文及其对应的及第一类型漏洞集合信息中的每一种第一类型漏洞信息,分别用于测试端320在发起攻击测试时根据其中的所述第一类型漏洞信息中的漏洞类型构造与之对应的有效载荷,并以此替换第一合法请求报文中对应的原始载荷,生成对应的、能够验证所述第一类型漏洞的第一攻击测试报文;第一攻击测试报文用于攻击服务端310,诱发目标程序中对应的第一类型漏洞;漏洞验证发现模块1130从第二攻击测试报文提取的有效报文内容,包括第二攻击测试报文中的有效载荷参数内容;获取的有效实时响应数据,包括目标程序处理第二攻击测试报文过程中的运行上下文;上述的运行上下文,主要包括:有效运行时数据,及其对应的关键函数信息;其中的有效运行时数据,是指使插桩探针在第二攻击测试数据流执行到插桩点时所获取的运行时数据,第二攻击测试数据流是指在目标程序处理第二攻击测试报文过程中发生的对应第二攻击测试报文的攻击测试数据流;而有效运行时数据对应的关键函数信息,是指获取所述有效运行时数据的插桩点对应的***桩关键函数的信息;在上述的关键函数信息中,主要包括获取所述***桩关键函数的函数名称。
在一些实施例中,自动化攻击测试触发模块1120确定第一类型漏洞集合,可以是:在程序插桩模块1110对目标程序中关键函数插桩探针后,使在目标程序中关键函数的插桩探针监控目标程序中处理第一合法请求报文的过程,以准确获取该处理过程的内部逻辑结构,进而根据其识别和确定第一类型漏洞集合。具体地,在对目标程序的关键函数插桩探针和获取服务端310接收的自客户端340发出的第一合法请求报文后,通过插桩探针监控服务端310的目标程序对第一合法请求报文的处理过程,记录处理过程中涉及的关键函数,形成表征该处理过程的内部逻辑结构,进而根据获取的内部逻辑结构,特别是该处理过程中涉及的关键函数,更为精确地识别和确定第一类型漏洞集合。
在一些实施例中,程序插桩模块1110可以采用运行时插桩的方式,对目标程序中的关键函数插桩探针。所述运行时插桩的方式,即在目标程序运行时对其插桩探针。在服务端310,在目标程序例如启动中或启动后的程序运行时,在各个关键函数插桩探针。例如,以Java编程的目标程序为例,对其执行运行时插桩:即可在该Java程序启动中或启动后的类加载过程中,采用字节码插桩工具等方式,在需要的位点插桩探针。
在一些实施例中,漏洞验证发现模块1130根据有效报文内容和有效实时响应数据验证目标程序中是否潜藏了第二类型漏洞,是建立在目标程序中潜藏了第二类型漏洞的假设上的,进而利用第二攻击测试报文攻击过程中涉及的关键函数是否异常执行,验证是否潜藏了第二类型漏洞。一般来说,若涉及的关键函数异常执行,则验证假设为真,即存在第二类型漏洞。对于第二攻击测试报文攻击过程中涉及的任一关键函数,判定其是否异常执行的过程,可以结合有效报文内容和有效实时响应数据作出判定。例如,上述实施例的一些中,其判定关键函数是否异常执行的具体过程包括:
D1:判断第二攻击测试报文中是否第二攻击测试报文对应的有效载荷参数内容;若是,则继而,D2:根据第二攻击测试报文中的有效载荷参数内容,判断该关键函数对应的有效运行时数据中是否包括经无害化处理的第二攻击测试报文有效载荷参数内容;若否,则判定该关键函数异常执行。
此外,上述实施例的另一些示出了另一种实现方式,其判定关键函数是否异常执行的具体过程包括:
在执行判定前,在漏洞验证发现模块1130获取所述有效报文内容时,使其包括第二攻击测试报文中的请求参数值;在此基础上,D1:判断第二攻击测试报文中是否第二攻击测试报文对应的有效载荷参数内容;若是,则继而,D2:根据第二攻击测试报文中的有效载荷参数内容,判断该关键函数对应的有效运行时数据中是否包括经无害化处理的第二攻击测试报文有效载荷参数内容;以及D3:判断该关键函数对应的有效运行时数据中是否包括所述请求参数值;若D2为否且D3为是,则判定该关键函数异常执行。其中,第二攻击测试报文中的请求参数值,事实上,也是生成第二攻击测试报文时,被利用作为被替换原始载荷的第一合法请求的请求参数值;所述请求参数值,定义了第一合法请求的内容格式。
在一些实施例中,在目标程序中可能潜藏的不同类型的漏洞中,对于其中的一些类型的漏洞,对应任意一种上述类型的漏洞,在目标程序中,包括多个与之对应的关键函数;程序插桩模块1110分别对这些关键函数都插桩探针。一般地,在程序插桩模块1110对目标程序中的关键函数插桩探针时,对于该关键函数,通常包括至少一个插桩点。而在一些实施例中,其中的一些关键函数,程序插桩模块1110对其中关键函数的多个插桩点插桩探针,以获取更全面的相关数据。对于被验证的第二类型漏洞,当程序插桩模块1110对目标程序中的多个关键函数或一个关键函数的多个插桩点插桩探针,或二者兼有之,则使漏洞验证发现模块1130分别获取各个插桩点的有效运行时数据,及其对应的关键函数信息;当所述关键函数包括多个插桩点时,所述关键函数信息还可以包括:插桩点在所述关键函数的位置信息。
附加地,在一些实施例中,对应地,其中的在任一关键函数、任一插桩点获取的有效运行时数据及其对应的关键函数信息,都能够用于独立地验证验证目标程序中是否潜藏了第二类型漏洞。
相反地,在一些实施例中,对应地,其中的一些在所述关键函数、插桩点获取的有效运行时数据及其对应的关键函数信息,需要结合使用,通过综合分析验证目标程序中是否潜藏了第二类型漏洞。
在一些实施例中,漏洞验证发现模块1130获取的所述有效实时响应数据中,还可以包括将反馈给测试端的对应第二攻击测试报文的响应报文内容;所述的响应报文内容,用于辅助验证目标程序中是否潜藏了第二类型漏洞。具体地,可以是,在攻击测试过程中,在第二攻击测试报文被目标程序处理临近结束和生成对应的响应报文时,获取该响应报文内容,作为有效实时响应数据的一部分,验证目标程序中是否潜藏了第二类型漏洞,提高验证准确率。
在一些实施例中,程序插桩模块1110预先插桩相应的探针,使漏洞验证发现模块1130能够利用所述插桩探针获取第二攻击测试报文及其有效报文内容、响应报文内容等。例如,预先在目标程序接收和准备处理第二攻击测试报文的位点插桩相应的探针,在接收攻击测试时,通过其获取第二攻击测试报文,提取其有效载荷参数内容、请求参数值等有效报文内容等;以及预先插桩相应地探针,在第二攻击测试报文被目标程序处理临近结束和生成对应的响应报文位点插桩相应的探针,通过其获取对应的响应报文内容等。
在一些实施例中,程序插桩模块1110插桩的探针,可以是根据插桩点位置、对获取所述有效报文内容或有效实时响应数据的需要等的不同而差异化设计的。例如,在获取所述有效实时响应数据中的运行时数据时,根据其插桩点位置、获取数据内容的需要,设计专用的探针,采用适度的覆盖策略,仅覆盖符合当前需要的业务逻辑,采集所需要的运行时数据。
在一些实施例中,漏洞验证发现模块1130获取的有效实时响应数据,还可以包括:函数调用栈信息;当发现第二类型漏洞时,漏洞验证发现模块1130根据所述函数调用栈信息确定第二类型漏洞触发的代码行信息;并在上报发现第二类型漏洞的安全测试结果时,将所述函数调用栈信息、第二类型漏洞触发代码行信息等一并上报,辅助第二类型漏洞定位。而在一些实施例中,在漏洞验证发现模块1130上报发现第二类型漏洞的安全测试结果时,还可以将获取的对应的响应报文内容等一并上报,辅助第二类型漏洞分析。
根据本公开的一些实施例,提出了一种用于自动化漏洞发现的攻击测试装置。该装置,能够部署在测试端,用于响应和发起攻击测试的装置。其中示例包括应用于示例环境300中的测试端320上。以下将参考图12来描述所述攻击测试装置的基本组成。图12示出了根据本公开的一些实施例的用于自动化漏洞发现的攻击测试装置的框图。如图12所示,所述的攻击测试装置1200,包括:接收模块1210和攻击测试模块1220;接收模块1210,被配置为接收自服务端310转发的第一合法请求报文、及其对应的第一类型漏洞集合信息;第一类型漏洞集合中包括至少一种第一类型漏洞;攻击测试模块1220,被配置为根据接收的所述集合信息中的第一类型漏洞信息,构造与所述第一类型漏洞信息中的漏洞类型对应的有效载荷,替换第一合法请求报文中对应的原始载荷,生成验证所述第一类型漏洞的第一攻击测试报文;向服务端310发送第一攻击测试报文;第一攻击测试报文,用于诱发目标程序中对应的第一类型漏洞。
根据本公开的一些实施例,提出了一种用于IAST灰盒安全测试的电子设备。该电子设备,可以用于IAST灰盒安全测试中,例如图3示例环境中,的服务端节点或测试端节点。图13示出了根据本公开的一些实施例的用于IAST灰盒安全测试的电子设备的框图。如图13所示,电子设备1300,包括中央处理器(CPU)1301,其能够根据存储在只读存储器(ROM)1302的计算机程序指令或从存储单元1308加载到随机访问存储器(RAM)1303中的计算机程序指令,来执行各种适当的操作和处理,在(RAM)1303中,还可以存储电子设备1300操作所需的各种程序代码、数据。CPU1301、ROM1302、RAM1303通过总线1304彼此相连,且输入/输出(I/O)接口1305也与总线1304相连。电子设备1300的一些部件通过I/O接口1305接入,包括:输入单元1306,如键鼠等;输出单元1307,如显示器等;存储单元1308,如磁盘、光盘、固态硬盘(SSD)等,以及通信单元1309,如网卡、调制解调器等。通信单元1309能够使电子设备1300通过计算机网络与其他设备交换信息/数据。CPU1301能够执行上述实施例中描述的各种方法和处理过程,例如过程400和/或过程900。在一些实施例中,过程400和/或过程900和/或过程1000,可以被实现为计算机软件程序,其被例如存储单元1308等的计算机可读介质。在一些实施例中,计算机程序的部分或全部被载入或安装到电子设备1300。当计算机程序被加载到RAM1303被CPU1301执行时,能够执行过程400和/或过程900和/或过程1000的部分或者全部操作。
根据本公开的一些实施例,提出了一种自动化IAST灰盒安全测试平台。该平台包括:部署在服务端的、能够与目标程序耦合的自动化安全测试代理单元,及与其分离部署的测试单元。以下将参考图14来描述上述的自动化IAST灰盒安全测试平台的组成架构和工作原理。图14示出了根据本公开的一些实施例的自动化IAST灰盒安全测试平台的架构示意图。如图14所示,平台1400包括:部署在服务端1410的、能够与目标程序耦合的自动化安全测试代理单元——IAST代理1430,及与其分离部署的测试端单元1420;IAST代理1430,用于在服务端1410接收自客户端1440发出的合法请求报文后,通过自动触发和接受攻击测试,主动发现目标程序中相关的漏洞;其中,IAST代理1430被配置为能够执行上述实施例中述及的自动化漏洞发现方法(例如过程400),主动发现目标程序中的第一类型漏洞;测试端单元1420,用于提供对应的攻击测试服务;测试端单元1420包括至少一个攻击测试引擎节点;攻击测试引擎节点,被配置为能够执行上述实施例中述及的攻击测试方法(例如过程900),响应服务端触发,对服务端发起相应的攻击测试。
在本公开的一个优选实施例中,可以将相关的自动化IAST灰盒安全测试工作流平台实现为悬镜®、灵脉®、XMAZE® IAST灰盒安全测试平台。悬镜、灵脉、XMAZE是北京安普诺信息技术有限公司在全球一些辖区中注册的商标。
本文中以上描述的功能都可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以独立地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (32)
1.一种漏洞发现方法,其特征在于,该方法基于Agent技术,应用于服务端,包括:
在服务端,对目标程序中的关键函数插桩探针;对应任一可能潜藏的类型的漏洞,在目标程序中包括至少一个与之对应的关键函数;
获取服务端接收的自客户端发出的第一合法请求报文;
根据目标程序中处理第一合法请求报文的内部逻辑结构,确定第一类型漏洞集合;第一类型漏洞集合中包括至少一种第一类型漏洞;
转发第一合法请求报文及第一类型漏洞集合信息到测试端;所述的第一合法请求报文及所述集合信息中的每一种第一类型漏洞信息,用于测试端在发起攻击测试时根据其中的所述第一类型漏洞信息中的漏洞类型构造与之对应的有效载荷,并以此替换第一合法请求报文中对应的原始载荷,生成验证所述第一类型漏洞的第一攻击测试报文;第一攻击测试报文用于攻击服务端,诱发目标程序中对应的第一类型漏洞;
在服务端受到自测试端发出的第一攻击测试报文的攻击过程中,在每次第一攻击测试报文攻击时,获取服务端接收的第二攻击测试报文,第二攻击测试报文是指当前攻击的第一攻击测试报文;
解析提取第二攻击测试报文中的有效报文内容,并在目标程序处理第二攻击测试报文过程中获取对应其的有效实时响应数据;
根据所述的有效报文内容和有效实时响应数据,验证目标程序中是否潜藏了第二类型漏洞,第二类型漏洞是指对应第二攻击测试报文的第一类型漏洞;其中,所述有效报文内容,包括第二攻击测试报文中的有效载荷参数内容;所述有效实时响应数据,包括目标程序处理第二攻击测试报文过程中的运行上下文;所述运行上下文,包括:有效运行时数据,及其对应的关键函数信息;所述有效运行时数据,是指使插桩探针在第二攻击测试数据流执行到插桩点时所获取的运行时数据;第二攻击测试数据流,是指在目标程序处理第二攻击测试报文过程中对应第二攻击测试报文的攻击测试数据流;所述关键函数信息,是指获取所述有效运行时数据的插桩点对应的***桩关键函数的信息。
2.根据权利要求1所述的方法,其特征在于,
所述的确定第一类型漏洞集合的过程,包括:
在插桩探针后,使在目标程序中的插桩探针监控目标程序中处理第一合法请求报文的过程,获取该处理过程的内部逻辑结构,并据此确定第一类型漏洞集合。
3.根据权利要求1所述的方法,其特征在于,
所述的对目标程序中的关键函数插桩探针,包括:采用运行时插桩的方式对其插桩探针。
4.根据权利要求1所述的方法,其特征在于,
所述的验证目标程序中是否潜藏第二类型漏洞,包括:
根据所述有效报文内容和有效实时响应数据,判定第二攻击测试报文攻击过程中涉及的关键函数是否异常执行;
利用第二攻击测试报文攻击过程中涉及的关键函数是否异常执行,验证是否潜藏了第二类型漏洞。
5.根据权利要求4所述的方法,其特征在于,
所述判定关键函数是否异常执行的过程,包括:
D1:判断第二攻击测试报文中是否第二攻击测试报文对应的有效载荷参数内容;若是,则继而,D2:根据第二攻击测试报文中的有效载荷参数内容,判断该关键函数对应的有效运行时数据中是否包括经无害化处理的第二攻击测试报文有效载荷参数内容;若否,则判定该关键函数异常执行。
6.根据权利要求4所述的方法,其特征在于,
获取所述有效报文内容时,使其包括第二攻击测试报文中的请求参数值;
所述判定关键函数是否异常执行的过程,包括:
D1:判断第二攻击测试报文中是否第二攻击测试报文对应的有效载荷参数内容;若是,则继而,D2:根据第二攻击测试报文中的有效载荷参数内容,判断该关键函数对应的有效运行时数据中是否包括经无害化处理的第二攻击测试报文有效载荷参数内容;以及D3:判断该关键函数对应的有效运行时数据中是否包括所述请求参数值;若D2为否且D3为是,则判定该关键函数异常执行。
7.根据权利要求1所述的方法,其特征在于,
对于所述第一类型漏洞,对应其,在目标程序中,包括多个与之对应的关键函数;对所述关键函数插桩探针;
和/或,
目标程序的关键函数,包括多个插桩点;
则,对于被验证的第二类型漏洞,分别获取各个插桩点的有效运行时数据,及其对应的关键函数信息;
当所述关键函数包括多个插桩点时,所述关键函数信息,包括:插桩点在所述关键函数的位置信息。
8.根据权利要求7所述的方法,其特征在于,
在任一所述关键函数/插桩点获取的有效运行时数据及其对应的关键函数信息,能够用于独立地验证目标程序中是否潜藏了第二类型漏洞。
9.根据权利要求7所述的方法,其特征在于,
结合在所述关键函数/插桩点获取的有效运行时数据及其对应的关键函数信息,综合分析验证目标程序中是否潜藏了第二类型漏洞。
10.根据权利要求1所述的方法,其特征在于,
所述有效实时响应数据中,包括将反馈给测试端的对应第二攻击测试报文的响应报文内容;所述的响应报文内容,用于辅助验证目标程序中是否潜藏了第二类型漏洞。
11.根据权利要求1或10任一所述的方法,其特征在于,
所述第二攻击测试报文及其有效报文内容/响应报文内容,是通过预先插桩的探针获取的。
12.根据权利要求1所述的方法,其特征在于,
所述的插桩探针,是根据插桩点位置、对获取所述有效报文内容或有效实时响应数据的需要的不同而差异化设计的。
13.根据权利要求1或10任一所述的方法,其特征在于,
所述的有效实时响应数据,包括:函数调用栈信息;
当发现第二类型漏洞时,根据所述函数调用栈信息确定第二类型漏洞触发的代码行信息;在上报发现第二类型漏洞的安全测试结果时,将所述函数调用栈信息、第二类型漏洞触发代码行信息一并上报,辅助第二类型漏洞定位;
和/或,
在上报发现第二类型漏洞的安全测试结果时,将获取的对应的响应报文内容一并上报,辅助第二类型漏洞分析。
14.一种测试方法,用于自动化漏洞发现过程中的攻击测试,其特征在于,该方法,应用于测试端,包括:
在测试端,接收自服务端转发的第一合法请求报文、及其对应的第一类型漏洞集合信息;第一类型漏洞集合中包括至少一种第一类型漏洞;
所述第一类型漏洞集合信息的获取方式,包括:采用在服务端以权利要求1-13任一所述方法中确定第一类型漏洞集合的方式根据目标程序中处理所述第一合法请求报文的内部逻辑结构确定的所述第一类型漏洞集合的方式获取;
根据所述集合信息中的每一种第一类型漏洞信息,构造与所述第一类型漏洞信息中的漏洞类型对应的有效载荷,替换第一合法请求报文中对应的原始载荷,生成验证所述第一类型漏洞的第一攻击测试报文;
向服务端发送第一攻击测试报文,攻击服务端;第一攻击测试报文,用于诱发目标程序中对应的第一类型漏洞。
15.一种安全测试方法,其特征在于,该方法包括:
在服务端,接收自客户端发出的第一合法请求报文,执行权利要求1-13任一所述的方法,通过自动触发和接受测试端发起的攻击测试,主动发现目标程序中的第一类型漏洞;
在测试端,执行权利要求14所述的方法,接收服务端的转发,并据此向服务端发起相应的攻击测试。
16.一种用于自动化漏洞发现的装置,其特征在于,该装置,部署在服务端,包括:程序插桩模块、自动化攻击测试触发模块和漏洞验证发现模块;
程序插桩模块,被配置为对目标程序中的关键函数插桩探针;
自动化攻击测试触发模块,被配置为获取服务端接收的自客户端发出的第一合法请求报文,根据目标程序中处理第一合法请求报文的内部逻辑结构确定第一类型漏洞集合,以及转发第一合法请求报文及第一类型漏洞集合信息到测试端;其中,自动化攻击测试触发模块确定的第一类型漏洞集合中,包括至少一种第一类型漏洞;
漏洞验证发现模块,被配置为在服务端受到自测试端发出的第一攻击测试报文的攻击过程中的每次第一攻击测试报文攻击时,获取服务端接收的第二攻击测试报文,解析提取第二攻击测试报文中的有效报文内容,并在目标程序处理第二攻击测试报文过程中获取对应的有效实时响应数据,以及根据所述有效报文内容和有效实时响应数据,验证目标程序中是否潜藏了第二类型漏洞;其中,第二攻击测试报文是指当前攻击的第一攻击测试报文;第二类型漏洞是指对应第二攻击测试报文的第一类型漏洞;
其中,对应任一可能潜藏的类型的漏洞,在目标程序中包括至少一个与之对应的、能够被程序插桩模块插桩探针的关键函数;
自动化攻击测试触发模块转发的第一合法请求报文及其对应的及第一类型漏洞集合信息中的每一种第一类型漏洞信息,用于测试端在发起攻击测试时根据其中的所述第一类型漏洞信息中的漏洞类型构造与之对应的有效载荷,并以此替换第一合法请求报文中对应的原始载荷,生成验证所述第一类型漏洞的第一攻击测试报文;第一攻击测试报文用于攻击服务端,诱发目标程序中对应的第一类型漏洞;
漏洞验证发现模块提取的有效报文内容,包括第二攻击测试报文中的有效载荷参数内容;获取的有效实时响应数据,包括目标程序处理第二攻击测试报文过程中的运行上下文;所述运行上下文,包括:有效运行时数据,及其对应的关键函数信息;所述有效运行时数据,是指使插桩探针在第二攻击测试数据流执行到插桩点时所获取的运行时数据;第二攻击测试数据流,是指在目标程序处理第二攻击测试报文过程中对应第二攻击测试报文的攻击测试数据流;所述关键函数信息,是指获取所述有效运行时数据的插桩点对应的***桩关键函数的信息。
17.根据权利要求16所述的装置,其特征在于,
自动化攻击测试触发模块确定第一类型漏洞集合,包括:
在程序插桩模块插桩探针后,使在目标程序中的插桩探针监控目标程序中处理第一合法请求报文的过程,获取该处理过程的内部逻辑结构,并据此确定第一类型漏洞集合。
18.根据权利要求16所述的装置,其特征在于,
程序插桩模块,采用运行时插桩的方式对目标程序中的关键函数插桩探针。
19.根据权利要求16所述的装置,其特征在于,
漏洞验证发现模块根据所述有效报文内容和有效实时响应数据验证目标程序中是否潜藏第二类型漏洞,包括:
根据所述有效报文内容和有效实时响应数据,判定第二攻击测试报文攻击过程中涉及的关键函数是否异常执行;
利用第二攻击测试报文攻击过程中涉及的关键函数是否异常执行,验证是否潜藏了第二类型漏洞。
20.根据权利要求19所述的装置,其特征在于,
所述判定关键函数是否异常执行的过程,包括:
D1:判断第二攻击测试报文中是否第二攻击测试报文对应的有效载荷参数内容;若是,则继而,D2:根据第二攻击测试报文中的有效载荷参数内容,判断该关键函数对应的有效运行时数据中是否包括经无害化处理的第二攻击测试报文有效载荷参数内容;若否,则判定该关键函数异常执行。
21.根据权利要求19所述的装置,其特征在于,
使漏洞验证发现模块获取所述有效报文内容包括第二攻击测试报文中的请求参数值;
D1:判断第二攻击测试报文中是否第二攻击测试报文对应的有效载荷参数内容;若是,则继而,D2:根据第二攻击测试报文中的有效载荷参数内容,判断该关键函数对应的有效运行时数据中是否包括经无害化处理的第二攻击测试报文有效载荷参数内容;以及D3:判断该关键函数对应的有效运行时数据中是否包括所述请求参数值;若D2为否且D3为是,则判定该关键函数异常执行。
22.根据权利要求16所述的装置,其特征在于,
对于所述第一类型漏洞,对应其,在目标程序中,包括多个与之对应的关键函数;使程序插桩模块对所述关键函数插桩探针;
和/或,
程序插桩模块对目标程序的关键函数的多个插桩点插桩探针;
则,对于被验证的第二类型漏洞,使漏洞验证发现模块分别获取各个插桩点的有效运行时数据,及其对应的关键函数信息;
当所述关键函数包括多个插桩点时,所述关键函数信息,包括:插桩点在所述关键函数的位置信息。
23.根据权利要求22所述的装置,其特征在于,
在任一所述关键函数/插桩点获取的有效运行时数据及其对应的关键函数信息,能够用于独立地验证目标程序中是否潜藏了第二类型漏洞。
24.根据权利要求22所述的装置,其特征在于,
结合在所述关键函数/插桩点获取的有效运行时数据及其对应的关键函数信息,综合分析验证目标程序中是否潜藏了第二类型漏洞。
25.根据权利要求16所述的装置,其特征在于,
漏洞验证发现模块获取的所述有效实时响应数据中,包括将反馈给测试端的对应第二攻击测试报文的响应报文内容;所述的响应报文内容,用于辅助验证目标程序中是否潜藏了第二类型漏洞。
26.根据权利要求16或25任一所述的装置,其特征在于,
使程序插桩模块预先插桩相应的探针,使漏洞验证发现模块利用所述插桩探针获取所述第二攻击测试报文及其有效报文内容/响应报文内容。
27.根据权利要求16所述的装置,其特征在于,
程序插桩模块插桩的探针,是根据插桩点位置、对获取所述有效报文内容或有效实时响应数据的需要的不同而差异化设计的。
28.根据权利要求16或25任一所述的装置,其特征在于,
漏洞验证发现模块获取的所述有效实时响应数据,包括:函数调用栈信息;
当漏洞验证发现模块发现第二类型漏洞时,根据所述函数调用栈信息确定第二类型漏洞触发的代码行信息;在上报发现第二类型漏洞的安全测试结果时,将所述函数调用栈信息、第二类型漏洞触发代码行信息一并上报,辅助第二类型漏洞定位;
和/或,
在上报发现第二类型漏洞的安全测试结果时,将获取的对应的响应报文内容一并上报,辅助第二类型漏洞分析。
29.一种用于自动化漏洞发现的攻击测试装置,其特征在于,该装置,用于测试端的攻击测试,包括:接收模块和攻击测试模块;
接收模块,被配置为接收自服务端转发的第一合法请求报文、及其对应的第一类型漏洞集合信息;第一类型漏洞集合中包括至少一种第一类型漏洞;
攻击测试模块,被配置为根据接收的所述集合信息中的第一类型漏洞信息,构造与所述第一类型漏洞信息中的漏洞类型对应的有效载荷,替换第一合法请求报文中对应的原始载荷,生成验证所述第一类型漏洞的第一攻击测试报文;向服务端发送第一攻击测试报文;第一攻击测试报文,用于诱发目标程序中对应的第一类型漏洞。
30.一种用于IAST灰盒安全测试的电子设备,其特征在于,该电子设备,用作IAST灰盒安全测试中的服务端节点/测试端节点,包括:
至少一个处理器,和至少一个处理器耦合的存储器,以及存储在存储器中的计算机程序;
其中的处理器执行所述计算机程序,能够实现权利要求1-13任一所述的漏洞发现方法/权利要求14所述的测试方法。
31.一种自动化IAST灰盒安全测试平台,其特征在于,该平台包括:
部署在服务端的自动化安全测试代理单元,及分离部署的测试单元;
自动化安全测试代理单元,能够与目标程序耦合;自动化安全测试代理单元,用于在服务端接收自客户端发出的合法请求报文后,通过自动触发和接受攻击测试,主动发现目标程序中相关的漏洞;其中,自动化安全测试代理单元被配置为能够执行权利要求1-13任一所述的方法,主动发现目标程序中的第一类型漏洞;
测试单元,用于提供对应的攻击测试服务;测试单元包括至少一个攻击测试引擎节点;攻击测试引擎节点,被配置为能够执行权利要求14所述的方法,响应服务端触发,对服务端发起相应的攻击测试。
32.一种计算机可读存储介质,其特征在于,
该介质上存储有用于安全测试的计算机指令,
该计算机指令在被计算机处理器执行时能够实现权利要求1-13任一所述的漏洞发现方法,
和/或,权利要求14所述的测试方法,
和/或,权利要求15所述的安全测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110492635.8A CN112906011B (zh) | 2021-05-07 | 2021-05-07 | 漏洞发现方法、测试方法、安全测试方法及相关装置、平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110492635.8A CN112906011B (zh) | 2021-05-07 | 2021-05-07 | 漏洞发现方法、测试方法、安全测试方法及相关装置、平台 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112906011A CN112906011A (zh) | 2021-06-04 |
CN112906011B true CN112906011B (zh) | 2021-08-03 |
Family
ID=76109022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110492635.8A Active CN112906011B (zh) | 2021-05-07 | 2021-05-07 | 漏洞发现方法、测试方法、安全测试方法及相关装置、平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112906011B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535704B (zh) * | 2021-07-30 | 2024-06-14 | 数网金融有限公司 | 一种扫描方法、装置、设备及存储介质 |
CN115952503B (zh) * | 2023-01-30 | 2023-07-25 | 深圳海云安网络安全技术有限公司 | 融合黑白灰安全检测技术的应用安全测试方法及*** |
CN116055218B (zh) * | 2023-03-06 | 2023-06-23 | 深圳开源互联网安全技术有限公司 | 用于web应用安全检测中的用户登录请求识别方法及*** |
CN117130917B (zh) * | 2023-08-28 | 2024-01-23 | 北京安普诺信息技术有限公司 | 一种容器化Java应用的灰盒测试方法、装置及*** |
CN117061222B (zh) * | 2023-09-12 | 2024-05-07 | 北京基调网络股份有限公司 | 一种漏洞数据获取方法及漏洞验证方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102468985B (zh) * | 2010-11-01 | 2016-03-23 | 北京神州绿盟信息安全科技股份有限公司 | 针对网络安全设备进行渗透测试的方法和*** |
CN104506522B (zh) * | 2014-12-19 | 2017-12-26 | 北京神州绿盟信息安全科技股份有限公司 | 漏洞扫描方法及装置 |
CN106921608B (zh) * | 2015-12-24 | 2019-11-22 | 华为技术有限公司 | 一种检测终端安全状况方法、装置及*** |
CN107046526A (zh) * | 2016-12-28 | 2017-08-15 | 北京邮电大学 | 基于Fuzzing算法的分布式异构网络漏洞挖掘方法 |
CN111931188B (zh) * | 2020-08-13 | 2023-09-08 | 中国工商银行股份有限公司 | 登陆场景下漏洞测试方法及*** |
-
2021
- 2021-05-07 CN CN202110492635.8A patent/CN112906011B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112906011A (zh) | 2021-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112906011B (zh) | 漏洞发现方法、测试方法、安全测试方法及相关装置、平台 | |
CN112906010B (zh) | 一种自动化攻击测试方法及基于此的自动化安全测试方法 | |
CN106828362B (zh) | 汽车信息的安全测试方法及装置 | |
CN101242279B (zh) | 用于web***的自动化渗透性测试***和方法 | |
CN111813696B (zh) | 应用测试方法、装置、***及电子设备 | |
US9268945B2 (en) | Detection of vulnerabilities in computer systems | |
CN113162945B (zh) | 漏洞检测分析方法、装置及基于此的漏洞验证方法、*** | |
CN110929264B (zh) | 漏洞检测方法、装置、电子设备及可读存储介质 | |
CN111783096B (zh) | 检测安全漏洞的方法和装置 | |
CN106982194A (zh) | 漏洞扫描方法及装置 | |
CN113158197B (zh) | 一种基于主动iast的sql注入漏洞检测方法、*** | |
CN104751056A (zh) | 一种基于攻击库的漏洞验证***与方法 | |
CN113114680B (zh) | 用于文件上传漏洞的检测方法和检测装置 | |
CN105897807A (zh) | 一种基于行为特征的移动智能终端异常代码云检测方法 | |
CN113315767B (zh) | 一种电力物联网设备安全检测***及方法 | |
CN113158191B (zh) | 基于智能探针的漏洞验证方法及相关iast方法、*** | |
Chester et al. | M-perm: A lightweight detector for android permission gaps | |
CN111865997A (zh) | 基于被动流量的web漏洞检测方法、装置、设备及介质 | |
CN115361203A (zh) | 一种基于分布式扫描引擎的脆弱性分析方法 | |
CN112615848B (zh) | 漏洞修复状态检测方法及*** | |
CN114036526A (zh) | 漏洞测试方法、装置、计算机设备和存储介质 | |
CN111563260B (zh) | 一种面向安卓应用程序的Web注入代码执行漏洞检测方法及*** | |
CN116166536A (zh) | 一种测试方法、装置、电子设备及存储介质 | |
CN113849817B (zh) | 一种JavaScript原型链污染漏洞的检测方法及装置 | |
CN113395235B (zh) | 一种IoT***远程测试方法、***和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |