CN114422278A - 检测程序安全性的方法、系统以及服务器 - Google Patents

检测程序安全性的方法、系统以及服务器 Download PDF

Info

Publication number
CN114422278A
CN114422278A CN202210338496.8A CN202210338496A CN114422278A CN 114422278 A CN114422278 A CN 114422278A CN 202210338496 A CN202210338496 A CN 202210338496A CN 114422278 A CN114422278 A CN 114422278A
Authority
CN
China
Prior art keywords
vulnerability
request message
scanning
server
analysis data
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.)
Granted
Application number
CN202210338496.8A
Other languages
English (en)
Other versions
CN114422278B (zh
Inventor
齐向东
秦彪
陈瑞琦
付威
章磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qax Technology Group Inc
Secworld Information Technology Beijing Co Ltd
Original Assignee
Qax Technology Group Inc
Secworld Information Technology Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qax Technology Group Inc, Secworld Information Technology Beijing Co Ltd filed Critical Qax Technology Group Inc
Priority to CN202210338496.8A priority Critical patent/CN114422278B/zh
Publication of CN114422278A publication Critical patent/CN114422278A/zh
Application granted granted Critical
Publication of CN114422278B publication Critical patent/CN114422278B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请实施例提供检测程序安全性的方法、系统以及服务器,所述方法包括:接收原始请求报文以及漏洞分析数据,并根据所述漏洞分析数据获取程序安全性初始检测结果;基于所述原始请求报文得到扫描请求报文;向所述被测试服务器发送所述扫描请求报文,并接收由所述被测试服务器响应所述扫描请求报文生成的扫描漏洞分析数据;根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。本申请的实施例通过构造出扫描请求报文来对被测试服务器进行二次扫描分析,可以有效减少误报。

Description

检测程序安全性的方法、系统以及服务器
技术领域
本申请涉及程序安全性检测领域,具体而言本申请实施例涉及检测程序安全性的方法、系统以及服务器。
背景技术
交互式应用程序安全测试(IAST, Interactive Application SecurityTesting),通过在代码运行的中间件上插入探针来识别判断安全风险,直接从运行中的代码发现问题,以实现自动化识别和诊断在应用和API中的软件漏洞。相较于传统的SAST(Static Application Security Testing)和DAST(Dynamic Application SecurityTesting),IAST取其精华,精准度更高,获取信息更全面,在不影响现有的流程下,可以无感的整合到DevOps流程中,在功能测试的同时进行安全测试。与传统的白盒代码扫描相比,IAST基于应用运行态的检测可以提高扫描的准确性,同时还能定位到漏洞的代码位置,节省了开发团队在安全上投入的时间。更重要的是,IAST的Agent端直接通过复用测试团队的流量来进行扫描,使得漏洞检测产品可以“无感地”嵌入到DevOps流程中,减少了安全和业务团队之间的矛盾。
动态IAST是一款被动式的交互式安全测试工具,其检测流程也是通过在Web服务器中间件安装Agent探针采集数据,然后将数据发往云端做漏洞检测,但这种被动式的检测存在一定的误报概率,因此如何降低交互式安全测试工具的误报率成了亟待解决的技术问题。
发明内容
本申请实施例的目的在于提供检测程序安全性的方法、系统以及服务器,通过本申请一些实施例的技术方案在获取到的存在用户输入抵达含风险代码位置的污点传播(即获取程序安全性初始检测结果)之后,根据污点信息定向使用payload替换原始数据报文,构造出扫描请求报文并基于该扫描请求报文来做二次扫描分析,这样等同于加了一步验证的阶段,可以有效提高检测的准确率,减少误报。
第一方面,本申请的一些实施例提供一种检测程序安全性的方法,运行于漏洞检测服务器上,所述方法包括:接收原始请求报文以及漏洞分析数据,并根据所述漏洞分析数据获取程序安全性初始检测结果,其中,所述漏洞分析数据和所述原始请求报文是在被测试服务器运行被测试程序产生的数据,所述程序安全性初始检测结果至少用于表征所述被测试程序是否存在漏洞;基于所述原始请求报文得到扫描请求报文,其中,所述扫描请求报文用于触发对被测试服务器上存在的初始漏洞的攻击行为,所述初始漏洞是根据所述程序安全性初始检测结果确定的漏洞;向所述被测试服务器发送所述扫描请求报文,并接收由所述被测试服务器响应所述扫描请求报文生成的扫描漏洞分析数据;根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
本申请的一些实施例通过获取的程序安全性初始检测结果(例如,该结果包括根据污点传输数据得到的污点传输路径数据)有针对性的构造的扫描请求报文,并根据扫描请求报文确认采用被动方式确定程序安全性初步检测结果包含的风险是否真的存在,因而改善了误报率。
在一些实施例中,所述原始请求报文和所述漏洞分析数据是由代理模块对由所述被测试服务器运行所述被测试程序产生的数据进行采集得到的,其中,所述代理模块部署在所述被测试服务器的中间件上;所述扫描漏洞分析数据是通过所述代理模块监听所述被测试服务器对所述扫描请求报文的响应过程得到的。
本申请的一些实施例通过设置的代理模块监控、采集并记录访问被测试服务器中间件的原始请求报文(例如,HTTP/HTTPS协议报文)和漏洞分析数据等,可以在对被测试服务器进行功能性测试的同时执行安全性测试,提升了测试效率。
在一些实施例中,所述基于所述原始请求报文得到扫描请求报文,包括:获取所述初始漏洞的类型;根据所述初始漏洞的类型构造目标有效载荷,并采用所述目标有效载荷替换位于所述原始请求报文中替换位置的数据,得到所述扫描请求报文,其中,所述目标有效载荷具有攻击性或者测试性。
本申请的一些实施例通过将具有攻击或测试性的有效载荷替换原始请求报文中的相关数据字段得到扫描请求报文,进而使得根据该扫描请求报文所触发的对被测试服务器的扫描过程更加具有针对性因此有效降低了误报率。
在本申请的一些实施例中,所述漏洞分析数据至少包括:污点传播数据,其中,在所述采用目标有效载荷替换位于所述原始请求报文中替换位置的数据之前,所述方法还包括:基于所述污点传播数据获取的污点特征;根据所述污点特征获取与目标漏洞类型对应的有效载荷,并将所述与目标漏洞类型对应的有效载荷作为所述目标有效载荷。
本申请的一些实施例通过分析漏洞分析数据获取到的污点特征,定向选择特定漏洞类型对应的有效载荷(即目标有效载荷)来构造扫描请求,进而使得扫描过程更加具有针对性因此有效降低了误报率。
在一些实施例中,所述漏洞分析数据至少包括:污点传播数据,其中,在所述采用目标有效载荷替换位于所述原始请求报文中替换位置的数据之前,所述方法还包括:根据所述污点传播数据获取所述替换位置。
本申请的一些实施例通过发现的污点传播来确定要替换数据位置,进而使得构造的扫描请求报文更加具有针对性,能更好确认程序安全性初始检测结果中检测到的漏洞是否存在。
在一些实施例中,在所述根据所述污点传播数据获取所述替换位置之前,所述方法还包括:通过钩子函数获取所述污点传播数据。
本申请的一些实施例通过应用层的hook函数来监听并采集污点传播数据,可以保证污点传输数据采集的完整性和便捷性。
在一些实施例中,所述漏洞分析数据包括:污点传播数据和请求流量数据,其中,所述程序安全性初始检测结果是通过分析所述污点传播数据和所述请求流量数据得到的。
本申请的一些实施例通过分析污点传播数据和请求流量数据来得到程序安全性初始检测结果,提升了程序安全性初始检测结果的准确性。
在一些实施例中,所述程序安全性初始检测结果表征所述被测试程序存在潜在漏洞;其中,所述根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果,包括:若根据所述扫描漏洞分析数据确认所述目标有效载荷具有攻击性,则将所述潜在漏洞作为真实存在的漏洞。
本申请的一些实施例中通过确认目标有效载荷数据是否具有攻击性来确认由程序安全性初始检测结果检测到的风险是否真实存在,提升了误报率。
第二方面,本申请的一些实施例提供一种检测程序安全性的方法,运行于被测试服务器上,所述方法包括:采集所述被测试服务器运行被测试程序时产生的漏洞分析数据和原始请求报文,并将所述漏洞分析数据和所述原始请求报文向漏洞检测服务器发送,其中,所述漏洞检测服务器通过分析所述漏洞分析数据得到程序安全性初始检测结果,且所述漏洞检测服务器通过基于所述原始请求报文得到扫描请求报文;采集由所述被测试服务器基于所述扫描请求报文产生的扫描漏洞分析数据,并向所述漏洞检测服务器发送所述扫描漏洞分析数据,其中,所述漏洞检测服务器根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
在一些实施例中,所述漏洞检测服务器通过采用目标有效载荷替换位于所述原始请求中替换位置的数据得到所述扫描请求报文,其中,所述目标有效载荷具有攻击性或者测试性,所述目标有效载荷是根据所述程序安全性初始检测结果包括的初始漏洞的类型构造的。
在一些实施例中,所述漏洞分析数据包括污点传播数据,其中,所述漏洞检测服务器根据所述污点传播数据获取所述替换位置。
在一些实施例中,所述采集所述被测试服务器运行被测试程序运行时产生的漏洞分析数据和原始请求报文,包括:通过代理模块获取所述漏洞分析数据和所述原始请求报文,其中,所述代理模块是以插件的方式安装在所述被测试服务器的中间件内部。
在一些实施例中,所述漏洞分析数据包括污点传播数据和请求流量数据,其中,所述代理模块通过动态插桩策略获取所述污点传播数据和所述请求流量数据。
第三方面,本申请的一些实施例提供一种漏洞检测服务器,所述漏洞检测服务器包括:程序安全性初始检测结果获取模块,被配置为接收原始请求报文以及漏洞分析数据,并根据所述漏洞分析数据获取程序安全性初始检测结果,其中,所述漏洞分析数据和所述原始请求报文是在被测试服务器运行被测试程序产生的数据,所述程序安全性初始检测结果至少用于表征所述被测试程序是否存在漏洞;扫描请求报文构建模块,被配置为基于所述原始请求报文得到扫描请求报文,其中,所述扫描请求报文用于触发对被测试服务器上存在的初始漏洞的攻击行为,所述初始漏洞是根据所述程序安全性初始检测结果确定的漏洞;扫描漏洞分析数据接收模块,被配置为向所述被测试服务器发送所述扫描请求报文,并接收由所述被测试服务器根据所述扫描请求生成的扫描漏洞分析数据;目标漏洞检测结果获取模块,被配置为接收扫描漏洞分析数据,并根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
第四方面,本申请的一些实施例提供一种被测试服务器,所述被测试服务器包括:漏洞分析数据采集发送模块,被配置为采集所述被测试服务器运行被测试程序时产生的漏洞分析数据和原始请求报文,并向漏洞检测服务器发送所述漏洞分析数据和所述原始请求报文,其中,所述漏洞检测服务器通过分析所述漏洞分析数据得到程序安全性初始检测结果,且所述漏洞检测服务器通过基于所述原始请求报文得到扫描请求报文;扫描漏洞分析数据采集发送模块,被配置为采集由所述被测试服务器基于所述扫描请求报文产生的扫描漏洞分析数据;向所述漏洞检测服务器发送所述扫描漏洞分析数据,其中,所述漏洞检测服务器根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
第五方面,本申请的一些实施例提供一种检测程序安全性的系统,所述系统包括:被测试服务器以及漏洞检测服务器,其中,所述被测试服务器至少被配置为:采集所述被测试服务器运行被测试程序时产生的漏洞分析数据和原始请求报文,并向漏洞检测服务器发送所述漏洞分析数据和所述原始请求报文,其中,所述漏洞检测服务器通过分析所述漏洞分析数据得到程序安全性初始检测结果,且所述漏洞检测服务器通过基于所述原始请求报文得到扫描请求报文;采集由所述被测试服务器基于所述扫描请求报文产生的扫描漏洞分析数据;向所述漏洞检测服务器发送所述扫描漏洞分析数据,其中,所述漏洞检测服务器根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果;所述漏洞检测服务器至少被配置为响应于接收的来自于所述被测试服务器的采集数据而执行如下操作:接收原始请求报文以及漏洞分析数据,并根据所述漏洞分析数据获取程序安全性初始检测结果,其中,所述漏洞分析数据和所述原始请求报文是在被测试服务器运行被测试程序产生的数据,所述程序安全性初始检测结果至少用于表征所述被测试程序是否存在漏洞;基于所述原始请求报文得到扫描请求报文,其中,所述扫描请求报文用于触发对被测试服务器上存在的初始漏洞的攻击行为,所述初始漏洞是根据所述程序安全性初始检测结果确定的漏洞;向所述被测试服务器发送所述扫描请求报文,并接收由所述被测试服务器根据所述扫描请求生成的扫描漏洞分析数据;根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
第六方面,本申请的一些实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时可实现如第一方面任一实施例所述的方法。
第七方面,本申请的一些实施例提供一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述程序时可实现如第一方面任一实施例所述的方法。
第八方面,本申请的一些实施例提供一种计算机程序产品,所述的计算机程序产品包括计算机程序,其中,所述的计算机程序被处理器执行时可实现如第一方面任一实施例所述的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的检测程序安全性的系统的组成示意图;
图2为本申请实施例提供的被测试服务器的组成示意图;
图3为本申请实施例提供的代理模块的组成示意图;
图4为本申请实施例提供的漏洞检测服务器的组成示意图;
图5为本申请实施例提供的由漏洞检测服务器执行的检测程序安全性的方法的流程图;
图6为本申请实施例提供的由被测试服务器上中间件的代理模块执行的检测程序安全性的方法的流程图;
图7为本申请实施例提供的检测程序安全性的系统中相关设备的交互流程图之一;
图8为本申请实施例提供的检测程序安全性的系统中相关设备的交互流程图之而;
图9为本申请实施例提供的漏洞检测服务器的组成框图;
图10为本申请实施例提供的被测试服务器的组成框图;
图11为本申请实施例提供的电子设备的组成示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
动态插桩:是一种通过注入插桩代码,来分析二进制应用程序在运行时的行为的方法。
污点分析:是分析程序中由污点源引入的数据是否能够不经过无害处理,而直接传播到污点汇聚点。如果不能,说明信息流是安全的;否则,说明系统产生了隐私数据泄露或危险数据操作等问题。
有效载荷payload:负载,是数据传输中所欲传输的实际信息,通常也被称作实际数据或者数据体。在计算机安全领域,负载指的是进行有害操作的部分,例如:数据销毁、发送垃圾邮件等。
至少为了克服背景技术部分提及的误报率高的技术缺陷,本申请的一些实施例,获取到的存在用户输入抵达含风险代码位置的污点传播路径(即获取程序安全性初始检测结果)之后,根据污点信息定向使用目标有效载荷payload替换原始请求报文(例如,该原始请求报文指HTTP/HTTPS请求,原始请求报文是web客户端请求被测试目标服务器后,IAST-Agent收集得到的,在本申请的实施例中IAST-Agent还会收集与当前请求相关联的污点传播数据,这些收集的数据发送给IAST-Server用于分析并构造扫描请求做后续的漏洞验证),构造出扫描请求报文并重放扫描请求报文来对被测试服务器进行二次扫描分析,这样等同于加了一步验证的阶段,可以有效提高检测的准确率,减少误报。
请参看图1,图1为本申请的一些实施例提供一种检测程序安全性的系统,该系统包括:被测试服务器100以及漏洞检测服务器200,其中,被测试服务器100将自身运行程序时生成的漏洞分析数据(至少包括污点传播数据,这些漏洞分析数据可以借助于被测试服务器中间件上的代理模块获取)发往漏洞检测服务器。之后,由漏洞检测服务器200至少执行如下操作:对接收的漏洞分析数据进行漏洞分析获取污点传播路径等数据,并基于分析结果数据得到程序安全性初始检测结果并生成扫描请求报文113,向被测试服务器100发送扫描请求报文。随后,该被测试服务器100会响应于扫描请求报文而产生扫描漏洞分析数据(该数据也是由安装在被测试服务器中间件上的代理模块采集得到的),并将扫描漏洞分析数据向漏洞检测服务器200发送。最后扫描漏洞服务器会基于接收的扫描漏洞分析数据115确认程序安全性初始检测结果所检测到的漏洞为真实存在的漏洞。
在本申请的一些实施例中,如图2所示,被测试服务器100包括中间件120,且在该中间件120上设置代理模块130进行数据采集以获取漏洞分析数据和原始请求报文111以及扫描漏洞分析数据115。例如,代理模块IAST Agent捆绑安装在被测试Web服务器中间件(即以插件的形式安装在被测试Web服务器中间件内部),该代理模块可以使用动态插桩技术实现收集运行时网络流量数据(得到请求流量数据)和污点传播数据。例如,代理模块130至少被配置为实现如下功能:监控记录访问Web服务器中间件的HTTP/HTTPS协议的请求流量并跟踪其中的污点传播信息。
例如,如图3所示,在本申请的一些实施例中,代理模块130至少包括三个子功能模块:插桩模块131、通信模块132和日志模块133。
插桩模块131至少被配置为可加载插桩规则(例如,动态hook运行时代码实现插桩)。以Java插桩流程为例,首先读取插桩规则,然后在JVM类加载器加载类的过程中依据已加载的插桩规则,hook关键API位置实现插桩,其中插入的代码逻辑主要包括:记录请求流量数据和跟踪污点传播信息。
通信模块132至少被配置为将通过插桩记录的所有数据发送给漏洞检测服务器IAST Server,以及保持一些与IAST Server交互通信的功能,例如读取配置、检测心跳。
日志模块133至少被配置为提供日志记录的功能。
在本申请的一些实施例中,漏洞检测服务器IAST Server至少被配置为:接收来自于代理模块所采集的数据并分析这些数据,得到污点特征,之后根据污点特征定向选择特定漏洞类型对应的有效载荷payload(即目标有效载荷)来构造扫描请求报文(即用目标有效载荷替换原始报文中的部分数据),向被测试服务器发送扫描请求报文而后自动扫描被测试目标服务器,最后根据扫描返回的扫描漏洞分析数据定位缺陷位置。
如图4所示,在本申请的一些实施例中,漏洞检测服务器200 IAST Server至少包括:中控模块201、数据库服务模块202和扫描服务模块303。
中控模块201是连接被测试服务器上的代理模块IAST Agent和漏洞检测服务器IAST Server的桥梁,该中控模块201示例性包括:检测流量调度子模块、检测任务管理子模块、扫描重放子模块(其功能是利用构造好的带目标有效载荷的扫描请求报文,主动向被测试目标服务器发起请求)、检测节点管理子模块(图中未示出)。检测流量调度模块负责接收调度IAST Agent传输过来的数据,并以队列的方式分析每条数据,根据IAST Agent获取到的原始请求报文以及hook信息,使用扫描服务模块调用对应漏洞类型的扫描规则,构建扫描流量,并完成重放扫描流量,之后根据扫描返回的数据依照检测规则判断漏洞是否存在。扫描重放模块提供输入扫描请求与被测试目标做请求交互。检测节点管理模块负责监听已安装IAST Agent并注册的Web服务器中间件的在线状态。
数据库服务模块202提供了整个系统操作数据库所必需的功能接口。
扫描服务模块303设置了多种扫描检测规则集合,该模块还用于扫描请求报文的构建与漏洞存在与否的判定。例如,根据不同漏洞类型的扫描规则以及各个原始请求报文和其对应的hook信息,使用特定有效载荷payload构造扫描请求报文,将扫描请求报文交由扫描重放模块,等待重放扫描请求完成,返回hook信息和扫描的响应数据(即扫描漏洞分析数据),再次根据这些数据判定漏洞是否存在。
也就是说,在本申请的一些实施例中,采用了主动式和被动式合成的程序安全性检测方案。例如,被测试服务器为web服务器,则在本申请的一些实施例中会在Web服务器的中间件内安装探针(即设置代理模块),采用动态插桩的方式获取原始请求报文(例如,原始请求报文包括HTTP/HTTPS协议报文),然后对这些原始请求报文做篡改(例如,使用针对性的攻击/测试payload替换原始请求报文中的部分数据,部分数据所在的位置可以是由hook发现的污点传播数据来确定)得到扫描请求报文,而后进行扫描请求报文重放,即将修改后的(也就是使用payload替换了原始数据报文部分数据之后的)原始请求报文进行重放,并在底层函数hook点实时监听,当监听到有效载荷payload在仍具有攻击性的情况下(存在有被测目标有防御过滤机制,去除payload或者说用户输入的攻击性的可能),进入函数hook点则判断漏洞存在,如此相当于增加了对检出漏洞的验证过程,进一步消除误报的产生。
下面示例性阐述由漏洞检测服务器执行的检测程序安全性的方法。
如图5所示,本申请的一些实施例提供运行于漏洞检测服务器上的检测程序安全性的方法,该方法包括:S101,接收原始请求报文以及漏洞分析数据,并根据所述漏洞分析数据获取程序安全性初始检测结果。S102,基于所述原始请求报文得到扫描请求报文。S103,向所述被测试服务器发送所述扫描请求报文,并接收由所述被测试服务器响应所述扫描请求报文生成的扫描漏洞分析数据。S104,根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
可以理解的是,本申请的一些实施例通过获取的程序安全性初始检测结果(例如,该结果包括根据污点传输数据得到的污点传输路径数据)有针对性的构造的扫描请求报文,并根据扫描请求报文确认采用被动方式确定程序安全性初步检测结果包含的风险是否真的存在,因而改善了误报率。
下面示例性说明图5各步骤的实现过程。
S101中设计的漏洞分析数据和原始请求报文是在被测试服务器运行被测试程序产生的数据,所述程序安全性初始检测结果至少用于表征所述被测试程序是否存在漏洞。结合前文的描述可知,漏洞分析数据和原始请求报文是通过代理模块进行数据采集得到的,也就是说,通过在被测试服务器的中间件上设置代理模块来采集被测试服务器运行被测试程序所产生的数据,进而得到漏洞分析数据(至少包括污点传播数据,该污点传播数据是与原始请求报文数据相关的数据)和原始请求报文数据。
例如,在本申请的一些实施例中,S101记载的原始请求报文和漏洞分析数据是由代理模块对被测试服务器运行被测试程序所产生的数据进行采集得到的,如图2所示该代理模块部署在被测试服务器的中间件上。
本申请的一些实施例通过设置的代理模块监控、采集并记录访问被测试服务器中间件的原始请求报文(例如,HTTP/HTTPS协议报文)和漏洞分析数据等,可以在对被测试服务器进行功能性测试的同时执行安全性测试,提升了测试效率。
S102示例性包括:篡改所述原始请求报文得到扫描请求报文。具体实现过程可以参考下文描述。
S102涉及的扫描请求报文(通过利用目标有效载荷payload篡改原始请求的HTTP/HTTPS请求数据,该扫描请求报文包含HTTP/HTTPS请求行、请求头和请求体)用于触发对被测试服务器上存在的初始漏洞的攻击行为,所述初始漏洞是根据所述程序安全性初始检测结果确定的漏洞。也就是说,本申请的一些实施例通过构造出扫描请求报文并重放扫描请求报文来做二次扫描分析,这样等同于加了一步验证的阶段,可以有效提高检测的准确率,减少误报。
可以理解的是,在本申请的一些实施例中,S103记载的扫描漏洞分析数据是通过代理模块监听所述被测试服务器对所述扫描请求报文的响应过程得到的。例如,扫描漏洞分析数据包括请求流量数据和污点传播数据,这些数据是由扫描请求报文触发的,IAST-Agent用于记录请求流量和跟踪污点传播的HOOK逻辑,以达到记录请求流量数据和污点传播数据的效果。
在本申请的一些实施例中,S103实现过程示例性包括:采用目标有效载荷替换位于所述原始请求报文中替换位置的数据,得到所述扫描请求报文,其中,所述目标有效载荷具有攻击性或者测试性。可以理解的是,本申请的一些实施例通过将具有攻击或测试性的有效载荷替换原始请求报文中的相关数据字段得到扫描请求报文,进而使得根据该扫描请求报文所触发的对被测试服务器的扫描过程更加具有针对性因此有效降低了误报率。
为了获取目标有效载荷以提升扫描的精确度,在本申请的一些实施例中,S101记载的漏洞分析数据至少包括:污点传播数据,其中,在执行采用目标有效载荷替换位于所述原始请求报文中替换位置的数据之前,所述方法还包括:基于所述污点传播数据获取的污点特征;根据所述污点特征获取与目标漏洞类型对应的有效载荷,并将所述与目标漏洞类型对应的有效载荷作为所述目标有效载荷。也就是说,本申请的一些实施例通过分析漏洞分析数据获取到的污点特征,定向选择特定漏洞类型对应的有效载荷(即目标有效载荷)来构造扫描请求,进而使得扫描过程更加具有针对性因此有效降低了误报率。
为了获取篡改原始请求报文的具体位置得到更加合理的扫描请求报文,在本申请的一些实施例中,所述漏洞分析数据至少包括:污点传播数据,其中,在执行采用目标有效载荷替换位于所述原始请求报文中替换位置的数据之前,所述方法还包括:根据所述污点传播数据获取所述替换位置(例如,在跟踪污点传播数据时,首先会标记污点源来源于HTTP请求的哪部分数据(该部分数据所在的位置即替换位置),然后在污点传递到风险汇聚点时,标记具体漏洞类型(即获取初始漏洞的类型),最后根据初始漏洞的类型构造目标有效载荷payload并依据标记的污点来源将目标有效载荷payload替换指定位置数据达到篡改原始请求的目的)。也就是说,本申请的一些实施例通过发现的污点传播来确定要替换数据位置,进而使得构造的扫描请求报文更加具有针对性,能更好确认程序安全性初始检测结果中检测到的漏洞是否存在。
在本申请的一些实施例中,在所述根据所述污点传播数据获取所述替换位置之前,所述方法还包括:通过钩子函数获取所述污点传播数据。本申请的一些实施例通过应用层的hook函数来监听并采集污点传播数据,可以保证污点传输数据采集的完整性和便捷性。
可以理解的是,在本申请的一些实施例中,所述漏洞分析数据包括:污点传播数据和请求流量数据,其中,所述程序安全性初始检测结果是通过分析所述污点传播数据和所述请求流量数据得到的。本申请的一些实施例通过分析污点传播数据和请求流量数据来得到程序安全性初始检测结果,提升了程序安全性初始检测结果的准确性。
为了确定真实存在的漏洞减小误报率,在本申请的一些实施例中,所述程序安全性初始检测结果表征所述被测试程序存在潜在漏洞;其中,所述根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果,包括:若根据所述扫描漏洞分析数据确认所述目标有效载荷具有攻击性,则将所述潜在漏洞作为真实存在的漏洞。也就是说,本申请的一些实施例中通过确认目标有效载荷数据是否具有攻击性来确认由程序安全性初始检测结果检测到的风险是否真实存在,提升了误报率。
下面示例性阐述由被测试服务器中间件上的代理模块执行的检测程序安全性的方法。
如图6所示,本申请的一些实施例提供一种由被测试服务器上代理模块执行的检测程序安全性的方法,该方法包括:
S201,采集所述被测试服务器运行被测试程序时产生的漏洞分析数据和原始请求报文,并向漏洞检测服务器发送所述漏洞分析数据和所述原始请求报文。S202,采集由所述被测试服务器基于所述扫描请求报文产生的扫描漏洞分析数据,并向所述漏洞检测服务器发送所述扫描漏洞分析数据。
正如前文所描述的,S201所述漏洞检测服务器通过分析所述漏洞分析数据得到程序安全性初始检测结果,且所述漏洞检测服务器通过基于所述原始请求报文得到扫描请求报文。例如,所述漏洞检测服务器获取所述初始漏洞的类型并根据所述初始漏洞的类型构造目标有效载荷,最后采用目标有效载荷替换位于所述原始请求中替换位置的数据得到所述扫描请求报文,其中,所述目标有效载荷具有攻击性或者测试性。也就是说,所述目标有效载荷是根据所述程序安全性初始检测结果包括的初始漏洞的类型构造的,例如所述初始漏洞是原始请求发生的污点传播过程导致触发的漏洞类型。例如,所述漏洞分析数据包括污点传播数据,其中,所述漏洞检测服务器根据所述污点传播数据获取所述替换位置。例如,所述采集所述被测试服务器运行被测试程序运行时产生的漏洞分析数据和原始请求报文,包括:通过代理模块获取所述漏洞分析数据和所述原始请求报文,其中,所述代理模块是以插件的方式安装在所述被测试服务器的中间件内部。
在一些实施例中,所述漏洞分析数据包括污点传播数据和请求流量数据,其中,所述代理模块通过动态插桩策略获取所述污点传播数据和所述请求流量数据。
S202所述漏洞检测服务器根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
结合上述内容可知,本申请的一些实施例提供一种检测程序安全性的系统,所述系统包括:被测试服务器以及漏洞检测服务器,其中,所述被测试服务器至少被配置为:采集所述被测试服务器运行被测试程序运行时产生的漏洞分析数据和原始请求报文,并将所述漏洞分析数据和所述原始请求报文向漏洞检测服务器发送,其中,所述漏洞检测服务器通过分析所述漏洞分析数据得到程序安全性初始检测结果,且所述漏洞检测服务器通过基于所述原始请求报文得到扫描请求报文;采集由所述被测试服务器基于所述扫描请求报文产生的扫描漏洞分析数据;向所述漏洞检测服务器发送所述扫描漏洞分析数据,其中,所述漏洞检测服务器根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果;所述漏洞检测服务器至少被配置为响应于接收的来自于所述被测试服务器的采集数据而执行如下操作:接收原始请求报文以及漏洞分析数据,并根据所述漏洞分析数据获取程序安全性初始检测结果,其中,所述漏洞分析数据和所述原始请求报文是在被测试服务器运行被测试程序产生的数据,所述程序安全性初始检测结果至少用于表征所述被测试程序是否存在漏洞;基于所述原始请求报文得到扫描请求报文,其中,所述扫描请求报文用于触发对被测试服务器上存在的初始漏洞的攻击行为,所述初始漏洞是根据所述程序安全性初始检测结果确定的漏洞;向所述被测试服务器发送所述扫描请求报文,并接收由所述被测试服务器根据所述扫描请求生成的扫描漏洞分析数据;根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
下面结合图7和图8示例性阐述检测程序安全性的系统执行的程序安全性检测的方法。
如图7所示,本申请实施例提供的检测程序安全性的系统中相关设备包括被测试服务器、部署于被测试服务器上的代理模块以及漏洞检测服务器。
代理模块采集被测试服务器运行应用程序(作为被测试程序的一个示例)时产生的网络流量数据(即请求流量数据)以及污点传播数据,并采集被测试服务器接收的原始请求报文。
代理模块向漏洞检测服务器发送原始请求报文、网络流量数据以及污点传播数据,其中,传输原始请求报文是为了使得漏洞检测服务器来构造扫描请求报文,传输网络流量数据以及污点传播数据是为了使得漏洞检测服务器能够对这些漏洞分析数据进行分析得到程序安全性初始检测结果。
如图8所示,被测试服务器为被测试Web服务器,且在该被测试Web服务器的中间件安装IAST Agent(即代理模块),该模块至少用于保证代理模块和漏洞服务器是网络连通的。
在被测试Web服务器部署好应用程序并正常启动,开启检测任务后,安全测试人员访问被测试web服务器上的应用程序,在该测试过程中IAST Agent(即代理模块)会记录中间件接收到的测试请求(即原始请求报文)和响应流量数据(即请求流量数据,属于漏洞分析数据的一部分),并标记请求触发的污点输入,跟踪其传播路径,在标记为污点汇聚处检测是否存在污点传播路径(属于漏洞分析数据的一部分),将所有收集的数据(即漏洞分析数据和原始请求报文,对应于图8的传输数据①)发送给IAST Server(即漏洞检测服务器)做后续分析和处理,得到程序安全性初始检测结果。例如图8的①包含了HTTP协议的请求头和请求参数,而记录的污点传播信息是标记请求参数为污点源,并且每一步的污点传播是以hook API处跟踪污点所抛出的堆栈来表示。图8的中控服务模块将作为于IAST Agent交互的中间桥梁的作用,主要提供了接收IAST Agent传递数据的调度功能,采用消息队列的方式缓存接收到的IAST Agent的发送数据,并连接数据库维护检测任务的状态信息,关联漏洞分析数据到检测任务信息上。而且,在消费漏洞分析数据过程中调用扫描服务模块使用微服务代理的技术实现调用过程,并提供根据篡改请求的数据自动请求Web服务器的功能,实现一个定制的HTTP客户端。
图7的漏洞检测服务器被配置为根据网络流量数据以及污点传播数据得到程序安全性初始检测结果,且图7的漏洞检测服务器还被配置为分析网络流量数据以及污点传播数据得到有效载荷,并基于所述有效载荷修改原始请求报文的替换位置的数据,生成扫描请求报文。图7的漏洞检测服务器还被配置为向被测试服务器发送扫描请求报文,之后代理模块会采集被测试服务器响应于扫描请求报文而生成的扫描漏洞分析数据并向漏洞检测服务器发送扫描漏洞分析数据,最后由漏洞检测服务器根据扫描漏洞分析数据更新程序安全性初始检测结果得到程序安全性目标检测结果。
例如,如图8所示,漏洞检测服务器根据图8中①处接收到的数据,分析请求、响应以及触发的污点传播信息,定向的生成带目标有效载荷payload的扫描请求报文(对应图8的标记②所传输的数据)重新请求被测试服务器(对应如图8中标记③所传输的数据)。与原始请求报文相比,扫描请求报文的数据只是替换了原始请求报文中替换位置所对应部分的数据,例如,在本申请的一些实施例中扫描请求报文只是修改了原始请求报文中包括的url(即将url所在位置作为替换位置的一个示例),并替换了原始请求报文中的HTTP GET请求的cmd参数值(即将cmd参数所在位置作为替换位置的一个示例)。
在图8中标记③传输的扫描请求报文响应完成后,代理模块随即会依照输出图8中标记④的扫描请求报文所触发的请求响应和污点传输信息给漏洞检测服务器。漏洞检测服务器在图8中⑤处分析接收到扫描漏洞分析数据,并判断和定位缺陷位置,上报检测结果。
需要说明的是,代理模块IAST Agent收集网络流量数据和污点传播信息过程中,可以采用动态插桩的技术来实现。例如,通过插桩Web服务器中间件流量必经的API位置(例如, java web服务器中间件在处理HTTP请求的实现上都必须遵守servlet规范,通过远程调试中间件源码定位其处理HTTP消息的实现API位置),记录下运行时相关变量(例如,用于存储HTTP请求中提交数据的变量)的值,并插桩标记污点输入、汇聚以及污点变量类型的传播API位置以达到跟踪污点传播数据。例如,以Java语言为例,java.lang.instrument包提供了实现JVM开放一个代理来监视JVM上运行的程序,可以动态的替换类的定义,达到虚拟机级别的AOP实现,随时可以为应用增加新的功能。
不难理解的是,相比于其他应用程序安全测试方案,本申请的一些实施例文提出的程序安全性检测方法是分析交互产生时所影响到相关代码的安全风险,而不是扫描所有代码、配置文件(对比SAST检测)或遍历整个站点产生大量脏数据(对比DAST,扫描请求构造更为精准,大大减少了产生的脏数据,并且有更高的准确率)。交互式的检测方案更适合在QA环节使用,让安全团队在相对不影响开发、测试现有流程的情况下,较早地发现应用程序中存在的安全风险。而且本申请的一些实施例提出的程序安全性检测方法在使用代理模块获取到的存在用户输入抵达含风险代码位置的污点传播之后,根据污点信息定向使用payload替换原始数据报文(即原始请求报文),构造出扫描请求报文并重放扫描请求报文来做二次扫描分析,这样等同于加了一步验证的阶段,可以有效提高检测的准确率,减少误报。
请参考图9,图9示出了本申请实施例提供的一种漏洞检测服务器,应理解,该服务器与上述图5方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该漏洞检测服务器的具体功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。漏洞检测服务器包括至少一个能以软件或固件的形式存储于存储器中或固化在漏洞检测服务器的操作系统中的软件功能模块,该漏洞检测服务器,包括:程序安全性初始检测结果获取模块801、扫描请求报文构建模块802、扫描漏洞分析数据接收模块803以及程序安全性目标检测结果获取模块804。
程序安全性初始检测结果获取模块801,被配置为接收原始请求报文以及漏洞分析数据,并根据所述漏洞分析数据获取程序安全性初始检测结果,其中,所述漏洞分析数据和所述原始请求报文是在被测试服务器运行被测试程序产生的数据,所述程序安全性初始检测结果至少用于表征所述被测试程序是否存在漏洞。
扫描请求报文构建模块802,被配置为基于所述原始请求报文得到扫描请求报文,其中,所述扫描请求报文用于触发对被测试服务器上存在的初始漏洞的攻击行为,所述初始漏洞是根据所述程序安全性初始检测结果确定的漏洞。
扫描漏洞分析数据接收模块803,被配置为向所述被测试服务器发送所述扫描请求报文,并获取被测试服务器根据所述扫描请求报文产生的扫描漏洞分析数据。
程序安全性目标检测结果获取模块804,被配置为根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的漏洞检测服务器的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
如图10所示,本申请的一些实施例提供一种被测试服务器,所述被测试服务器包括:漏洞分析数据采集发送模块901以及扫描漏洞分析数据采集发送模块902。
漏洞分析数据采集发送模块901,被配置为采集所述被测试服务器运行被测试程序时产生的漏洞分析数据和原始请求报文,并向漏洞检测服务器发送所述漏洞分析数据和所述原始请求报文,其中,所述漏洞检测服务器通过分析所述漏洞分析数据得到程序安全性初始检测结果,且所述漏洞检测服务器通过基于所述原始请求报文得到扫描请求报文。
扫描漏洞分析数据采集发送模块902,被配置为采集由所述被测试服务器基于所述扫描请求报文产生的扫描漏洞分析数据;向所述漏洞检测服务器发送所述扫描漏洞分析数据,其中,所述漏洞检测服务器根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的漏洞检测服务器的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
本申请的一些实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时可实现如前述程序安全性测试的方法的各实施例。
本申请的一些实施例提供一种计算机程序产品,所述的计算机程序产品包括计算机程序,其中,所述的计算机程序被处理器执行时可实现如前述程序安全性测试的方法的各实施例。
本申请的一些实施例提供一种电子设备500,包括存储器510、处理器520以及存储在所述存储器510上并可在所述处理器520上运行的计算机程序,其中,所述处理器520通过总线530执行所述程序时可前述程序安全性测试的方法的各实施例。
处理器520可以处理数字信号,可以包括各种计算结构。例如复杂指令集计算机结构、结构精简指令集计算机结构或者一种实行多种指令集组合的结构。在一些示例中,处理器520可以是微处理器。
存储器510可以用于存储由处理器520执行的指令或指令执行过程中相关的数据。这些指令和/或数据可以包括代码,用于实现本申请实施例描述的一个或多个模块的一些功能或者全部功能。本公开实施例的处理器520可以用于执行存储器510中的指令以实现图5或图6中所示的方法。存储器510包括动态随机存取存储器、静态随机存取存储器、闪存、光存储器或其它本领域技术人员所熟知的存储器。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (19)

1.一种检测程序安全性的方法,运行于漏洞检测服务器上,其特征在于,所述方法包括:
接收原始请求报文以及漏洞分析数据,并根据所述漏洞分析数据获取程序安全性初始检测结果,其中,所述漏洞分析数据和所述原始请求报文是在被测试服务器运行被测试程序产生的数据,所述程序安全性初始检测结果至少用于表征所述被测试程序是否存在漏洞;
基于所述原始请求报文得到扫描请求报文,其中,所述扫描请求报文用于触发对被测试服务器上存在的初始漏洞的攻击行为,所述初始漏洞是根据所述程序安全性初始检测结果确定的漏洞;
向所述被测试服务器发送所述扫描请求报文,并接收由所述被测试服务器响应所述扫描请求报文生成的扫描漏洞分析数据;
根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
2.如权利要求1所述的方法,其特征在于,
所述原始请求报文和所述漏洞分析数据是由代理模块对由所述被测试服务器运行所述被测试程序产生的数据进行采集得到的,其中,所述代理模块部署在所述被测试服务器的中间件上;
所述扫描漏洞分析数据是通过所述代理模块监听所述被测试服务器对所述扫描请求报文的响应过程得到的。
3.如权利要求1-2任一项所述的方法,其特征在于,所述基于所述原始请求报文得到扫描请求报文,包括:
获取所述初始漏洞的类型;
根据所述初始漏洞的类型构造目标有效载荷,并采用所述目标有效载荷替换位于所述原始请求报文中替换位置的数据,得到所述扫描请求报文,其中,所述目标有效载荷具有攻击性或者测试性。
4.如权利要求3所述的方法,其特征在于,所述漏洞分析数据至少包括:污点传播数据,其中,
在所述采用所述目标有效载荷替换位于所述原始请求报文中替换位置的数据之前,所述方法还包括:
基于所述污点传播数据获取污点特征;
根据所述污点特征获取与目标漏洞类型对应的有效载荷,并将所述与目标漏洞类型对应的有效载荷作为所述目标有效载荷。
5.如权利要求3所述的方法,其特征在于,所述漏洞分析数据至少包括:污点传播数据,其中,
在所述采用所述目标有效载荷替换位于所述原始请求报文中替换位置的数据之前,所述方法还包括:根据所述污点传播数据获取所述替换位置。
6.如权利要求4-5任一项所述的方法,其特征在于,在所述根据所述污点传播数据获取所述替换位置之前,所述方法还包括:通过钩子函数获取所述污点传播数据。
7.如权利要求1所述的方法,其特征在于,所述漏洞分析数据包括:污点传播数据和请求流量数据,其中,所述程序安全性初始检测结果是通过分析所述污点传播数据和所述请求流量数据得到的。
8.如权利要求4-5任一项所述的方法,其特征在于,所述程序安全性初始检测结果表征所述被测试程序存在潜在漏洞;其中,
所述根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果,包括:若根据所述扫描漏洞分析数据确认所述目标有效载荷具有攻击性,则将所述潜在漏洞作为真实存在的漏洞。
9.一种检测程序安全性的方法,运行于被测试服务器上,其特征在于,所述方法包括:
采集所述被测试服务器运行被测试程序时产生的漏洞分析数据和原始请求报文,并向漏洞检测服务器发送所述漏洞分析数据和所述原始请求报文,其中,所述漏洞检测服务器通过分析所述漏洞分析数据得到程序安全性初始检测结果,且所述漏洞检测服务器通过基于所述原始请求报文得到扫描请求报文;
采集由所述被测试服务器基于所述扫描请求报文产生的扫描漏洞分析数据,并向所述漏洞检测服务器发送所述扫描漏洞分析数据,其中,所述漏洞检测服务器根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
10.如权利要求9所述的方法,其特征在于,所述漏洞检测服务器采用目标有效载荷替换位于所述原始请求中替换位置的数据得到所述扫描请求报文,其中,所述目标有效载荷具有攻击性或者测试性,所述目标有效载荷是根据所述程序安全性初始检测结果包括的初始漏洞的类型构造的。
11.如权利要求10所述的方法,其特征在于,所述漏洞分析数据包括污点传播数据,其中,所述漏洞检测服务器根据所述污点传播数据获取所述替换位置。
12.如权利要求9-11任一项所述的方法,其特征在于,
所述采集所述被测试服务器运行被测试程序时产生的漏洞分析数据和原始请求报文,包括:
通过代理模块获取所述漏洞分析数据和所述原始请求报文,其中,所述代理模块是以插件的方式安装在所述被测试服务器的中间件内部。
13.如权利要求12所述的方法,其特征在于,所述漏洞分析数据包括污点传播数据和请求流量数据,其中,所述代理模块通过动态插桩策略获取所述污点传播数据和所述请求流量数据。
14.一种漏洞检测服务器,其特征在于,所述漏洞检测服务器包括:
程序安全性初始检测结果获取模块,被配置为接收原始请求报文以及漏洞分析数据,并根据所述漏洞分析数据获取程序安全性初始检测结果,其中,所述漏洞分析数据和所述原始请求报文是在被测试服务器运行被测试程序产生的数据,所述程序安全性初始检测结果至少用于表征所述被测试程序是否存在漏洞;
扫描请求报文构建模块,被配置为基于所述原始请求报文得到扫描请求报文,其中,所述扫描请求报文用于触发对被测试服务器上存在的初始漏洞的攻击行为,所述初始漏洞是根据所述程序安全性初始检测结果确定的漏洞;
扫描漏洞分析数据接收模块,被配置为向所述被测试服务器发送所述扫描请求报文,并接收由所述被测试服务器响应所述扫描请求报文生成的扫描漏洞分析数据;
目标漏洞检测结果获取模块,被配置为根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
15.一种被测试服务器,其特征在于,所述被测试服务器包括:
漏洞分析数据采集发送模块,被配置为采集所述被测试服务器运行被测试程序时产生的漏洞分析数据和原始请求报文,并向漏洞检测服务器发送所述漏洞分析数据和所述原始请求报文,其中,所述漏洞检测服务器通过分析所述漏洞分析数据得到程序安全性初始检测结果,且所述漏洞检测服务器通过基于所述原始请求报文得到扫描请求报文;
扫描漏洞分析数据采集发送模块,被配置为采集由所述被测试服务器基于所述扫描请求报文产生的扫描漏洞分析数据;向所述漏洞检测服务器发送所述扫描漏洞分析数据,其中,所述漏洞检测服务器根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
16.一种检测程序安全性的系统,其特征在于,所述系统包括:被测试服务器以及漏洞检测服务器,其中,
所述被测试服务器至少被配置为:
采集所述被测试服务器运行被测试程序时产生的漏洞分析数据和原始请求报文,并向漏洞检测服务器发送所述漏洞分析数据和所述原始请求报文,其中,所述漏洞检测服务器通过分析所述漏洞分析数据得到程序安全性初始检测结果,且所述漏洞检测服务器通过基于所述原始请求报文得到扫描请求报文;
采集由所述被测试服务器基于所述扫描请求报文产生的扫描漏洞分析数据;
向所述漏洞检测服务器发送所述扫描漏洞分析数据,其中,所述漏洞检测服务器根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果;
所述漏洞检测服务器至少被配置为响应于接收的来自于所述被测试服务器的采集数据而执行如下操作:
接收原始请求报文以及漏洞分析数据,并根据所述漏洞分析数据获取程序安全性初始检测结果,其中,所述漏洞分析数据和所述原始请求报文是在被测试服务器运行被测试程序产生的数据,所述程序安全性初始检测结果至少用于表征所述被测试程序是否存在漏洞;
基于所述原始请求报文得到扫描请求报文,其中,所述扫描请求报文用于触发对被测试服务器上存在的初始漏洞的攻击行为,所述初始漏洞是根据所述程序安全性初始检测结果确定的漏洞;
向所述被测试服务器发送所述扫描请求报文,并接收由所述被测试服务器根据所述扫描请求生成的扫描漏洞分析数据;
根据所述扫描漏洞分析数据更新所述程序安全性初始检测结果得到程序安全性目标检测结果。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时可实现权利要求1-13中任意一项权利要求所述的方法。
18.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述程序时可实现权利要求1-13中任意一项权利要求所述的方法。
19.一种计算机程序产品,其特征在于,所述的计算机程序产品包括计算机程序,其中,所述的计算机程序被处理器执行时可实现如权利要求1-13中任意一项权利要求所述的方法。
CN202210338496.8A 2022-04-01 2022-04-01 检测程序安全性的方法、系统以及服务器 Active CN114422278B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210338496.8A CN114422278B (zh) 2022-04-01 2022-04-01 检测程序安全性的方法、系统以及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210338496.8A CN114422278B (zh) 2022-04-01 2022-04-01 检测程序安全性的方法、系统以及服务器

Publications (2)

Publication Number Publication Date
CN114422278A true CN114422278A (zh) 2022-04-29
CN114422278B CN114422278B (zh) 2022-06-21

Family

ID=81262803

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210338496.8A Active CN114422278B (zh) 2022-04-01 2022-04-01 检测程序安全性的方法、系统以及服务器

Country Status (1)

Country Link
CN (1) CN114422278B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115146278A (zh) * 2022-06-27 2022-10-04 阿里云计算有限公司 基于云服务的漏洞处理方法、设备和存储介质
CN116451228A (zh) * 2023-04-23 2023-07-18 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关在线污点传播分析系统
CN116467712A (zh) * 2023-04-23 2023-07-21 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关污点传播分析系统
CN117130917A (zh) * 2023-08-28 2023-11-28 北京安普诺信息技术有限公司 一种容器化Java应用的灰盒测试方法、装置及系统
CN117951709A (zh) * 2023-12-05 2024-04-30 北京安普诺信息技术有限公司 基于代码疫苗iast探针的跨进程漏洞分析方法及装置
CN118350004A (zh) * 2024-05-14 2024-07-16 广州锦高信息科技有限公司 一种基于载荷库的漏洞扫描方法和系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160241582A1 (en) * 2015-02-13 2016-08-18 Microsoft Technology Licensing, Llc Security scanner
CN108400978A (zh) * 2018-02-07 2018-08-14 深圳壹账通智能科技有限公司 漏洞检测方法、装置、计算机设备和存储介质
US10691810B1 (en) * 2019-09-16 2020-06-23 Fmr Llc Detecting vulnerabilities associated with a software application build
CN112182587A (zh) * 2020-09-30 2021-01-05 中南大学 Web漏洞扫描方法、系统、装置、存储介质和计算机设备
CN112653709A (zh) * 2020-12-30 2021-04-13 北京天融信网络安全技术有限公司 漏洞检测方法、装置、电子设备及可读存储介质
CN112906010A (zh) * 2021-05-07 2021-06-04 北京安普诺信息技术有限公司 一种自动化攻击测试方法及基于此的自动化安全测试方法
CN113162945A (zh) * 2021-05-07 2021-07-23 北京安普诺信息技术有限公司 漏洞检测分析方法、装置及基于此的漏洞验证方法、系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160241582A1 (en) * 2015-02-13 2016-08-18 Microsoft Technology Licensing, Llc Security scanner
CN108400978A (zh) * 2018-02-07 2018-08-14 深圳壹账通智能科技有限公司 漏洞检测方法、装置、计算机设备和存储介质
US10691810B1 (en) * 2019-09-16 2020-06-23 Fmr Llc Detecting vulnerabilities associated with a software application build
CN112182587A (zh) * 2020-09-30 2021-01-05 中南大学 Web漏洞扫描方法、系统、装置、存储介质和计算机设备
CN112653709A (zh) * 2020-12-30 2021-04-13 北京天融信网络安全技术有限公司 漏洞检测方法、装置、电子设备及可读存储介质
CN112906010A (zh) * 2021-05-07 2021-06-04 北京安普诺信息技术有限公司 一种自动化攻击测试方法及基于此的自动化安全测试方法
CN113162945A (zh) * 2021-05-07 2021-07-23 北京安普诺信息技术有限公司 漏洞检测分析方法、装置及基于此的漏洞验证方法、系统

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115146278A (zh) * 2022-06-27 2022-10-04 阿里云计算有限公司 基于云服务的漏洞处理方法、设备和存储介质
CN116451228A (zh) * 2023-04-23 2023-07-18 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关在线污点传播分析系统
CN116467712A (zh) * 2023-04-23 2023-07-21 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关污点传播分析系统
CN116451228B (zh) * 2023-04-23 2023-10-17 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关在线污点传播分析系统
CN116467712B (zh) * 2023-04-23 2023-12-01 北京安普诺信息技术有限公司 动态污点追踪方法、装置及相关污点传播分析系统
CN117130917A (zh) * 2023-08-28 2023-11-28 北京安普诺信息技术有限公司 一种容器化Java应用的灰盒测试方法、装置及系统
CN117130917B (zh) * 2023-08-28 2024-01-23 北京安普诺信息技术有限公司 一种容器化Java应用的灰盒测试方法、装置及系统
CN117951709A (zh) * 2023-12-05 2024-04-30 北京安普诺信息技术有限公司 基于代码疫苗iast探针的跨进程漏洞分析方法及装置
CN118350004A (zh) * 2024-05-14 2024-07-16 广州锦高信息科技有限公司 一种基于载荷库的漏洞扫描方法和系统

Also Published As

Publication number Publication date
CN114422278B (zh) 2022-06-21

Similar Documents

Publication Publication Date Title
CN114422278B (zh) 检测程序安全性的方法、系统以及服务器
US9830453B1 (en) Detection of code modification
CN105391729A (zh) 基于模糊测试的web漏洞自动挖掘方法
CN112003864B (zh) 一种基于全流量的网站安全检测系统和方法
CN110516448A (zh) 一种灰盒测试方法、装置、设备及可读存储介质
CN116842531B (zh) 基于代码疫苗的漏洞实时验证方法、装置、设备及介质
CN108259202A (zh) 一种ca监测预警方法和ca监测预警系统
US11196613B2 (en) Techniques for correlating service events in computer network diagnostics
CN111523784A (zh) 自动执行路径的监控方法及装置
Barboni et al. Sumo: A mutation testing strategy for solidity smart contracts
KR101421136B1 (ko) 악성 프로그램을 검사하기 위하여 컴퓨터 프로그램의행동을 모델링하는 방법 및 장치
CN113868659A (zh) 一种漏洞检测方法及系统
CN116992438A (zh) 基于代码疫苗的实时漏洞修复的方法、装置、设备及介质
Zhu et al. Detecting privilege escalation attacks through instrumenting web application source code
JP2007233432A (ja) アプリケーションの脆弱性検査方法および装置
KR101337217B1 (ko) 컴퓨터 시스템과, 파일 및 행위 기반 복합룰 작성 시스템
CN116450533B (zh) 用于应用程序的安全检测方法、装置、电子设备和介质
CN111885088A (zh) 基于区块链的日志监测方法及装置
CN115834188A (zh) 一种漏洞扫描监控方法、系统、电子设备及存储介质
CN113872919B (zh) 一种漏洞扫描方法及装置
Kerschbaum et al. Using internal sensors and embedded detectors for intrusion detection
Xie et al. Diagnosing vulnerability patterns in cloud audit logs
CN117675593B (zh) 基于代码疫苗iast探针的应用拓扑构建方法及装置
Coppolino et al. From intrusion detection to intrusion detection and diagnosis: An ontology-based approach
Xu et al. MAS and fault-management

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