CN112632566B - 漏洞扫描方法和装置、存储介质及电子设备 - Google Patents

漏洞扫描方法和装置、存储介质及电子设备 Download PDF

Info

Publication number
CN112632566B
CN112632566B CN202110242703.5A CN202110242703A CN112632566B CN 112632566 B CN112632566 B CN 112632566B CN 202110242703 A CN202110242703 A CN 202110242703A CN 112632566 B CN112632566 B CN 112632566B
Authority
CN
China
Prior art keywords
scanning
node
task
target
vulnerability
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
CN202110242703.5A
Other languages
English (en)
Other versions
CN112632566A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110242703.5A priority Critical patent/CN112632566B/zh
Publication of CN112632566A publication Critical patent/CN112632566A/zh
Application granted granted Critical
Publication of CN112632566B publication Critical patent/CN112632566B/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)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种漏洞扫描方法和装置、存储介质及电子设备。其中,该方法包括:获取至少一个扫描请求;根据获取到的扫描请求确定当前的扫描数据量;根据扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果,其中,扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点,调度子节点用于根据扫描任务的任务信息中携带的扫描用例生成漏洞检测任务,并将漏洞检测任务及漏洞检测任务的任务状态信息存储至弹性伸缩数据存储队列中,工作子节点用于执行漏洞检测;根据调整结果,使用扫描节点集合中的扫描节点进行漏洞扫描。本发明解决了由于无法根据扫描任务的实际需要进行动态调整所导致的扫描可靠性较低的技术问题。

Description

漏洞扫描方法和装置、存储介质及电子设备
技术领域
本发明涉及计算机领域,具体而言,涉及一种漏洞扫描方法和装置、存储介质及电子设备。
背景技术
Web应用漏洞扫描系统,是被广泛采用的动态应用程序安全测试(DynamicApplication Security Testing,简称为DAST)手段,也是一种主要的云计算SaaS类服务。作为一项云计算SaaS服务,所要扫描的资产数量无法固定,而且对扫描结果的可靠性也有很高的要求。
目前相关技术中常用的方式包括:单体式系统和分布式系统。其中,1)单体式系统,是将所有漏洞依赖的任务调度、资产解析、请求发送等模块打包到一个执行程序中。2)分布式系统,主要采用“总-分”式结构,是将接收到的扫描任务提交到任务调度中心,并由该任务调度中心根据各个分布式代理节点(也可称作工作节点)的负载情况来派发扫描任务,然后在各个代理节点中完成应用漏洞的扫描任务后,再将扫描结果返回至任务调度中心。
但在上述相关技术提供的分布式系统中,各个分布式代理节点允许处理的扫描任务的数量都是预先配置好的,如果根据业务需要实时调整,往往需要人工干预。例如,在SaaS业务场景下,每个时间点待处理的扫描任务的数量是不可预知的。在代理节点的数量已被固定的情况下,当扫描任务数量较少,如低于实际准备的各个代理节点的允许处理量,则会造成节点资源的浪费;而当扫描任务数量较多,如高于允许处理量,则可能会导致扫描速度变慢、耗时增加。
也就是说,在相关技术提供的分布式系统中对应用漏洞进行扫描时,由于无法根据扫描任务的实际需要进行动态调整,使得扫描过程很容易出现资源浪费或负载加重等情况,从而导致难以保证扫描可靠性的问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种漏洞扫描方法和装置、存储介质及电子设备,以至少解决由于无法根据扫描任务的实际需要进行动态调整所导致的扫描可靠性较低的技术问题。
根据本发明实施例的一个方面,提供了一种漏洞扫描方法,包括:获取至少一个扫描请求,其中,上述扫描请求中携带有待处理的扫描任务的任务信息;根据获取到的上述扫描请求确定当前的扫描数据量;根据上述扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果,其中,上述扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点,上述调度子节点用于根据上述扫描任务的任务信息中携带的扫描用例生成漏洞检测任务,并将上述漏洞检测任务及上述漏洞检测任务的任务状态信息存储至弹性伸缩数据存储队列中,上述工作子节点用于根据从上述弹性伸缩数据存储队列中获取到的上述漏洞检测任务执行漏洞检测;根据上述调整结果,使用上述扫描节点集合中的扫描节点进行漏洞扫描。
根据本发明实施例的另一方面,还提供了一种漏洞扫描装置,包括:获取单元,用于获取至少一个扫描请求,其中,上述扫描请求中携带有待处理的扫描任务的任务信息;确定单元,用于根据获取到的上述扫描请求确定当前的扫描数据量;调整单元,用于根据上述扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果,其中,上述扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点,上述调度子节点用于根据上述扫描任务的任务信息中携带的扫描用例生成漏洞检测任务,并将上述漏洞检测任务及上述漏洞检测任务的任务状态信息存储至弹性伸缩数据存储队列中,上述工作子节点用于根据从上述弹性伸缩数据存储队列中获取到的上述漏洞检测任务执行漏洞检测;扫描单元,用于根据上述调整结果,使用上述扫描节点集合中的扫描节点进行漏洞扫描。
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述的漏洞扫描方法。
根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的漏洞扫描方法。
在本发明实施例中,采用获取至少一个扫描请求,其中,上述扫描请求中携带有待处理的扫描任务的任务信息;根据获取到的上述扫描请求确定当前的扫描数据量;根据上述扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果,其中,上述扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点,上述调度子节点用于根据上述扫描任务的任务信息中携带的扫描用例生成漏洞检测任务,并将上述漏洞检测任务及上述漏洞检测任务的任务状态信息存储至弹性伸缩数据存储队列中,上述工作子节点用于根据从上述弹性伸缩数据存储队列中获取到的上述漏洞检测任务执行漏洞检测;根据上述调整结果,使用上述扫描节点集合中的扫描节点进行漏洞扫描的方式,通过根据上述扫描数据量对包括调度子节点和工作子节点的扫描节点集合当前的集合容量进行动态调整,得到调整结果,达到了根据扫描任务的实际需要进行动态调整的目的,从而实现了减少漏洞扫描过程出现资源浪费或负载加重等情况,以及保证漏洞扫描可靠性的技术效果,进而解决了由于无法根据扫描任务的实际需要进行动态调整所导致的扫描可靠性较低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的漏洞扫描方法的应用环境的示意图;
图2是根据本发明实施例的另一种可选的漏洞扫描方法的应用环境的示意图;
图3是根据本发明实施例的一种可选的漏洞扫描方法的流程图;
图4是根据本发明实施例的一种可选的漏洞扫描方法的界面显示示意图;
图5是根据本发明实施例的另一种可选的漏洞扫描方法的界面显示示意图;
图6是根据本发明实施例的一种可选的漏洞扫描方法的版本控制系统界面显示示意图;
图7是根据本发明实施例的一种可选的漏洞扫描方法的过程示意图;
图8是根据本发明实施例的一种可选的漏洞扫描系统架构示意图;
图9是根据本发明实施例的另一种可选的漏洞扫描系统架构示意图;
图10是根据本发明实施例的另一种可选的漏洞扫描方法的界面显示示意图;
图11是根据本发明实施例的又一种可选的漏洞扫描方法的界面显示示意图;
图12是根据相关技术的一种可选的漏洞扫描方法的界面显示示意图;
图13是根据相关技术的另一种可选的漏洞扫描方法的界面显示示意图;
图14是根据本发明实施例的另一种可选的漏洞扫描方法的流程图;
图15是根据本发明实施例的又一种可选的漏洞扫描方法的流程图;
图16是根据本发明实施例的再一种可选的漏洞扫描方法的流程图;
图17是根据本发明实施例的另一种可选的漏洞扫描方法的界面显示示意图;
图18是根据本发明实施例的一种可选的漏洞扫描方法装置的结构示意图;
图19是根据本发明实施例的一种可选的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,针对本发明涉及到的技术术语进行说明;
DAST,Dynamic Application Security Testing,动态应用程序安全测试。是一种黑盒测试技术,是目前应用最广泛、使用最简单的一种Web应用安全测试方法。
Cloud Native,云原生。云原生一种构建和运行应用程序的方法,是一套技术体系和方法论。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。
根据本发明实施例的一个方面,提供了一种漏洞扫描方法,可选地,作为一种可选的实施方式,上述漏洞扫描方法可以但不限于应用于如图1所示的环境中。该应用环境中包括:与用户进行人机交互的终端设备102、网络104、服务器106。用户108与终端设备102之间可以进行人机交互,终端设备102中运行有漏洞扫描应用客户端。上述终端设备102中包括人机交互屏幕1022,处理器1024及存储器1026。人机交互屏幕1022用于呈现待处理的扫描任务的任务信息;处理器1024用于获取在各个应用客户端中触发的扫描请求,其中,扫描请求中携带有待处理的扫描任务的任务信息。存储器1026用于存储获取在各个应用客户端中触发的扫描请求。
此外,服务器106中包括数据库1062及处理引擎1064,数据库1062中用于存储获取至少一个扫描请求,及用于存储漏洞检测任务及漏洞检测任务的任务状态信息。处理引擎1064用于获取在各个应用客户端中触发的扫描请求;根据获取到的扫描请求确定当前的扫描数据量;根据扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果;根据调整结果,使用扫描节点集合中的扫描节点进行漏洞扫描。
具体过程如以下步骤:假设如图1所示终端设备102中运行有漏洞扫描应用客户端,用户108操作人机交互屏幕1022对待处理的扫描任务的任务信息进行管理和操作,如步骤S102,获取至少一个扫描请求,其中,扫描请求中携带有待处理的扫描任务的任务信息;然后执行步骤S104,将上述携带有待处理的扫描任务的任务信息的扫描请求通过网络104发送给服务器106。服务器106接收到该请求后,执行步骤S106-S108,获取上述扫描请求,其中,扫描请求中携带有待处理的扫描任务的任务信息;根据获取到的扫描请求确定当前的扫描数据量;根据扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果,其中,扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点,调度子节点用于根据扫描任务的任务信息中携带的扫描用例生成漏洞检测任务,并将漏洞检测任务及漏洞检测任务的任务状态信息存储至弹性伸缩数据存储队列中,工作子节点用于根据从弹性伸缩数据存储队列中获取到的漏洞检测任务执行漏洞检测;根据调整结果,使用扫描节点集合中的扫描节点进行漏洞扫描。并如步骤S112,通过网络104通知终端设备102,返回扫描进度信息和扫描结果信息。
作为另一种可选的实施方式,本申请上述漏洞扫描的调整方法可以应用于图2所示的应用环境中。如图2所示,用户202与用户设备204之间可以进行人机交互。用户设备204中包含有存储器206和处理器208。本实施例中用户设备204可以但不限于参考执行上述终端设备102所执行的操作,以获取扫描进度信息和扫描结果信息。
可选地,上述终端设备102和用户设备204可以但不限于为手机、平板电脑、笔记本电脑、PC机、车载设备等终端,上述网络104可以包括但不限于无线网络或有线网络。其中,该无线网络包括:WIFI及其他实现无线通信的网络。上述有线网络可以包括但不限于:广域网、城域网、局域网。上述服务器106可以包括但不限于任何可以进行计算的硬件设备。
上述仅是一种示例,本实施例中对此不作任何限定。
为了解决上述技术问题,可选地,作为一种可选的实施方式,如图3所示,本申请提供了一种漏洞扫描方法,上述漏洞扫描方法包括:
S302,获取至少一个扫描请求,其中,扫描请求中携带有待处理的扫描任务的任务信息;
S304,根据获取到的扫描请求确定当前的扫描数据量;
S306,根据扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果,其中,扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点,调度子节点用于根据扫描任务的任务信息中携带的扫描用例生成漏洞检测任务,并将漏洞检测任务及漏洞检测任务的任务状态信息存储至弹性伸缩数据存储队列中,工作子节点用于根据从弹性伸缩数据存储队列中获取到的漏洞检测任务执行漏洞检测;
S308,根据调整结果,使用扫描节点集合中的扫描节点继续进行扫描。
在步骤S302中,实际应用时,获取发送至少一个扫描请求的应用客户端可以包括但不限于移动终端、PC端的应用客户端。服务器获取在各个应用客户端中触发的扫描请求,这里服务器侧可以运行有容器编排系统,在本实施例中,触发扫描请求可以包括但不限于用户点击应用客户端中的确定按键,或通过手势移动动作触发扫描请求。在此不做限定。其中,扫描请求中携带有待处理的扫描任务的任务信息;在本实施例中,如图4所示,任务信息可以包括但不限于传输协议(如:HTTP、HTTPS等)、域名(如:www.xxx.com)、端口号(如:80)、请求路径名称(如:index.php)、GET/POST参数(如:
Figure 684536DEST_PATH_IMAGE001
)、登录态、域名绑定的IP信息、要扫描的漏洞类型(如SQL注入漏洞或XSS漏洞)和扫描频率,例如40个请求/秒等,在此不做限定。
在步骤S304中,实际应用时,根据获取到的扫描请求确定当前的扫描数据量,这里扫描数据量可以包括但不限于对上述多个域名或多个端口号或请求路径名称等组成的任务数量。例如,HTTP://www.xxx.com:80.index.php,可以作为多个扫描任务中其中的之一,在此不做限定。
在步骤S306中,实际应用时,扫描节点集合中的每个扫描节点中均包括调度子节点和工作子节点,因此可以达到去中心化的效果,减少后台服务器计算的开销;在本实施例中,调度子节点可以包括但不限于任务队列推送模块,即将漏洞扫描系统应用程序接口(Application porgram Interface,API)派发的任务存储至缓存队列中;任务获取模块,该模块可以持续从缓存队列中获取扫描任务;以及任务状态信息上报模块,该模块可以将工作子节点上报的任务信息存储至键字(Key-Value,简称KV)缓存中,或数据库(Data Base,DB)存储。工作子节点为负责执行扫描任务,发送请求并根据相应内容判断漏洞是否存在。调度子节点用扫描用例生成漏洞检测任务,也就是说将扫描用例拼接进原始的待检测目标中,相当于扫描任务的分裂。例如:原始待检测的目标统一资源定位系统(UniformResource Locator,URL)是http:///www.qq.com
Figure 788627DEST_PATH_IMAGE002
,经过分解,会根据预定义策略,形成两条新的扫描任务会根据预定义策略(URL的生成算法格式),形成两条新的扫描任务:http:///www.qq.com
Figure 771627DEST_PATH_IMAGE003
和http:///www.qq.com
Figure 370098DEST_PATH_IMAGE004
<payload>。弹性伸缩数据存储队列可以为可弹性伸缩的数据存储基础设施。该设施可以单独存储任务状态信息剥离状态,将有利于调整每个扫描节点的节点数量,可以直接进行增加或减少操作。
在步骤S308中,实际应用时,根据调整结果,使用扫描节点集合中的扫描节点继续进行漏洞扫描,在本实施例中,也就是说,通过调整结果中的动态调整扫描节点,可以避免扫描过程出现资源浪费或负载加重等情况。
在本发明实施例中,采用获取至少一个扫描请求,其中,上述扫描请求中携带有待处理的扫描任务的任务信息;根据获取到的上述扫描请求确定当前的扫描数据量;根据上述扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果,其中,上述扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点,上述调度子节点用于根据上述扫描任务的任务信息中携带的扫描用例生成漏洞检测任务,并将上述漏洞检测任务及上述漏洞检测任务的任务状态信息存储至弹性伸缩数据存储队列中,上述工作子节点用于根据从上述弹性伸缩数据存储队列中获取到的上述漏洞检测任务执行漏洞检测;根据上述调整结果,使用所述扫描节点集合中的扫描节点进行漏洞扫描的方式,通过根据上述扫描数据量对包括调度子节点和工作子节点的扫描节点集合当前的集合容量进行动态调整,得到调整结果,达到了根据扫描任务的实际需要进行动态调整的目的,从而实现了减少漏洞扫描过程出现资源浪费或负载加重等情况,以及保证漏洞扫描可靠性的技术效果,进而解决了由于无法根据扫描任务的实际需要进行动态调整所导致的扫描可靠性较低的技术问题。
在一实施例中,步骤S306包括:在上述扫描数据量大于或等于目标阈值的情况下,在上述扫描节点集合中动态创建第一扫描节点,并自动在域名服务系统中为上述第一扫描节点进行注册登记,其中,上述域名服务系统用于记录所述扫描节点集合中各个扫描节点的节点连接信息;在本实施例中,扫描数据量可以为请求量,或所消耗依赖的资源量,第一扫描节点可以为一个或多个;例如,可以通过注册两个节点,其中一个节点复责分配IP和端口,再将IP和端口注册到名字服务系统的域名下。如图5所示,在扫描节点集合502中自动创建两个第一扫描节点,包括ID为100的第一扫描节点和ID为200的第一扫描节点,域名服务系统用于记录上述扫描节点的节点连接信息,如IP地址,端口号,域名协议等,此外还要分配权重,通过该权重在任务派发时根据权重大小进行派发。
在上述扫描数据量小于上述目标阈值的情况下,从上述扫描节点集合中动态删减第二扫描节点,并从上述域名服务系统中自动删除上述第二扫描节点已注册的信息。
在一实施例中,在上述扫描节点集合中动态创建第一扫描节点,并自动在域名服务系统中为上述第一扫描节点进行注册登记包括:拉取预先构建的容器镜像,其中,上述容器镜像中包括扫描运行时的环境构建脚本及扫描运行时所需资源;基于上述容器镜像创建上述第一扫描节点;在上述域名服务系统中记录上述第一扫描节点的上述节点连接信息,及为上述第一扫描节点分配的任务派发权重,其中,上述任务派发权重用于确定为上述第一扫描节点派发扫描任务的优先级。如图6所述,预先构建的容器镜像600中包括运行资源集合602,脚本资源集合604,运行资源集合606。
这里可以通过持续集成平台自动拉取版本控制系统中的运行资源集合602、运行资源集合606及脚本资源集合604中的Docker文件,自动构建镜像。版本控制系统用于存储构建的容器镜像600。这里的持续集成平台可涉及不同的解决方案,例如:Jenkins、GitLabCI、Strider等。构建的操作也可以是自动触发的,条件可以是当版本控制系统产生完成操作以提交的行为(Commit)、合并请求(Merge Requests)时,这里的合并请求为多人处理数据,合并存储处理结果。
在漏洞扫描任务执行过程中,如图7所示,执行详情中,在第一阶段,可以根据预设条件构建自动扫描触发条件,也可以选择手动来触发扫描任务。在第二阶段,先要构建执行环境,例如运行系统LINUX等,执行拉取命令,拉取预先构建的容器镜像,然后构建并推送Docker文件镜像。
在一实施例中,在上述拉取预先构建的容器镜像之前,还包括:配置上述扫描运行时的环境构建脚本及上述扫描运行时所需资源;将上述扫描运行时的环境构建脚本及上述扫描运行时所需资源存储至版本控制系统,其中,上述版本控制系统用于管理不同版本的环境构建脚本和运行资源;在达到构建触发条件的情况下,从上述版本控制系统自动拉取上述扫描运行时的环境构建脚本及上述扫描运行时所需资源,以自动构建上述容器镜像,其中,上述构建触发条件包括以下之一:在上述版本控制系统中触发提交操作、在上述版本控制系统中触发版本合并操作。在本实施例中,提交操作为在版本控制系统中,完成编写后的提交操作;版本合并操作为请求在版本控制系统中,对不同类型内容进行合并的操作。
在一实施例中,在上述扫描数据量小于上述目标阈值的情况下,从上述扫描节点集合中动态删减第二扫描节点,并从上述域名服务系统中自动删除上述第二扫描节点已注册的信息包括:确定上述扫描节点集合中各个扫描节点的工作负载量;根据上述工作负载量确定出待删减的上述第二扫描节点;从上述扫描节点集合中删减上述第二扫描节点;在上述域名服务系统中查找出与上述第二扫描节点的标识对应的已注册的信息,并删除与上述第二扫描节点的标识对应的已注册的信息。在本实例中,例如,如图5所示,第二扫描节点为ID为200的扫描节点,根据攻击负载量确定出待删减的第二扫描节点后,查找该第二扫描节点的标识为200对应的已注册信息为实例IP为B.B.B.B,端口号为9222,权重为60,协议为http,状态为健康,隔离状态为否,然后将上述已注册的信息进行删除。
在一实施例中,利用上述调整结果中的扫描节点继续进行扫描包括:根据上述域名服务系统中所记录的各个扫描节点各自对应的任务派发权重,将获取到的待处理的目标扫描任务派发至目标扫描节点;在上述目标扫描节点中对上述目标扫描任务进行处理。
在本实例中,如图5所示,获取到的待处理的目标扫描任务包括ID为100和200的两个扫描节点。ID为100的任务节点的任务派发权重为40,ID为200的扫描节点的任务派发权重为60,因此,可以先将ID为200的扫描节点派发至目标扫描节点。这里,域名服务新按权重进行任务派发,和上述的弹性伸缩调整节点的执行过程是异步执行的,因此可以节约服务器的计算资源,提高漏洞扫描效率。
在一实施例中,在上述目标扫描节点中对上述目标扫描任务进行处理包括:通过上述目标扫描节点中的目标调度子节点,生成上述目标扫描任务对应的目标漏洞检测任务,并剥离上述目标漏洞检测任务的任务状态信息;将上述目标漏洞检测任务及其任务状态信息存储至上述弹性伸缩数据存储队列中;在本实施例中,如图8所示,通过目标调度子节点,生成目标漏洞检测任务,然后将目标漏洞检测任务中的任务状态信息字段进行分离后,将分离后的任务状态信息字段以及分离后的目标漏洞检测任务存储弹性伸缩数据存储队列中。
在上述目标扫描节点中的目标工作子节点从上述弹性伸缩数据存储队列中拉取到上述目标漏洞检测任务的情况下,根据上述目标漏洞检测任务生成漏洞检测请求;将上述漏洞检测请求发送服务器,以获取上述服务器返回的检测结果;将上述检测结果作为上述目标漏洞检测任务的任务结果状态信息发送给上述目标调度子节点,以使上述目标调度子节点将上述任务结果状态信息存储至上述弹性伸缩数据存储队列中与上述目标漏洞检测任务对应的存储位置。
上述通过上述目标扫描节点中的目标调度子节点,生成上述目标扫描任务对应的目标漏洞检测任务,并剥离上述目标漏洞检测任务的任务状态信息包括: 通过上述目标调度子节点分解上述目标扫描任务的任务信息,得到上述目标扫描任务中携带的目标扫描用例;将上述目标扫描用例按照不同的漏洞检测类型拼接生成上述漏洞检测任务;提取上述漏洞检测任务的任务状态字段;将上述漏洞检测任务及上述任务状态字段存储至上述弹性伸缩数据存储队列中。在本实施例中,例如,目标扫描用例可以为N个,按照预设的漏洞检测类型可以将上述多个N个目标扫描用例拼接成M个新的扫描任务。然后将给M个新的扫描任务及其任务状态字段存储至弹性伸缩数据存储队列中。
此外,在另一实施例中,也可以直接将上述M个新的扫描任务传递给工作子节点,也就是说将将N个目标送用例进行分解后的任务可以直接批量传递给工作子节点进行扫描。
在另一实施例中,将小于M数量的漏洞检测任务传递给工作子节点,将剩余漏洞检测任务进行存储。
在一实施例中,步骤S308之后还包括:获取上述扫描节点集合当前的扫描进度信息及扫描结果信息;将上述扫描进度信息及上述扫描结果信息推送至上述应用客户端,以在上述应用客户端中进行展示。如图10所示,在应用客户端中,显示扫描任务进度,包括任务名和要扫描的网址,漏洞问题可以分为高危,中危和低危,图10中显示的扫描进度为50%。当扫描任务结束后,如图11所示,会显示扫描完成状态以及已发现问题的数量,以及发现问题属于高危类型。
在本发明实施例中,采用至少一个扫描请求,其中,上述扫描请求中携带有待处理的扫描任务的任务信息;根据获取到的上述扫描请求确定当前的扫描数据量;根据上述扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果,其中,上述扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点,上述调度子节点用于根据上述扫描任务的任务信息中携带的扫描用例生成漏洞检测任务,并将上述漏洞检测任务及上述漏洞检测任务的任务状态信息存储至弹性伸缩数据存储队列中,上述工作子节点用于根据从上述弹性伸缩数据存储队列中获取到的上述漏洞检测任务执行漏洞检测;根据上述调整结果,使用上述扫描节点集合中的扫描节点进行漏洞扫描的方式,通过根据上述扫描数据量对包括调度子节点和工作子节点的扫描节点集合当前的集合容量进行动态调整,得到调整结果,达到了根据扫描任务的实际需要进行动态调整的目的,从而实现了减少漏洞扫描过程出现资源浪费或负载加重等情况,以及保证漏洞扫描可靠性的技术效果,进而解决了由于无法根据扫描任务的实际需要进行动态调整所导致的扫描可靠性较低的技术问题。
相关技术中提供的漏洞扫描系统主要分为单体式和分布式Web应用漏洞扫描系统两大类,总结如下:
1. 单体式。将所有漏洞依赖的任务调度、资产解析、请求发送等模块打包到一个执行程序,类似解决方案有Acunetix Web Vulnerability Scanner、Burp Suites等。
2. 分布式。常见的分布式扫描器的方案主要采用是“总-分”式结构,如图12所示:扫描任务提交到服端后,将扫描任务提交到任务调度中心,也就是总-分结构中的总调度,总调度根据各个分布式节点的负载情况,进行任务的派发。方式有两种:主动推送和被动响应两种。
主动推送策略是通过监控扫描代理节点的扫描状态,进而决定调度任务的分发。例如,通过计算代理节点的历史扫描任务的扫描时间,以及当前的工作负载,决定分配扫描任务的个数。另外,还可以根据代理节点的CPU内核数进行任务分配,也可以通过基于负载均衡算法,随机分发到代理节点上。这里如图13所示,步骤S1302,根据每个扫描引擎CPU的核数分配相应的扫描任务个数;步骤S1304,获取每个扫描引擎的历史扫描任务;步骤S1306,根据历史扫描任务确定每个扫描引擎的目标扫描个数,步骤S1308,给每个扫描引擎分配预期目标扫描个数相同的扫描任务。
被动拉取的策略是代理节点(又称Worker)从调度中心主动拿任务,多个worker去调度中心争抢任务,调度中心根据请求的先后顺序进行分发。而真正扫描操作由分布式代理节点(又称Worker节点)执行,流程是:将定制的、带有扫描用例(如:http://www.qq.com
Figure 902580DEST_PATH_IMAGE002
<扫描用例>)的请求发送到目标网站后,根据响应内容和匹配规则,判断是否存在漏洞。 最后,将扫描的结果上传到调度中心。
单体式Web应用漏洞扫描系统,一方面,在默认场景下无法满足大规模的URL资产扫描;另一方面,使用和维护成本高,在需要变更时,往往需要重新打包、发布。
而相关的分布式扫描架构均存在弊端:节点扩缩容无法根据业务需要实时调整,往往需要人工干预。例如,代理节点部署了2台,由于待扫描的资产增加,为保证扫描速度,需要将节点扩容到4台。此时,可能会面临三方面的问题:
1) 无法根据扫描需要,实时动态调节代理节点个数,产生资源浪费。例如,SaaS业务场景下,每个时间点进行的扫描任务数是不可预知的。如果固定的代理节点,当扫描任务数特别少,低于实际准备的节点数量,则造成了资源的浪费;如果任务数特别多,固定节点无法承载会导致扫描速度变慢、耗时增加。
2) 系统升级、资源扩容等操作时,需要人工干预,成本高且可靠性低。
3) 降低服务可靠性,影响用户口碑。停机升级意味着服务不可用,如果生产环境每天都有用户使用,那么扩容升级需要通知用户暂停服务。
为了解决上述技术问题,基于上述实施例,在一实施例中,如图14所示,上述漏洞扫描的调整方法包括:步骤 S1402,用户向系统提交扫描目标及检测方式;步骤 S1404,系统调用本发明装置检查漏洞并实时、动态向用户反馈检查进度;步骤 S1406,检查完成后展示结果及报告供用户查阅。
在步骤S1402中:用户向系统提交扫描目标及检查方式,包括但不限于如表(1)所展示的内容。
Figure 459463DEST_PATH_IMAGE005
在步骤S1404中,如图10所示,系统调用本发明装置检查漏洞,并根据分布式节点上报的信息,实时、动态向用户反馈检查进展;
在步骤S1406中,如图11所示,检查完成,并根据分布式节点上报的信息,展示扫描结果及报告供用户查阅。
基于上述实施例,在一实施例中,上述漏洞扫描的调整方法包括:分布式弹性伸缩Web应用漏洞扫描系统架构,如图8所示,上述架构中的各组成部分包括如下内容:
API节点:用于承接产品侧系统与扫描节点,负责创建扫描任务、配置扫描参数等,可根据需要弹性伸缩。
名字服务:用于根据策略动态将API模块派发的扫描任务,分配给扫描节点。
扫描节点:由调度节点和Worker节点组成,可根据需要,弹性伸缩。
调度子节点:承接弹性伸缩存储基础设施与Worker节点,包含任务队列推送(将API节点派发的任务上至弹性伸缩缓存队列中)、任务获取(持续从弹性伸缩队列中获取扫描任务)、任务状态信息上报(将Worker节点上报的任务状态信息存储至弹性伸缩KV缓存或弹性伸缩DB存储中)三个子模块。
Worker子节点:负责执行扫描任务,发送请求并根据响应内容判断漏洞是否存在。
可弹性伸缩的数据存储基础设施:用于存储Web应用漏洞扫描系统剥离的有状态任务信息,扮演扫描任务“队列池”的角色。形式包括但不限于:KV缓存、DB数据库、对象存储、大数据平台、消息队列等。
图8中的各个工序流程如下所示:
工序1:产品侧提交扫描任务到API节点,该节点随即调用名字服务。
工序2:名字服务根据策略动态将API模块派发的扫描任务,分配给扫描节点。
工序3:扫描节点上的调度子节点,将派发到的扫描任务存放到可弹性伸缩的数据存储基础设施上的缓存队列中。同时,调度子节点还会持续从队列获取待扫描的任务。
工序4:Worker子节点会持续从调度子节点拉取扫描任务,包含:待检查的资产信息、登录态、域名绑定的IP信息、要扫描的漏洞类型、扫描频率等信息。同时,执行扫描任务,发送请求并根据响应内容判断漏洞是否存在。
工序5:Worker子节点将扫描任务状态信息上报至调度子节点,供最终在产品侧展示。包括:扫描是否成功、是否发现漏洞等信息。
工序6:调度子节点将任务信息上报至可弹性伸缩的数据存储基础设施存储,并最终在产品侧展示。而且,该工序也可由Worker子节点直接上报。
在一实施例中,上述工序3、4、5、6中涉及的扫描节点(调度节点+Worker节点)与可弹性伸缩的数据存储基础设施关系如图9所示,调度节点又分为3个子模块:
1.任务分解与队列推送模块:
扫描任务是指Worker节点要执行的单次检查。
任务分解是指将扫描用例拼接进原始的待检测目标中,类似扫描任务的分裂。如:原始待检测的目标URL是http:///www.qq.com
Figure 195338DEST_PATH_IMAGE004
,经过分解,会根据预定义策略,形成两条新的扫描任务,新任务为:http:///www.qq.com
Figure 863080DEST_PATH_IMAGE006
、http:///www.qq.com
Figure 718909DEST_PATH_IMAGE004
<payload>。在应用场景下,分解后的任务可以直接批量传递给Worker节点扫描,或存储至可弹性伸缩的数据存储基础设施中。
队列推送是指将扫描任务存储至可弹性伸缩的数据存储基础设施的队列中。
2.任务获取模块。是指从可弹性伸缩的数据存储基础设施获取要执行的扫描任务。这个任务可以是由其他扫描节点上报的。
3.任务状态信息上报模块。将扫描是否成功、是否发现漏洞等信息存储至可弹性伸缩的数据存储基础设施中,供后续在产品侧展示。
图9中的子工序包括如下内容:
子工序1:任务分解与队列推送模块将API节点派发的扫描任务上报至可弹性伸缩的数据存储基础设施的队列中。在某些场景下,也可将分解出的新扫描任务一并上报。简单来说,扫描节点不直接处理API节点派发的任务,只做处理和上报。
子工序2:任务获取模块持续从队列获取待扫描的任务。换言之,处理和上报扫描任务的同时,也会持续从存储基础设施持续拉取扫描任务,而这个任务可能是别的扫描节点上报的(体现了分布式的特性)。
子工序3:Worker子节点持续从调度子节点获取扫描任务。
子工序4:Worker子节点将扫描任务状态信息上报至调度子节点,供最终在产品侧展示。
子工序5: 调度子节点将任务信息上报至可弹性伸缩的数据存储基础设施存储,并最终在产品侧展示。
在一实施例中,基于上述架构,Web应用漏洞扫描系统就能够灵活地根据扫描量,自动弹性伸缩。当需要弹性伸缩时,可以通过如图15所示的流程进行,在图15中,步骤S1502,容器编排系统拉取容器镜像并创建工作服装节点,步骤S1504,将新节点注册至名字服务系统。
在步骤S1502中,当需要缩、扩容时,容器编排系统自动拉取容器镜像并创建工作负载节点。其中,容器编排系统的解决方案,包括但不限于:K8S、Swarm、Amazon ElasticContainer Service等。此外,容器编排系统的缩、扩容策略可基于CPU、内存、带宽等选取。
在步骤S1504中,如图5所示,容器编排系统实时、自动将新节点注册至名字服务系统。如节点ID为100和200的两个不同新节点。
在一实施例中,各模块弹性伸缩容过程中涉及的容器镜像是预先构建并存储在托管服务中的。如图16所示,步骤S1602,编写DockerfileL;步骤S1604,与相关资源一起托管至版本控制系统。步骤S1606,持续集成平台自动拉取并构建镜像。步骤S1608,推送至容器镜像管理平台存储。
步骤S1602中,编写容器完整运行时环境构建脚本,如:Dockerfile。其中包含除了应用程序本身之外,运行时所需的全部依赖、类库、其他二进制文件、配置文件等,并统一封装在被称为容器镜像的包中。Dockerfile中包含使用的基础操作环境、依赖项、启动后要执行的命令、网络策略等等。
步骤S1604中,将编写好的容器完整运行时环境构建脚本,及其涉及的资源,一同托管至版本控制系统。这里的版本控制系统可涉及不同的解决方案,例如:基于Git的Gitlab、Github等,或SVN等。示例如下:
步骤S1606中,持续集成平台,自动拉取版本控制系统中的运行时所需资源及运行时环境构建脚本Docker,自动构建镜像。这里的持续集成平台可涉及不同的解决方案,例如:Jenkins、GitLab CI、Strider等。构建的操作也可以是自动触发的,条件可以是当版本控制系统产生提交(Commit)、合并请求(Merge Requests)时。
步骤S1608中,如图17所示,将步骤S1606中构建产生的工件(Artifact)推送至容器镜像管理平台(项目仓库)储存,供漏洞扫描系统升级、或缩扩容时使用。
在本发明实施例中,能实现去中心化,与已公开总-分结构方案不同,本方案将任务调度节点下沉,将其与Worker节点封装在一个容器服务实例中。此时,任务调度节点类似Worker节点的边车(sidecar)。还能实现系统“无状态”化;在分布式系统中,“有状态”意味着一个用户的请求必须被提交到保存有其相关状态信息的服务器上,否则这些请求可能无法被理解,导致服务器端无法对用户请求进行自由调度。大部分分布式扫描都是基于总分结构,需要一个总的调度中心去处理和分发扫描任务,这个总的调度中心就是一个有状态的节点,每次任务必须在该节点上处理,如果不做处理,直接扩容的话,每次请求就必须和特定的节点关联;这种总分结构在大规模的扫描场景下不便于做横向伸缩。
本发明实施例中,无状态改造是指将原本有状态的组件,通过将状态信息保存在可弹性伸缩的数据存储基础设施中,如KV缓存、DB数据库、对象存储、大数据平台、消息队列等,进而将有状态的信息从有状态的组件中剥离出去,最终改造为无状态的组件的过程。原因是:状态分为分发、处理、存储几个过程,如果对于一个用户的所有的信息都保存在一个进程中,则从分发阶段,就必须将这个用户分发到这个进程,否则无法对这个用户进行处理,然而当一个进程压力很大的时候,根本无法扩容,新启动的进程根本无法处理那些保存在原来进程的用户的数据,不能分担压力。
本发明实施例中,系统能够灵活地根据扫描量,实时自动扩、缩容。例如,当扫描的代理节点负载高的时候扩容,负载低的缩容,降低系统运维成本。
本发明实例中,不能能够能更好地适应实时变化的扫描需求,动态调整扫描系统的规模,有效节省系统运维成本;将漏洞扫描系统的各模块解耦,去中心化,封装为无状态的微服务模块。不仅能便于各模块的升级维护,也能降低单点故障对整体可靠性带来的影响。进而提升系统的韧性和可扩展性,保证漏洞扫描的效果。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的另一个方面,还提供了一种用于实施上述漏洞扫描方法的漏洞扫描装置。如图18所示,该装置包括:
获取单元1802,用于获取至少一个扫描请求,其中,所述扫描请求中携带有待处理的扫描任务的任务信息;
确定单元1804,用于根据获取到的上述扫描请求确定当前的扫描数据量;
调整单元1806,用于根据上述扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果,其中,上述扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点,上述调度子节点用于根据上述扫描任务的任务信息中携带的扫描用例生成漏洞检测任务,并将上述漏洞检测任务及上述漏洞检测任务的任务状态信息存储至弹性伸缩数据存储队列中,上述工作子节点用于根据从上述弹性伸缩数据存储队列中获取到的上述漏洞检测任务执行漏洞检测;
扫描单元1808,用于根据上述调整结果,使用扫描节点集合中的扫描节点进行漏洞扫描。
在本发明实施例中,获取发送至少一个扫描请求的应用客户端可以包括但不限于移动终端、PC端的应用客户端。获取在各个应用客户端中触发的扫描请求,在本实施例中,触发扫描请求可以包括但不限于用户点击应用客户端中的确定按键,或通过手势移动动作触发扫描请求。在此不做限定。其中,扫描请求中携带有待处理的扫描任务的任务信息;在本实施例中,如图4所示,任务信息可以包括但不限于传输协议(如:HTTP、HTTPS等)、域名(如:www.xxx.com)、端口号(如:80)、请求路径名称(如:index.php)、GET/POST参数(如
Figure 446694DEST_PATH_IMAGE004
)、登录态、域名绑定的IP信息、要扫描的漏洞类型(如SQL注入漏洞或XSS漏洞)和扫描频率,例如40个请求/秒等。
在本发明实施例中,根据获取到的扫描请求确定当前的扫描数据量,这里扫描数据量可以包括但不限于对上述多个域名或多个端口号或请求路径名称等组成的任务数量。例如,HTTP://www.xxx.com:80.index.php,可以作为多个扫描任务中其中的之一,在此不做限定。
在本发明实施例中,扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点;在本实施例中,调度子节点可以包括但不限于任务队列推送模块,即将漏洞扫描系统应用程序接口(Application porgram Interface,API)派发的任务存储至缓存队列中;任务获取模块,该模块可以持续从缓存队列中获取扫描任务;以及任务状态信息上报模块,该模块可以将工作子节点上报的任务信息存储至键字(Key-Value,简称KV)缓存中,或数据库(Data Base,DB)存储。工作子节点为负责执行扫描任务,发送请求并根据相应内容判断漏洞是否存在。
在本发明实施例中,根据上述调整结果,使用扫描节点集合中的扫描节点进行漏洞扫描,在本实施例中,也就是说,通过调整结果中的动态调整扫描节点,避免了扫描过程出现资源浪费或负载加重等情况。
本实施例的其他实例可以参见上述实施例,在此不做赘述。
在本发明实施例中,采用获取至少一个扫描请求,其中,上述扫描请求中携带有待处理的扫描任务的任务信息;根据获取到的上述扫描请求确定当前的扫描数据量;根据上述扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果,其中,上述扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点,上述调度子节点用于根据上述扫描任务的任务信息中携带的扫描用例生成漏洞检测任务,并将上述漏洞检测任务及上述漏洞检测任务的任务状态信息存储至弹性伸缩数据存储队列中,上述工作子节点用于根据从上述弹性伸缩数据存储队列中获取到的上述漏洞检测任务执行漏洞检测;根据上述调整结果,使用扫描节点集合中的扫描节点进行漏洞扫描的方式,通过根据上述扫描数据量对包括调度子节点和工作子节点的扫描节点集合当前的集合容量进行动态调整,得到调整结果,达到了根据扫描任务的实际需要进行动态调整的目的,从而实现了减少漏洞扫描过程出现资源浪费或负载加重等情况,以及保证漏洞扫描可靠性的技术效果,进而解决了由于无法根据扫描任务的实际需要进行动态调整所导致的扫描可靠性较低的技术问题。
根据本发明实施例的又一个方面,还提供了一种用于实施上述漏洞扫描的电子设备,该电子设备可以是图1所示的终端设备为例来说明。如图19所示,该电子设备包括存储器1902和处理器1904,该存储器1902中存储有计算机程序,该处理器1904被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取至少一个扫描请求,其中,扫描请求中携带有待处理的扫描任务的任务信息;
S2,根据获取到的扫描请求确定当前的扫描数据量;
S3,根据扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果,其中,扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点,调度子节点用于根据扫描任务的任务信息中携带的扫描用例生成漏洞检测任务,并将漏洞检测任务及漏洞检测任务的任务状态信息存储至弹性伸缩数据存储队列中,工作子节点用于根据从弹性伸缩数据存储队列中获取到的漏洞检测任务执行漏洞检测;
S4,根据调整结果,使用扫描节点集合中的扫描节点进行漏洞扫描。
可选地,本领域普通技术人员可以理解,图19所示的结构仅为示意,电子装置电子设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图19其并不对上述电子装置电子设备的结构造成限定。例如,电子装置电子设备还可包括比图19中所示更多或者更少的组件(如网络接口等),或者具有与图19所示不同的配置。
其中,存储器1902可用于存储软件程序以及模块,如本发明实施例中的漏洞扫描方法和装置对应的程序指令/模块,处理器1904通过运行存储在存储器1902内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的漏洞扫描方法。存储器1902可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1902可进一步包括相对于处理器1904远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1902具体可以但不限于用于存储扫描进度信息和扫描结果等信息。作为一种示例,如图19所示,上述存储器1902中可以但不限于包括上述漏洞扫描装置中的获取单元1802,确定单元1804,调整单元1806和扫描单元1808。此外,还可以包括但不限于上述漏洞扫描装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置1906用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1906包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1906为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:显示器1908,用于显示上述扫描进度信息和扫描结果信息;和连接总线1910,用于连接上述电子设备中的各个模块部件。
在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述漏洞扫描方法。其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取至少一个扫描请求,其中,扫描请求中携带有待处理的扫描任务的任务信息;
S2,根据获取到的扫描请求确定当前的扫描数据量;
S3,根据扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果,其中,扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点,调度子节点用于根据扫描任务的任务信息中携带的扫描用例生成漏洞检测任务,并将漏洞检测任务及漏洞检测任务的任务状态信息存储至弹性伸缩数据存储队列中,工作子节点用于根据从弹性伸缩数据存储队列中获取到的漏洞检测任务执行漏洞检测;
S4,根据调整结果,使用扫描节点集合中的扫描节点进行漏洞扫描。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (12)

1.一种漏洞扫描方法,其特征在于,包括:
获取至少一个扫描请求,其中,所述扫描请求中携带有待处理的扫描任务的任务信息;
根据获取到的所述扫描请求确定当前的扫描数据量;
根据所述扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果,其中,所述扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点,所述调度子节点用于根据所述扫描任务的任务信息中携带的扫描用例生成漏洞检测任务,剥离所述漏洞检测任务的任务状态信息;并将所述漏洞检测任务及所述漏洞检测任务的任务状态信息存储至弹性伸缩数据存储队列中,所述工作子节点用于根据从所述弹性伸缩数据存储队列中获取到的所述漏洞检测任务执行漏洞检测;
根据所述调整结果,使用所述扫描节点集合中的扫描节点进行漏洞扫描。
2.根据权利要求1所述的方法,其特征在于,根据所述扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果包括:
在所述扫描数据量大于或等于目标阈值的情况下,在所述扫描节点集合中动态创建第一扫描节点,并自动在域名服务系统中为所述第一扫描节点进行注册登记,其中,所述域名服务系统用于记录所述扫描节点集合中各个扫描节点的节点连接信息;
在所述扫描数据量小于所述目标阈值的情况下,从所述扫描节点集合中动态删减第二扫描节点,并从所述域名服务系统中自动删除所述第二扫描节点已注册的信息。
3.根据权利要求2所述的方法,其特征在于,在所述扫描节点集合中动态创建第一扫描节点,并自动在域名服务系统中为所述第一扫描节点进行注册登记包括:
拉取预先构建的容器镜像,其中,所述容器镜像中包括扫描运行时的环境构建脚本及扫描运行时所需资源;
基于所述容器镜像创建所述第一扫描节点;
在所述域名服务系统中记录所述第一扫描节点的所述节点连接信息,及为所述第一扫描节点分配的任务派发权重,其中,所述任务派发权重用于确定为所述第一扫描节点派发扫描任务的优先级。
4.根据权利要求3所述的方法,其特征在于,在所述拉取预先构建的容器镜像之前,还包括:
配置所述扫描运行时的环境构建脚本及所述扫描运行时所需资源;
将所述扫描运行时的环境构建脚本及所述扫描运行时所需资源存储至版本控制系统,其中,所述版本控制系统用于管理不同版本的环境构建脚本和运行资源;
在达到构建触发条件的情况下,从所述版本控制系统自动拉取所述扫描运行时的环境构建脚本及所述扫描运行时所需资源,以自动构建所述容器镜像,其中,所述构建触发条件包括以下之一:在所述版本控制系统中触发提交操作、在所述版本控制系统中触发版本合并操作。
5.根据权利要求2所述的方法,其特征在于,在所述扫描数据量小于所述目标阈值的情况下,从所述扫描节点集合中动态删减第二扫描节点,并从所述域名服务系统中自动删除所述第二扫描节点已注册的信息包括:
确定所述扫描节点集合中各个扫描节点的工作负载量;
根据所述工作负载量确定出待删减的所述第二扫描节点;
从所述扫描节点集合中删减所述第二扫描节点;
在所述域名服务系统中查找出与所述第二扫描节点的标识对应的已注册的信息,并删除与所述第二扫描节点的标识对应的已注册的信息。
6.根据权利要求2所述的方法,其特征在于,所述根据所述调整结果,使用所述扫描节点集合中的扫描节点进行漏洞扫描,包括:
根据所述域名服务系统中所记录的各个扫描节点各自对应的任务派发权重,将获取到的待处理的目标扫描任务派发至目标扫描节点;
在所述目标扫描节点中对所述目标扫描任务进行处理。
7.根据权利要求6所述的方法,其特征在于,在所述目标扫描节点中对所述目标扫描任务进行处理包括:
通过所述目标扫描节点中的目标调度子节点,生成所述目标扫描任务对应的目标漏洞检测任务,并剥离所述目标漏洞检测任务的任务状态信息;将所述目标漏洞检测任务及其任务状态信息存储至所述弹性伸缩数据存储队列中;
在所述目标扫描节点中的目标工作子节点从所述弹性伸缩数据存储队列中拉取到所述目标漏洞检测任务的情况下,根据所述目标漏洞检测任务生成漏洞检测请求;将所述漏洞检测请求发送服务器,以获取所述服务器返回的检测结果;将所述检测结果作为所述目标漏洞检测任务的任务结果状态信息发送给所述目标调度子节点,以使所述目标调度子节点将所述任务结果状态信息存储至所述弹性伸缩数据存储队列中与所述目标漏洞检测任务对应的存储位置。
8.根据权利要求7所述的方法,其特征在于,所述通过所述目标扫描节点中的目标调度子节点,生成所述目标扫描任务对应的目标漏洞检测任务,并剥离所述目标漏洞检测任务的任务状态信息包括:
通过所述目标调度子节点分解所述目标扫描任务的任务信息,得到所述目标扫描任务中携带的目标扫描用例;
将所述目标扫描用例按照不同的漏洞检测类型拼接生成所述漏洞检测任务;
提取所述漏洞检测任务的任务状态字段;
将所述漏洞检测任务及所述任务状态字段存储至所述弹性伸缩数据存储队列中。
9.根据权利要求1至7中任一项所述的方法,其特征在于,在所述根据所述调整结果,使用所述扫描节点集合中的扫描节点进行漏洞扫描之后,还包括:
获取所述扫描节点集合当前的扫描进度信息及扫描结果信息;
将所述扫描进度信息及所述扫描结果信息推送至应用客户端,以在所述应用客户端中进行展示。
10.一种漏洞扫描装置,其特征在于,包括:
获取单元,用于获取至少一个扫描请求,其中,所述扫描请求中携带有待处理的扫描任务的任务信息;
确定单元,用于根据获取到的所述扫描请求确定当前的扫描数据量;
调整单元,用于根据所述扫描数据量对扫描节点集合当前的集合容量进行动态调整,得到调整结果,其中,所述扫描节点集合中的每个扫描节点中包括调度子节点和工作子节点,所述调度子节点用于根据所述扫描任务的任务信息中携带的扫描用例生成漏洞检测任务,剥离所述漏洞检测任务的任务状态信息;并将所述漏洞检测任务及所述漏洞检测任务的任务状态信息存储至弹性伸缩数据存储队列中,所述工作子节点用于根据从所述弹性伸缩数据存储队列中获取到的所述漏洞检测任务执行漏洞检测;
扫描单元,用于根据所述调整结果,使用所述扫描节点中的扫描节点进行扫描。
11.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行所述权利要求1至9任一项中所述的方法。
12.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至9任一项中所述的方法。
CN202110242703.5A 2021-03-05 2021-03-05 漏洞扫描方法和装置、存储介质及电子设备 Active CN112632566B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110242703.5A CN112632566B (zh) 2021-03-05 2021-03-05 漏洞扫描方法和装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110242703.5A CN112632566B (zh) 2021-03-05 2021-03-05 漏洞扫描方法和装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN112632566A CN112632566A (zh) 2021-04-09
CN112632566B true CN112632566B (zh) 2021-06-08

Family

ID=75297716

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110242703.5A Active CN112632566B (zh) 2021-03-05 2021-03-05 漏洞扫描方法和装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN112632566B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113515748A (zh) * 2021-05-20 2021-10-19 云账户技术(天津)有限公司 一种检测sql注入的方法及装置
CN113505373A (zh) * 2021-07-09 2021-10-15 福建健康之路信息技术有限公司 一种软件代码质量的测试方法和存储设备
CN113672934A (zh) * 2021-08-09 2021-11-19 中汽创智科技有限公司 一种安全漏洞扫描系统及方法、终端、存储介质
CN113886842B (zh) * 2021-12-02 2022-03-08 北京华云安信息技术有限公司 基于测试的动态智能调度方法及装置
CN114510352B (zh) * 2022-02-15 2022-09-02 北京永信至诚科技股份有限公司 一种自动渗透项目调度任务方法及系统
CN114489995B (zh) * 2022-02-15 2022-09-30 北京永信至诚科技股份有限公司 一种分布式调度处理方法及系统
CN116305154B (zh) * 2023-03-08 2023-11-21 北京航天驭星科技有限公司 一种卫星测控软件的漏洞管理方法及相关设备
CN116502225B (zh) * 2023-06-20 2023-09-19 杭州海康威视数字技术股份有限公司 自适应分组冗余编排的病毒扫描方法、装置及电子设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870334B (zh) * 2012-12-18 2017-05-31 中国移动通信集团公司 一种大规模漏洞扫描的任务分配方法及装置
CN104239148B (zh) * 2013-06-06 2018-05-18 腾讯科技(深圳)有限公司 一种分布式任务调度方法及装置
CN108154035B (zh) * 2017-12-21 2021-01-26 杭州安恒信息技术股份有限公司 大规模网站漏洞扫描方法、装置及电子设备
CN110941788A (zh) * 2019-12-17 2020-03-31 山西云时代技术有限公司 边缘计算的云环境分布式Web页面提取分析系统和方法
CN111262839A (zh) * 2020-01-09 2020-06-09 深信服科技股份有限公司 一种漏洞扫描方法、管理设备、节点和存储介质
CN111353161A (zh) * 2020-03-11 2020-06-30 腾讯科技(深圳)有限公司 一种漏洞扫描方法及装置

Also Published As

Publication number Publication date
CN112632566A (zh) 2021-04-09

Similar Documents

Publication Publication Date Title
CN112632566B (zh) 漏洞扫描方法和装置、存储介质及电子设备
CN110535831B (zh) 基于Kubernetes和网络域的集群安全管理方法、装置及存储介质
CN110310034B (zh) 一种应用于SaaS的服务编排、业务流程处理方法和装置
CN108737270B (zh) 一种服务器集群的资源管理方法和装置
US20200379812A1 (en) Unified container orchestration controller
CN109739663B (zh) 作业处理方法、装置、设备及计算机可读存储介质
CN112583898B (zh) 业务流程编排方法、装置、以及可读介质
US10110456B2 (en) Scalable software monitoring infrastructure, using parallel task queuing, to operate in elastic cloud environments
CN109981745A (zh) 一种日志文件处理方法及服务器
CN113064735A (zh) 业务处理方法及装置
CN110661780A (zh) 一种基于saas应用的无线城市数据共享方法与系统
CN114327710A (zh) 一种函数管理方法、管理装置、终端设备及可读存储介质
CN111435315A (zh) 分配资源的方法、装置、设备和计算机可读介质
CN111831503B (zh) 一种基于监控代理的监控方法和监控代理装置
CN112631759A (zh) 数据处理方法、装置和系统
CN106657195B (zh) 任务处理方法和中继设备
CN111301789B (zh) 应用软件打包方法和装置
CN112130864A (zh) 一种私有云平台服务软件的部署方法及部署装置
CN115361382A (zh) 基于数据群组的数据处理方法、装置、设备和存储介质
Nguyen et al. Bracelet: Edge-cloud microservice infrastructure for aging scientific instruments
CN115499432A (zh) 家庭终端算力资源管理系统及算力资源调度方法
CN115225482A (zh) 一种基于Kubernetes进行Pod容器网络配置的方法及装置
CN114969199A (zh) 遥感数据的处理方法、装置、系统以及存储介质
CN111176782B (zh) 一种在线实验方法和装置
CN114265866A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40042940

Country of ref document: HK