CN110955899B - 安全测试方法、装置、测试设备以及介质 - Google Patents

安全测试方法、装置、测试设备以及介质 Download PDF

Info

Publication number
CN110955899B
CN110955899B CN201911297527.4A CN201911297527A CN110955899B CN 110955899 B CN110955899 B CN 110955899B CN 201911297527 A CN201911297527 A CN 201911297527A CN 110955899 B CN110955899 B CN 110955899B
Authority
CN
China
Prior art keywords
test
tested
service
request
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.)
Active
Application number
CN201911297527.4A
Other languages
English (en)
Other versions
CN110955899A (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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN201911297527.4A priority Critical patent/CN110955899B/zh
Publication of CN110955899A publication Critical patent/CN110955899A/zh
Application granted granted Critical
Publication of CN110955899B publication Critical patent/CN110955899B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供了一种安全测试方法,应用于测试设备,该方法包括:获取待测试应用服务器的运行数据,其中,运行数据包括待测试应用服务器响应业务请求并运行应用服务时生成的数据,业务请求包括请求参数;基于运行数据,确定请求参数的执行路径;基于执行路径,确定应用服务是否存在风险信息;响应于确定应用服务存在风险信息,基于风险信息和业务请求生成测试数据;以及将测试数据发送至待测试应用服务器,以便待测试应用服务器响应于测试数据运行应用服务以生成测试结果,测试结果用于表征应用服务是否存在安全问题。本公开还提供了一种安全测试装置、一种测试设备以及一种计算机可读存储介质。

Description

安全测试方法、装置、测试设备以及介质
技术领域
本公开涉及计算机技术领域,特别是涉及一种安全测试方法、安全测试装置、测试设备以及计算机可读介质。
背景技术
应用安全是信息安全中非常重要的方面,通过安全测试来及时发现应用软件的安全漏洞是应用开发中必不可少的环节。目前广泛采用的自动化安全测试方式主要包括基于流量的黑盒自动化测试方式以及基于源代码的白盒代码扫描方式。
然而,黑盒自动化测试方式由于不关注软件内部的实现细节,导致测试覆盖率较低,且效率较低,需重复大量发送分析测试流量以判断漏洞是否存在。白盒代码扫描方式在进行安全测试时,需对所有源码进行语法分析与控制流分析,以此发现代码漏洞。此种方式不仅需要被测应用源码,且扫描效率低、误报率较高,需投入大量人力分析检出的漏洞是否真实有效。
发明内容
本公开的一个方面提供了一种安全测试方法,应用于测试设备,所述方法包括:获取待测试应用服务器的运行数据,其中,所述运行数据包括所述待测试应用服务器响应业务请求并运行应用服务时生成的数据,所述业务请求包括请求参数。基于所述运行数据,确定所述请求参数的执行路径。基于所述执行路径,确定所述应用服务是否存在风险信息。响应于确定所述应用服务存在风险信息,基于所述风险信息和所述业务请求生成测试数据。将所述测试数据发送至所述待测试应用服务器,以便所述待测试应用服务器响应于所述测试数据运行所述应用服务以生成测试结果,所述测试结果用于表征所述应用服务是否存在安全问题。
根据本公开实施例,上述确定所述应用服务是否存在风险信息包括以下至少一项:所述应用服务在运行时采用了风险函数,所述应用服务在运行时未对所述业务请求中的所述请求参数进行预定处理,其中,所述预定处理包括验证处理和过滤处理中的至少一个。
根据本公开实施例,上述基于所述风险信息和所述业务请求生成测试数据包括:基于所述风险信息确定所述业务请求中的风险参数,获取测试参数,将所述业务请求中的所述风险参数更新为所述测试参数,得到更新后的业务请求作为所述测试数据。
根据本公开实施例,上述方法还包括:从所述待测试应用服务器获取所述测试结果,基于所述测试结果,确定所述应用服务是否存在安全问题。
根据本公开实施例,上述测试结果包括以下至少一项:针对所述测试数据生成的响应数据,所述待测试应用服务器的性能参数,所述待测试应用服务器的进程状态。
根据本公开实施例,上述测试设备包括插桩探针;所述方法还包括在获取待测试应用服务器的运行数据之前:将所述插桩探针部署到所述待测试应用服务器中,以便所述测试设备通过所述插桩探针获取所述运行数据。
本公开的另一个方面提供了一种安全测试装置,应用于测试设备,所述装置包括:第一获取模块、第一确定模块、第二确定模块、生成模块以及发送模块。其中,第一获取模块,获取待测试应用服务器的运行数据,其中,所述运行数据包括所述待测试应用服务器响应业务请求并运行应用服务时生成的数据,所述业务请求包括请求参数。第一确定模块,基于所述运行数据,确定所述请求参数的执行路径。第二确定模块,基于所述执行路径,确定所述应用服务是否存在风险信息。生成模块,响应于确定所述应用服务存在风险信息,基于所述风险信息和所述业务请求生成测试数据。发送模块,将所述测试数据发送至所述待测试应用服务器,以便所述待测试应用服务器响应于所述测试数据运行所述应用服务以生成测试结果,所述测试结果用于表征所述应用服务是否存在安全问题。
根据本公开实施例,上述确定所述应用服务是否存在风险信息包括以下至少一项:所述应用服务在运行时采用了风险函数,所述应用服务在运行时未对所述业务请求中的所述请求参数进行预定处理,其中,所述预定处理包括验证处理和过滤处理中的至少一个。
根据本公开实施例,上述生成模块包括:确定子模块、获取子模块以及更新子模块。其中,确定子模块,基于所述风险信息确定所述业务请求中的风险参数。获取子模块,获取测试参数。更新子模块,将所述业务请求中的所述风险参数更新为所述测试参数,得到更新后的业务请求作为所述测试数据。
根据本公开实施例,上述装置还包括:第二获取模块以及第三确定模块。其中,第二获取模块,从所述待测试应用服务器获取所述测试结果。第三确定模块,基于所述测试结果,确定所述应用服务是否存在安全问题。
根据本公开实施例,上述测试结果包括以下至少一项:针对所述测试数据生成的响应数据,所述待测试应用服务器的性能参数,所述待测试应用服务器的进程状态。
根据本公开实施例,上述测试设备包括插桩探针。所述装置还包括部署模块,用于在获取待测试应用服务器的运行数据之前:将所述插桩探针部署到所述待测试应用服务器中,以便所述测试设备通过所述插桩探针获取所述运行数据。
本公开的另一方面提供了一种测试设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。
本公开的另一方面提供了一种非易失性可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本公开实施例的安全测试方法和安全测试装置的系统架构;
图2示意性示出了根据本公开实施例的安全测试方法的流程图;
图3示意性示出了根据本公开另一实施例的安全测试方法的流程图;
图4示意性示出了根据本公开实施例的生成测试数据的流程图;
图5示意性示出了根据本公开实施例的安全测试网络的示意图;
图6示意性示出了根据本公开实施例的安全测试装置的框图;
图7示意性示出了根据本公开另一实施例的安全测试装置的框图;
图8示意性示出了根据本公开实施例的生成模块的框图;以及
图9示意性示出了根据本公开实施例的用于实现安全测试的计算机系统的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程控制装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
本公开的实施例提供了一种安全测试方法,应用于测试设备,该方法包括:获取待测试应用服务器的运行数据,其中,运行数据包括待测试应用服务器响应业务请求并运行应用服务时生成的数据,业务请求包括请求参数。然后,基于运行数据,确定请求参数的执行路径,并基于执行路径,确定应用服务是否存在风险信息。再者,可以响应于确定应用服务存在风险信息,基于风险信息和业务请求生成测试数据。最后,可以将测试数据发送至待测试应用服务器,以便待测试应用服务器响应于测试数据运行应用服务以生成测试结果,测试结果用于表征应用服务是否存在安全问题。
图1示意性示出了根据本公开实施例的安全测试方法和安全测试装置的系统架构。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的安全测试方法一般可以由服务器105执行。相应地,本公开实施例所提供的安全测试装置一般可以设置于服务器105中。本公开实施例所提供的安全测试方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的安全测试装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
例如,本公开实施例的运行数据可以存储在终端设备101、102、103中,通过终端设备101、102、103将运行数据发送至服务器105中,服务器105可以基于运行数据,确定请求参数的执行路径,并基于执行路径,确定应用服务是否存在风险信息,然后,可以响应于确定应用服务存在风险信息,基于风险信息和业务请求生成测试数据,并将测试数据发送至待测试应用服务器。另外,运行数据还可以直接存储在服务器105中,由服务器105直接基于运行数据,确定请求参数的执行路径,并基于执行路径,确定应用服务是否存在风险信息,然后,可以响应于确定应用服务存在风险信息,基于风险信息和业务请求生成测试数据,并将测试数据发送至待测试应用服务器。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面结合图1的系统架构,参考图2~图5来描述根据本公开示例性实施方式的安全测试方法。需要注意的是,上述系统架构仅是为了便于理解本公开的精神和原理而示出,本公开的实施方式在此方面不受任何限制。相反,本公开的实施方式可以应用于适用的任何场景。
图2示意性示出了根据本公开实施例的安全测试方法的流程图。
如图2所示,该方法例如应用于测试设备,该方法可以包括操作S210~S250。
在操作S210,获取待测试应用服务器的运行数据,其中,运行数据包括待测试应用服务器响应业务请求并运行应用服务时生成的数据,业务请求包括请求参数。
根据本公开实施例,待测试应用服务器例如为本公开所要进行安全测试的机器。该待测试应用服务器中包括至少一个应用服务。通过本公开实施例的技术方案,可以测试该待测试应用服务器中的应用服务是否出现漏洞。
根据本公开实施例,测试设备例如包括插桩探针。在获取待测试应用服务器的运行数据之前,可以将将插桩探针部署到待测试应用服务器中,以便测试设备通过插桩探针获取运行数据。
根据本公开实施例,测试设备例如可以包括用于访问待测试应用服务器的软件或设备等等。业务请求例如可以是测试设备所发送的请求。待测试应用服务器接收到业务请求后,可以通过运行应用服务来执行该业务请求。为了便于理解,以业务请求为A用户给B用于转账C元举例,其中,业务请求中的请求参数例如可以是C元。
在待测试应用服务器响应业务请求运行应用服务时,生成运行数据,该运行数据例如可以包括代码执行流和请求参数运行流。
在操作S220,基于运行数据,确定请求参数的执行路径。
根据本公开实施例,在获取到运行数据之后,可以对运行数据进行分析,以得到请求参数的执行路径。其中,该请求参数的执行路径能够表征应用服务是否存在风险信息。
在操作S230,基于执行路径,确定应用服务是否存在风险信息。
根据本公开实施例,应用服务存在风险信息例如包括以下两种情况。
(1)应用服务在运行时采用了风险函数。即,如果应用服务在运行过程中采用了高危风险函数,则表征应用服务存在风险信息。
(2)应用服务在运行时未对业务请求中的请求参数进行预定处理,其中,预定处理包括验证处理和过滤处理中的至少一个。即,如果应用服务在运行过程中,没有对所提交的请求参数进行有效验证或者过滤,则表明该应用服务存在风险信息。
根据本公开实施例,确定应用服务存在风险信息例如为初步的风险判断,表明应用服务可能存在风险或者存在风险的概率较大。在确定了应用服务存在风险信息之后,还需要进一步验证该风险信息是否为真实风险。其中,进一步验证该风险信息是否为真实风险信息的过程例如如下操作S240~S250中描述。
在操作S240,响应于确定应用服务存在风险信息,基于风险信息和业务请求生成测试数据。
根据本公开实施例,如有确定应用服务存在风险信息,可以进一步确定该风险信息是否为真实信息。如果风险信息为真实信息,则可以确定应用服务存在安全问题,例如可以确定应用服务存在安全漏洞。
具体地,在应用服务存在风险信息时,可以基于风险信息和业务请求生成测试数据。其中,该测试数据例如可以用于进一步测试该风险信息是否为真实风险。其中,基于风险信息和业务请求生成测试数据的具体过程如下图4中描述。
在操作S250,将测试数据发送至待测试应用服务器,以便待测试应用服务器响应于测试数据运行应用服务以生成测试结果,测试结果用于表征应用服务是否存在安全问题。
根据本公开实施例,在生成测试数据后,可以将该测试数据发送给待测试应用服务器,以便在待测试应用服务器响应该测试数据运行应用服务后生成测试结果,并基于该测试结果确定待测试应用服务器是否存在安全问题。
图3示意性示出了根据本公开另一实施例的安全测试方法的流程图。
如图3所示,该方法例如可以包括操作S210~S250以及操作S310~S320。其中,操作S210~S250与上参考图2描述的操作相同或类似,在此不再赘述。
在操作S310,从待测试应用服务器获取测试结果。
在操作S320,基于测试结果,确定应用服务是否存在安全问题。
根据本公开实施例,测试结果例如至少包括以下三种情况。
(1)针对测试数据生成的响应数据。其中,可以通过确定响应数据是否具有异常信息来判断应用服务是否存在安全问题。如果响应数据具有异常信息,则可以确定应用服务存在安全问题。其中,异常信息例如可以是响应时间过长。可以理解,异常信息可以是任何可能的异常信息,本公开实施不限定异常信息的具体类型。
(2)待测试应用服务器的性能参数。例如,可以通过监控待测试应用服务器的性能参数来确定应用服务是否存在安全问题。如果性能参数表征待测试应用服务器运行异常,则可以确定应用服务存在安全问题。
(3)待测试应用服务器的进程状态。例如,可以通过监控待测试应用服务器的进程状态来确定应用服务是否存在安全问题。如果进程状态出现异常,则可以确定应用服务存在安全问题。
本公开实施例在业务测试过程中,能够自动挖掘应用服务潜在的安全问题。例如通过部署在待测试应用服务器的插桩探针获取运行数据,并基于运行数据自动构造和优化攻击测试数据,以挖掘深出层次的安全漏洞,并确认漏洞的真实性。可以理解,本公开实施例的技术方案通过字节码插桩探针实时获取并分析代码执行流和请求参数运行流,并通过构造测试数据进一步测试,以发现深层次的安全风险,提高测试深度。其次,测试数据是基于插桩探针基于搜集到的信息构造的,该测试数据针对性强,可有效减少无用测试案例,提高自动化测试效率。
图4示意性示出了根据本公开实施例的生成测试数据的流程图。
如图4所示,上述操作S240例如包括操作S241~S243。
在操作S241,基于风险信息确定业务请求中的风险参数。
为了便于理解本公开实施例的技术方案,例如以业务请求为“从存储位置为D地址信息中读取F文件”为例。其中,请求参数例如可以为D地址信息。如果该业务请求中的风险信息表征应用服务在运行时没有对针D地址信息进行过滤处理,则可以将D地址信息确定为风险参数。
在操作S242,获取测试参数。例如,在确定了风险参数之后,可以根据风险参数确定出用于进一步测试应用服务的测试参数。例如,所确定的测试参数可以是E地址信息。
在操作S243,将业务请求中的风险参数更新为测试参数,得到更新后的业务请求作为测试数据。
根据本公开实施例,可以根据测试数据和业务请求构造出用于进一步测试应用服务的测试数据。例如,将测试参数“E地址信息”替换业务请求中的风险参数“D地址信息”,所得到的更新后的业务请求为“从存储位置为E地址信息中读取F文件”。并将更新后的业务请求作为测试数据,以进一步确定应用服务的风险信息是否为真实风险信息。
例如,如果待测试应用服务器响应于测试数据运行应用服务后,可以基于测试数据获取到F文件,则可以说明应用服务没有对地址信息进行过滤处理,换言之,不同的地址信息均能够获取到F文件,说明该应用服务存在安全隐患。
图5示意性示出了根据本公开实施例的安全测试网络的示意图。
如图5所示,该网络例如包括客户端测试设备501、待测试应用服务器502、插桩分析子系统503和攻击验证子系统504。其中插桩分析子系统503和攻击验证子系统504例如可以用于测试待测试应用服务器502的安全性。以下将介绍各个系统或设备的功能。其中,本公开实施例中的待测试应用服务器502例如可以与图1中的服务器105相同或类似。
例如,客户端测试设备501可以是业务测试人员使用的用于访问待测应用服务的软件或设备。客户端测试设备501包括但不限于手机、平板电脑、浏览器等。在进行功能测试时,可以通过部署在待测试应用服务器502上的插桩分析子系统503实时获取每次业务请求对应的代码执行流和请求参数运行流。
插桩分析子系统503在待测试应用服务器502上部署完成后,在应用服务程序字节码加载时动态插入自定义的采集和分析代码,以实时获取业务请求对应的代码执行流和请求参数运行流。然后,对代码执行流和请求参数运行流进行分析,判断应用服务的风险信息。此后,将可能包含漏洞的风险信息反馈到攻击验证子系统504,攻击验证子系统504根据反馈结果,精准构造并不断优化测试报文(测试数据),并观察待测应用服务对各测试报文的响应情况,检测应用服务是否存在安全漏洞。在测试完成后,可以对应用服务的漏洞做归纳整理,生成安全测试报告。
具体地,插桩分析子系统503例如可以由插桩模块和分析模块两部分构成。其中,插桩模块可以实时获取待测试应用服务器502的代码执行流和请求参数运行流,将采集到的代码执行流和请求参数运行流传给分析模块。然后,由分析模块根据代码执行流和请求参数运行流分析业务请求中的请求参数在整个代码流中的执行路径,从而判断应用服务是否具有潜在漏洞。之后可以将分析的结果传给攻击验证子系统504做进一步处理。
其中,插桩模块的主要作用例如为对应用程序编译后的代码进行插桩,即字节码插桩。例如可以采用两种插桩方式,一种为在应用服务器启动前,通过配置Web容器的启动参数,加载插桩工具。另一种为在应用服务器启动后,通过附加进程的方式,将插桩工具加载入应用进程,挂载关键函数。
插桩模块运行后,会通过虚拟机工具接口,在应用服务程序字节码加载时,对应用服务中关键类的关键函数(如系统入口函数、数据读写函数、数据存储函数、命令执行函数等)做相关操作,例如加入自定义的分析代码,并通过分析代码获取业务请求的请求参数,并跟踪请求参数的执行路径,实时将搜集到的信息送入分析模块进行进一步处理。
其中,分析模块的主要作用例如为在接收到插桩模块搜集到的代码执行流和请求参数运行流后,分析业务请求中的请求参数从入口函数到最终的存储函数或执行函数所经过的执行路径,判断应用服务在执行命令或存储数据等操作时,是否对用户提交的请求参数进行了验证和过滤。如果发现应用服务采用了高危风险函数,或者未对请求数据做有效验证和过滤,则将此类风险信息反馈给攻击验证子系统504,以便攻击验证子系统504有针对性地构造攻击报文,进一步挖掘和确认漏洞。
根据本公开实施例,攻击验证子系统504由攻击向量构造模块和测试数据分析模块两部分构成。攻击向量构造模块接收插桩分析子系统503实时反馈的可能存在问题的待测试应用服务器502风险信息,并根据该风险信息针对性地构造和优化攻击测试报文,将构造好的测试报文发送到待测试应用服务器502。测试数据分析模块在收到待测试应用服务器502对测试报文的响应后,对响应信息进行分析,从而判断被测应用是否存在安全漏洞,并对确认的安全漏洞进行存储和分类,在测试结束后生成安全测试报告。
其中,攻击向量构造模块接收插桩分析子系统503反馈过来的风险信息。然后,基于风险信息针对性地构造可能触发漏洞的测试报文,将测试报文依次发送到待测试应用服务器502,以便检测漏洞是否真实存在。
其中,测试数据分析模块接收待测试应用服务器502对攻击报文的响应信息后,可以通过分析响应报文内容,或通过其他监控手段(如监控被测服务器性能、进程执行情况等),判断安全漏洞是否真实存在。对于确认存在的安全漏洞,将攻击报文数据,代码执行刘等信息一并存储。在测试结束后,生成安全测报告。
本公开实施例的安全测试方法可以自动完成安全测试,无需人工参与。还能基于插桩探针的反馈结果,实时构造并优化测试报文,以便通过测试报文挖掘应用深层次的安全漏洞,减少无用测试案例,大幅提高测试效率和测试深度。此外,由于漏洞均经过插桩探针分析和测试报文验证,误报率极低,能够有效提高测试精度,同时降低后期开发人员定位和分析漏洞的难度。可见,本公开实施例的技术方案具有测试精准、测试效率高、误报率极低、检测结果易于分析等优势。图6示意性示出了根据本公开实施例的安全测试装置的框图。
如图6所示,安全测试装置600例如包括第一获取模块610、第一确定模块620、第二确定模块630、生成模块640以及发送模块650。
第一获取模块610可以用获取待测试应用服务器的运行数据,其中,运行数据包括待测试应用服务器响应业务请求并运行应用服务时生成的数据,业务请求包括请求参数。根据本公开实施例,第一获取模块610例如可以执行上文参考图2描述的操作S210,在此不再赘述。
第一确定模块620可以用于基于运行数据,确定请求参数的执行路径。根据本公开实施例,第一确定模块620例如可以执行上文参考图2描述的操作S220,在此不再赘述。
第二确定模块630可以用于基于执行路径,确定应用服务是否存在风险信息。根据本公开实施例,第二确定模块630例如可以执行上文参考图2描述的操作S230,在此不再赘述。
生成模块640可以用于响应于确定应用服务存在风险信息,基于风险信息和业务请求生成测试数据。
根据本公开实施例,确定应用服务是否存在风险信息包括以下至少一项:应用服务在运行时采用了风险函数,应用服务在运行时未对业务请求中的请求参数进行预定处理,其中,预定处理包括验证处理和过滤处理中的至少一个。
根据本公开实施例,生成模块640例如可以执行上文参考图2描述的操作S240,在此不再赘述。
发送模块650可以用于将测试数据发送至待测试应用服务器,以便待测试应用服务器响应于测试数据运行应用服务以生成测试结果,测试结果用于表征应用服务是否存在安全问题。
根据本公开实施例,测试结果包括以下至少一项:针对测试数据生成的响应数据,待测试应用服务器的性能参数,待测试应用服务器的进程状态。
根据本公开实施例,发送模块650例如可以执行上文参考图2描述的操作S250,在此不再赘述。
图7示意性示出了根据本公开另一实施例的安全测试装置的框图。
如图7所示,安全测试装置700例如包括第一获取模块610、第一确定模块620、第二确定模块630、生成模块640、发送模块650、第二获取模块710以及第三确定模块720。其中,第一获取模块610、第一确定模块620、第二确定模块630、生成模块640以及发送模块650与上参考图6描述的模块相同或类似,在此不再赘述。
第二获取模块710可以用于从待测试应用服务器获取测试结果。根据本公开实施例,第二获取模块710例如可以执行上文参考图3描述的操作S310,在此不再赘述。
第三确定模块720可以用于基于测试结果,确定应用服务是否存在安全问题。根据本公开实施例,第三确定模块720例如可以执行上文参考图3描述的操作S320,在此不再赘述。
图8示意性示出了根据本公开实施例的生成模块的框图。
如图8所示,生成模块640例如包括确定子模块641、获取子模块642以及更新子模块643。
确定子模块641可以用于基于风险信息确定业务请求中的风险参数。根据本公开实施例,确定子模块641例如可以执行上文参考图4描述的操作S241,在此不再赘述。
获取子模块642可以用于获取测试参数。根据本公开实施例,获取子模块642例如可以执行上文参考图4描述的操作S242,在此不再赘述。
更新子模块643可以用于将业务请求中的风险参数更新为测试参数,得到更新后的业务请求作为测试数据。根据本公开实施例,更新子模块643例如可以执行上文参考图4描述的操作S243,在此不再赘述。
根据本公开实施例,测试设备包括插桩探针。装置还包括部署模块,用于在获取待测试应用服务器的运行数据之前:将插桩探针部署到待测试应用服务器中,以便测试设备通过插桩探针获取运行数据。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,第一获取模块610、第一确定模块620、第二确定模块630、生成模块640、确定子模块641、获取子模块642、更新子模块643、发送模块650、第二获取模块710以及第三确定模块720中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一获取模块610、第一确定模块620、第二确定模块630、生成模块640、确定子模块641、获取子模块642、更新子模块643、发送模块650、第二获取模块710以及第三确定模块720中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一获取模块610、第一确定模块620、第二确定模块630、生成模块640、确定子模块641、获取子模块642、更新子模块643、发送模块650、第二获取模块710以及第三确定模块720中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图9示意性示出了根据本公开实施例的用于实现安全测试的计算机系统的方框图。图9示出的计算机系统仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图9所示,计算机系统900包括处理器901、计算机可读存储介质902。该系统900可以执行根据本公开实施例的方法。
具体地,处理器901例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
计算机可读存储介质902,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
计算机可渎存储介质902可以包括计算机程序903,该计算机程序903可以包括代码/计算机可执行指令,其在由处理器901执行时使得处理器901执行根据本公开实施例的方法或其任何变形。
计算机程序903可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序903中的代码可以包括一个或多个程序模块,例如包括903A、模块903B、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器901执行时,使得处理器901可以执行根据本公开实施例的方法或其任何变形。
根据本公开的实施例,第一获取模块610、第一确定模块620、第二确定模块630、生成模块640、确定子模块641、获取子模块642、更新子模块643、发送模块650、第二获取模块710以及第三确定模块720中的至少一个可以实现为参考图9描述的计算机程序模块,其在被处理器901执行时,可以实现上面描述的相应操作。
本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现上述方法。
根据本公开的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

Claims (10)

1.一种安全测试方法,应用于测试设备,所述方法包括:
获取待测试应用服务器的运行数据,其中,所述运行数据包括所述待测试应用服务器响应业务请求并运行应用服务时生成的数据,所述业务请求包括请求参数;
基于所述运行数据,确定所述请求参数的执行路径;
基于所述执行路径,确定所述应用服务是否存在风险信息;
响应于确定所述应用服务存在风险信息,基于所述风险信息和所述业务请求生成测试数据;以及
将所述测试数据发送至所述待测试应用服务器,以便所述待测试应用服务器响应于所述测试数据运行所述应用服务以生成测试结果,所述测试结果用于表征所述应用服务是否存在安全问题。
2.根据权利要求1所述的方法,其中,所述确定所述应用服务是否存在风险信息包括以下至少一项:
所述应用服务在运行时采用了风险函数;以及
所述应用服务在运行时未对所述业务请求中的所述请求参数进行预定处理,
其中,所述预定处理包括验证处理和过滤处理中的至少一个。
3.根据权利要求1或2所述的方法,其中,所述基于所述风险信息和所述业务请求生成测试数据包括:
基于所述风险信息确定所述业务请求中的风险参数;
获取测试参数;以及
将所述业务请求中的所述风险参数更新为所述测试参数,得到更新后的业务请求作为所述测试数据。
4.根据权利要求1所述的方法,还包括:
从所述待测试应用服务器获取所述测试结果;以及
基于所述测试结果,确定所述应用服务是否存在安全问题。
5.根据权利要求4所述的方法,其中,所述测试结果包括以下至少一项:
针对所述测试数据生成的响应数据;
所述待测试应用服务器的性能参数;以及
所述待测试应用服务器的进程状态。
6.根据权利要求1所述的方法,其中,所述测试设备包括插桩探针;所述方法还包括在获取待测试应用服务器的运行数据之前:
将所述插桩探针部署到所述待测试应用服务器中,以便所述测试设备通过所述插桩探针获取所述运行数据。
7.一种安全测试装置,应用于测试设备,所述装置包括:
第一获取模块,获取待测试应用服务器的运行数据,其中,所述运行数据包括所述待测试应用服务器响应业务请求并运行应用服务时生成的数据,所述业务请求包括请求参数;
第一确定模块,基于所述运行数据,确定所述请求参数的执行路径;
第二确定模块,基于所述执行路径,确定所述应用服务是否存在风险信息;
生成模块,响应于确定所述应用服务存在风险信息,基于所述风险信息和所述业务请求生成测试数据;以及
发送模块,将所述测试数据发送至所述待测试应用服务器,以便所述待测试应用服务器响应于所述测试数据运行所述应用服务以生成测试结果,所述测试结果用于表征所述应用服务是否存在安全问题。
8.根据权利要求7所述的装置,其中,所述确定所述应用服务是否存在风险信息包括以下至少一项:
所述应用服务在运行时采用了风险函数;以及
所述应用服务在运行时未对所述业务请求中的所述请求参数进行预定处理,
其中,所述预定处理包括验证处理和过滤处理中的至少一个。
9.一种测试设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至6中任一项所述的方法。
10.一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现权利要求1至6中任一项所述的方法。
CN201911297527.4A 2019-12-13 2019-12-13 安全测试方法、装置、测试设备以及介质 Active CN110955899B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911297527.4A CN110955899B (zh) 2019-12-13 2019-12-13 安全测试方法、装置、测试设备以及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911297527.4A CN110955899B (zh) 2019-12-13 2019-12-13 安全测试方法、装置、测试设备以及介质

Publications (2)

Publication Number Publication Date
CN110955899A CN110955899A (zh) 2020-04-03
CN110955899B true CN110955899B (zh) 2022-02-22

Family

ID=69982065

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911297527.4A Active CN110955899B (zh) 2019-12-13 2019-12-13 安全测试方法、装置、测试设备以及介质

Country Status (1)

Country Link
CN (1) CN110955899B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506505A (zh) * 2020-04-13 2020-08-07 北京奇艺世纪科技有限公司 一种测试用例获取方法及装置
CN111708650B (zh) * 2020-06-10 2023-03-28 中国工商银行股份有限公司 一种业务应用系统高可用性分析方法及系统
CN111858375B (zh) * 2020-07-28 2023-09-05 中国工商银行股份有限公司 软件测试方法、装置、电子设备和介质
CN111930603B (zh) * 2020-08-14 2024-07-02 中国工商银行股份有限公司 服务器性能检测方法、装置、系统及介质
CN114205273B (zh) * 2020-08-26 2023-09-15 腾讯科技(深圳)有限公司 系统测试方法、装置和设备及计算机存储介质
CN114024884B (zh) * 2021-11-18 2023-05-12 百度在线网络技术(北京)有限公司 一种测试方法、装置、电子设备及存储介质
CN116545880B (zh) * 2023-04-28 2024-01-30 北京永信至诚科技股份有限公司 一种数字风洞下的业务安全可视化方法及装置
CN116775498A (zh) * 2023-08-21 2023-09-19 小米汽车科技有限公司 软件测试的方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101753315A (zh) * 2008-11-27 2010-06-23 百度在线网络技术(北京)有限公司 DDoS攻击测试方法、装置和系统
CN110213236A (zh) * 2019-05-05 2019-09-06 深圳市腾讯计算机系统有限公司 确定业务安全风险的方法、电子设备及计算机存储介质
CN110390202A (zh) * 2019-07-30 2019-10-29 中国工商银行股份有限公司 用于检测业务逻辑漏洞的方法、装置、系统、设备及介质
CN110472414A (zh) * 2019-07-23 2019-11-19 中国平安人寿保险股份有限公司 系统漏洞的检测方法、装置、终端设备及介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9363284B2 (en) * 2013-12-11 2016-06-07 International Business Machines Corporation Testing web applications for security vulnerabilities with metarequests
CN109428878B (zh) * 2017-09-01 2021-11-23 阿里巴巴集团控股有限公司 漏洞检测方法、检测装置和检测系统
CN110162979A (zh) * 2019-05-27 2019-08-23 北京百度网讯科技有限公司 一种Web API的安全测试方法、装置、电子设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101753315A (zh) * 2008-11-27 2010-06-23 百度在线网络技术(北京)有限公司 DDoS攻击测试方法、装置和系统
CN110213236A (zh) * 2019-05-05 2019-09-06 深圳市腾讯计算机系统有限公司 确定业务安全风险的方法、电子设备及计算机存储介质
CN110472414A (zh) * 2019-07-23 2019-11-19 中国平安人寿保险股份有限公司 系统漏洞的检测方法、装置、终端设备及介质
CN110390202A (zh) * 2019-07-30 2019-10-29 中国工商银行股份有限公司 用于检测业务逻辑漏洞的方法、装置、系统、设备及介质

Also Published As

Publication number Publication date
CN110955899A (zh) 2020-04-03

Similar Documents

Publication Publication Date Title
CN110955899B (zh) 安全测试方法、装置、测试设备以及介质
CN110414242B (zh) 用于检测业务逻辑漏洞的方法、装置、设备及介质
CN110390202B (zh) 用于检测业务逻辑漏洞的方法、装置、系统、设备及介质
CN106294102B (zh) 应用程序的测试方法、客户端、服务器及系统
CN105787364B (zh) 任务的自动化测试方法、装置及系统
CN113114680B (zh) 用于文件上传漏洞的检测方法和检测装置
US10331439B2 (en) Source code transfer control method, computer program therefor, and recording medium therefor
US9747449B2 (en) Method and device for preventing application in an operating system from being uninstalled
CN110362488B (zh) 一种页面测试方法、装置、电子设备及存储介质
CN110928770B (zh) 软件测试的方法、装置、系统、存储介质和电子设备
CN110929264A (zh) 漏洞检测方法、装置、电子设备及可读存储介质
CN110059007B (zh) 系统漏洞扫描方法、装置、计算机设备及存储介质
CN111309620A (zh) 一种游戏协议测试方法、装置、电子设备和存储介质
CN107403112B (zh) 数据校验方法及其设备
CN103914368A (zh) 一种安全软件性能的测试方法、系统及装置
CN110908708B (zh) 一种代码发布方法、装置和系统
CN104050054A (zh) 安装包安装失败的处理方法及原因确定方法及装置
CN109818972B (zh) 一种工业控制系统信息安全管理方法、装置及电子设备
CN115563618A (zh) 一种基于中央计算平台的渗透测试方法及装置
KR101324691B1 (ko) 모바일 악성 행위 어플리케이션 탐지 시스템 및 방법
CN105391714A (zh) 移动应用软件自动化签名和验证方法及装置
CN109871294B (zh) 用于校验数据、处理请求的方法和装置
CN116431519A (zh) 软件测试方法及装置、电子设备和计算机可读存储介质
US12003525B2 (en) Development security operations on the edge of the network
CN115150300A (zh) 车辆安全攻防的管理系统及方法

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