CN117272308A - 软件安全测试方法、装置、设备、存储介质及程序产品 - Google Patents

软件安全测试方法、装置、设备、存储介质及程序产品 Download PDF

Info

Publication number
CN117272308A
CN117272308A CN202310988972.5A CN202310988972A CN117272308A CN 117272308 A CN117272308 A CN 117272308A CN 202310988972 A CN202310988972 A CN 202310988972A CN 117272308 A CN117272308 A CN 117272308A
Authority
CN
China
Prior art keywords
security
test
vulnerability
information
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.)
Pending
Application number
CN202310988972.5A
Other languages
English (en)
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.)
China Construction Bank Corp
CCB Finetech Co Ltd
Original Assignee
China Construction Bank Corp
CCB Finetech 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 China Construction Bank Corp, CCB Finetech Co Ltd filed Critical China Construction Bank Corp
Priority to CN202310988972.5A priority Critical patent/CN117272308A/zh
Publication of CN117272308A publication Critical patent/CN117272308A/zh
Pending legal-status Critical Current

Links

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

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为本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一设备和第二设备仅仅是为了区分不同的设备,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
需要说明的是,本申请的技术方案中,所涉及的金融数据或用户数据等信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
首先对本申请实施例涉及到的专业术语进行解释。
安全测试:可以指的是用于验证应用程序的安全等级和识别潜在安全性缺陷的过程。应用程序级安全测试的主要目的是查找软件自身程序设计中存在的安全隐患,测试应用软件在防止非授权的内部或外部用户的访问以及故意破坏等情况,并检查应用程序对非正常侵入的防范能力。
静态代码安全测试:可以指的是在不执行应用程序的情况下,对代码语义和行为进行分析,由此找出应用程序中由于错误的编码导致的异常程序语义或未定义的行为,可以在代码编写的同时就可以找出代码的编码错误。
动态代码安全测试:可以指的是应用程序在测试或运行阶段,分析应用程序的动态运行状态。通过模拟黑客行为对应用程序进行动态攻击,分析应用程序的反应,从而确定Web应用程序是否易受攻击。
流水线:可以指的是软件***研发交付的流程,通过将软件开发流程中的不同阶段和任务串接起来,以使可以自动化地一步一步地执行,构建并部署到一个特定的环境;具体的,由源代码提交自动触发,通过各个环节和阶段的构建、部署以及各种检测工作,投产上线使用,形成一条完整的端到端的流水线。
代码仓:也可以称为储存库、资源库、版本库、代码库、存放库,在版本控制***中,可以指的是在磁盘存储上的数据结构,其中,代码仓可以包含文件、目录以及元数据,是一个公共或私有的保存大量源代码的地方,可以用作备份、版本控制,在多人开发的项目中会帮助处理各种代码版本问题,现今流行使用集中式版本控制工具如Subversion,分布式版本控制工具如Git和Mercurial等工具构建仓库(repository)。
随着移动应用、互联网+时代的到来,软件的更新速度越来越快,应用范围也愈发广泛,比如手机银行,银行应用程序(Application,APP),网络支付、各类投资和理财业务APP等,为人们的生活带来了很大的便利。
与此同时,由于软件存在的安全漏洞呈爆发式增长,且漏洞种类多样,致使信息安全、个人隐私等安全问题受到了越来越大的威胁,这着实给软件研发带来了不小的挑战,网络安全事件、个人隐私泄露、网络站点被黑等事件时常发生。
面对严峻的网络安全形势,尤其针对于商业银行,不可以仅靠传统的几大件网络安全防护设备来解决问题,对于业务***的安全性,必须具备软件***安全的测试和保障能力,需要在软件开发管理中引入软件安全测试体系,从源代码层面上保证软件***的安全性,确保自身业务***上线后的安全性和稳定性。
但是,安全检查机制如何建立才能满足安全保障的需要,需要借助各种安全测试方法和工具开展投产前的安全检测,通过查找软件自身程序设计中存在的安全隐患,提升应用程序对非正常侵入的防范能力。
由于各类操作***及网络安全设备的不断更新升级,有一定数量的安全问题是应用软件自身存着的安全漏洞引起的,由于软件自身存在的安全漏洞对***的影响甚至超过了操作***和网络层漏洞的影响,使得恶意的攻击者可以利用软件自身的安全漏洞提升权限,访问未授权资源,甚至破坏敏感数据,进而造成重大损失。
因此,应用软件的安全问题是信息安全领域最为关心的问题,越来越多的企业已经在考虑关注软件开发的整个流程,将安全测试与监测融入需求分析、概要设计、详细设计、编码、测试等各个阶段,以全面的保证应用安全。
例如,可以借助各类安全检测工具高效检测出应用***中不同层面安全漏洞风险,如软件代码安全测试人员可以通过采用软件源代码静态扫描与人工代码审查相结合的方式排查软件源代码中安全漏洞,让相关研发人员可以进行***安全漏洞的整改修复,为***安全投产提供保障。
一种可能的实现方式中,对于应用安全性的测试可以通过自动化工具扫描检测方式来实现,如可以利用静态代码安全测试的方法进行软件的安全测试,具体的,可以通过对软件的源代码进行安全扫描,根据源代码程序中的数据流、控制流、语义等信息与其特有软件安全规则库进行匹配,从中找到代码中潜在的安全漏洞,并提醒开发人员解决潜在的安全问题。
需要说明的是,静态的源代码安全测试是一种有用的方法,它可以在编码阶段找出所有可能存在安全风险的代码,以便于开发人员可以在早期解决潜在的安全问题,因此,静态代码安全测试比较适用于早期的代码开发阶段,目前常用的静态代码测试工具运用比较多的工具有静态代码扫描分析工具、源代码扫描工具等,这些工具对开发语言的支持较为全面,其中,静态代码扫描分析工具对应有源代码安全分析能力,可以提供静态应用程序代码安全检测。
但是,由于安全漏洞问题数量种类多样,上述方法用于对静态应用程序代码进行安全检测,可检测的漏洞范围受限,导致安全测试的准确率较低。
另一种可能的实现方式中,可以利用动态代码安全测试的方法进行软件的安全测试,如采用渗透测试的安全测试方法,具体的,通过使用自动化工具如burpsuite,或者使用人工的方法模拟黑客的输入,对应用***进行攻击性测试,从中找出运行时刻所存在的安全漏洞。
虽然动态代码安全测试方法真实有效,但是,可能存在问题有结构化查询语言(Structured Query Language,SQL)注入、越权问题等,且模拟的测试数据只能到达有限的测试点,覆盖率很低,即只能针对某些业务场景或者安全测试点进行测试覆盖,无法做到全面测试。
再一种可能的实现方式中,可以利用相关的程序数据测试的方法进行软件的安全测试,如可以针对应用开发和使用过程中涉及到的数据安全问题进行测试,所述数据安全从用户层面来看是个人敏感信息,对应敏感数据,如敏感数据为某些***、用户标识号(Identity Document,ID)和身份验证凭据令牌(Token)等信息。
可以理解的是,攻击者可能会获取或者篡改这些敏感数据以进行恶意利用或其他非正常操作,因此,敏感数据需额外保护,要在存放、传输过程中进行必要的加密,以及在与浏览器交换时实施特殊的预防措施,以防止恶意用户获取其他合法用户的隐私数据,甚至通过获取服务器中的敏感数据达到控制服务器的目的。
正如上面所述,安全测试方法涉及方面比较多且零碎,针对***安全测试的范围、方法和检测工具很多,但安全测试需要应对不同业务场景的测试需求,通过借助各类安全测试工具固然可以提高安全实施效率,但是不同检测工具的实施入口、数据格式和数据管理存在各自为政的情况,针对多类检测引擎工具使用难以统一化调度,对于同一类检查扫描对象,安全测试人员需要分别进行触发检测,导致安全测试人员开展安全测试实施低效,实施的工作效率较为低下。
此外,安全漏洞问题数量种类多样,且分布在不同的安全测试***中,对***造成的危害程度也各不相同,能否合理且高效地实现多源漏洞数据聚类、分析及流转,将直接影响漏洞的管理效率,从而影响整个***的安全保障,因此,需要安全人员投入大量的时间和精力进行手动汇总统计。
传统的安全实施管理多以单一纬度为主,缺少多类安全检测引擎统一化管理,对于安全工作人员来说,漏洞管理过程繁琐复杂,不仅工作大,且周期长,不能应对日益增长的安全漏洞问题,难以全面的量化评估项目***的风险等级。
针对上述问题,本申请提供一种软件安全测试方法,通过***安全测试多源异类检测引擎统一化接入,实现多引擎服务节点的统一调度,不同的引擎服务节点可以执行不同的安全检测任务;具体的,针对不同引擎服务节点创建的安全检测任务进行统一管理,即调度中心收到安全测试请求后,调度引擎服务端创建不同类型的安全检测任务,通过引擎参数配置策略,将安全检测任务分发到相对应的引擎服务节点进行自动检查,如可以进行静态代码安全测试、动态代码安全测试及程序相关的数据分析测试,准确得出涉及的***漏洞问题,这样,可以全面的分析漏洞,扩大适用业务场景,并提高安全测试的准确率,进一步的,构建安全测试质量评价体系,对***的安全风险等级进行评估,实现简单又高效的软件安全保障以及***安全风险等级的可靠性判断。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图1为适用于本申请实施例的软件安全测试方法的应用场景图。如图1所示,该应用场景包括:用户的终端设备101、一体化安全测试***102、第一引擎服务节点103、第二引擎服务节点104和第三引擎服务节点105;每一引擎服务节点对应不同的物理服务器,用于执行不同类型的安全检测任务。
具体的,一体化安全测试***102接收到用户的终端设备发送的安全测试请求后,可以创建不同类型的安全检测任务,相应的,可以获取各个生产流水线产出的代码部署包作为输入数据,进一步的,通过引擎参数配置策略,将创建的安全检测任务分发到第一引擎服务节点103、第二引擎服务节点104和第三引擎服务节点105进行自动检查,以准确得出涉及的***漏洞问题即源数据,再经过数据处理引擎处理后将漏洞数据存储到一体化安全测试***102的数据库中。
其中,不同的引擎服务节点进行相应类型的安全测试,如第一引擎服务节点103进行静态代码安全测试,第二引擎服务节点104进行动态代码安全测试,第三引擎服务节点105进行程序相关的数据分析测试。
进一步的,在针对多源异构漏洞数据进行统一结构建模存储后,可以基于多类型的安全检测任务构建安全评估指标体系,对***安全风险等级进行评估,实现***安全风险等级的可靠性判断。
需要说明的是,一体化安全测试***102还可以接收到上游***发送的上游安全测试请求,并基于上游安全测试请求创建不同类型的安全检测任务,本申请实施例对发送安全测试请求的设备不作具体限定,其可以为任意有需求进行软件安全测试的服务器或***。
可选的,上述终端设备可以是具有显示屏并且支持网页浏览的各种电子设备,终端设备也可以被称为终端(terminal)、用户设备(User Equipment,UE)、移动台(MobileStation,MS)、移动终端(Mobile Terminal,MT)等。终端设备可以是手机(mobile phone)、智能电视、穿戴式设备、智能音箱、智能安防设备、智能网关、平板电脑(Pad)、带无线收发功能的电脑、虚拟现实(Virtual Reality,VR)终端设备、增强现实(Augmented Reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self-driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等。上述终端设备包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等。
基于图1所示的应用场景,本申请实施例还提供一种软件安全测试方法。图2为本申请实施例提供的软件安全测试方法的流程示意图。如图2所示,该软件安全测试方法包括:
S201、接收安全测试请求,所述安全测试请求包括测试软件部署信息、扫描介质信息和测试需求;所述测试软件部署信息用于指示测试软件***部署的服务器类别与区域;所述扫描介质信息为测试软件***所需测试的代码信息。
本申请实施例中,通过将基础资产进行统一管理,即涵盖各个维度的安全检测数据资产,包括测试软件部署信息和扫描介质信息;所述测试软件部署信息为***部署的服务器信息,包括服务器网际互连协议(Internet Protocol,IP)地址、服务器类别、服务器部署区域以及服务器用户信息等;所述扫描介质信息包括代码仓地址、源码包地址和部署包地址,用于获取相应的代码仓、源码包和部署包。
进一步的,通过对测试软件部署信息和扫描介质信息进行处理,可以得到软件***的基础信息,如测试软件***名称、测试软件***类别、测试软件***开发语言、测试软件***机构等信息。
这样,可以对安全检测数据资产进行资产中心化管理,在进行软件***安全测试时,直接从数据库中获取所需数据即可。
在本步骤中,调度中心可以接收上游***发送的安全测试请求,基于安全测试请求可以获取测试需求以及从基础资产中心中获取所需测试数据;所述测试需求用于指示对测试软件***进行安全测试,以使测试符合所需的业务场景。
可以理解的是,代码仓地址为***开发代码存放的位置,即进行代码扫描需拉取的代码的存储位置,源码包地址和部署包地址的定义与代码仓地址类似,在此不再赘述。
S202、基于所述测试软件部署信息和测试需求创建至少一种类型的安全检测任务,并基于引擎参数配置策略将所述至少一种类型的安全检测任务分发到对应的引擎服务节点进行任务扫描,以使所述引擎服务节点基于所述扫描介质信息,调用对应的安全测试工具进行安全测试,得到测试结果。
本申请实施例中,引擎参数配置策略可以指的是提前定义的调度执行机器进行测试执行的任务分配策略,以使任务分发符合测试需求,如所述引擎参数配置策略可以为任务优先级分配策略、资源分配策略等,本申请实施例对引擎参数配置策略对应的具体策略不作限定,其可以基于不同的业务场景进行设定。
所述安全测试工具涵盖了各类安全测试自动化工具,包括但不限于静态代码安全测试工具、动态代码安全测试工具、程序数据分析工具等,每一安全测试工具对应不同的代码扫描工具,如静态代码安全测试工具有FindBugs;所述安全测试工具用于检测不同类型的安全漏洞问题。
在本步骤中,可以针对不同引擎创建的安全检测任务进行统一管理,即调度中心收到上游***发送的安全测试请求后,调度引擎服务端可以创建不同类型的安全检测任务,进一步的,通过引擎参数配置策略,将安全检测任务分发到引擎服务节点进行自动检查。
可选的,为了提高安全实施效率,每类引擎服务节点需要多台机器进行部署,将调度服务集群和引擎服务集群通过注册中心进行统一服务监控管理,图3为本申请实施例提供的调度中心分布式部署的结构示意图,如图3所示,调度服务集群包括多个调度服务节点,如调度服务节点-1、调度服务节点-2和调度服务节点-N,用于安全检测任务的调度,每类安全测试类别(安全测试工具)对应引擎服务集群,包括多个引擎服务节点,如安全测试类别A对应的引擎服务集群包括引擎服务节点1-引擎服务节点N,用于任务扫描,即利用安全测试工具进行自动检查。
需要说明的是,安全测试类别B对应的引擎服务集群也可以包括多个引擎服务节点,如引擎服务节点1-引擎服务节点N,本申请实施例对调度服务集群对应的调度服务节点的数量和引擎服务集群对应的引擎服务节点的数量不作具体限定,其可以根据测试需求选取合适数量的调度服务节点和引擎服务节点。
可选的,将引擎服务节点微服务化,支持分布式引擎服务节点进行横向扩展,即横向添加扫描机器节点,进行引擎服务节点的快速扩容,提升扫描实施能力。
S203、将所述测试结果进行过滤处理,得到漏洞数据,并对所述漏洞数据进行分析,得到所述漏洞数据对应的影响参数;所述影响参数用于表述所述漏洞数据对应的风险程度。
本申请实施例中,所述测试结果为不同类别的测试结果,如针对代码安全、代码编写规范、配置安全检查、敏感信息检测等的测试结果;所述影响参数为依赖测试软件***相关的漏洞数据资产的影响因素数据,包括漏洞个数、漏洞类别、漏洞等级、漏洞利用难度、漏洞影响范围等数据。
在本步骤中,可以对于不同类别的引擎服务节点处理的数据结果进行统一收集,进行误报数据过滤处理后得到漏洞数据,将漏洞数据入库持久化保存,进一步的,对漏洞数据进行分析,得到安全风险点的影响参数。
S204、基于所述影响参数构建安全质量画像,利用所述安全质量画像进行风险评估,得到风险等级。
本申请实施例中,安全质量画像可以指的是将安全风险点的属性、影响维度和漏洞数据转化连接起来,构建一种安全画像,用于反映测试软件***的安全漏洞。
在本步骤中,通过漏洞数据对应的影响参数构建测试软件***的安全质量画像,进行***的不同维度的安全风险评估,进而判断出***安全的风险等级。
因此,本申请实施例提供一种软件安全测试方法,可以实现多引擎服务节点的统一调度,并进行***安全测试多源异类检测以及多维度漏洞数据存储分析,扩大安全检测的范围,适用多种业务场景,还可以通过构建安全质量画像,进行安全质量风险评估,提高安全测试的准确率,实现简单又高效的软件安全保障。
在一种可能的设计中,所述引擎参数配置策略包括:优先级分配策略和负载均衡分配策略;基于引擎参数配置策略将所述至少一种类型的安全检测任务分发到对应的引擎服务节点进行任务扫描,包括:
判断所述至少一种类型的安全检测任务是否对应有优先级信息;
若是,则获取所述至少一种类型的安全检测任务的优先级信息,并基于所述优先级信息调用优先级分配策略将所述至少一种类型的安全检测任务分发到对应的引擎服务节点进行任务扫描;
若否,则获取所述至少一种类型的安全检测任务的资源占用信息,并基于所述资源占用信息调用负载均衡分配策略将所述至少一种类型的安全检测任务分发到对应的引擎服务节点进行任务扫描。
本申请实施例中,优先级信息用于指示安全检测任务测试的先后顺序,所述优先级信息可以人工设定,也可以基于业务场景设定,本申请实施例对此不作具体限定,所述优先级信息可以是文字表述形式,如“高级、中级、低级”,也可以是数字表述形式,如“1级、2级、3级”等,本申请实施例对此也不作具体限定,其可以区分优先级等级的高低即可。
在本步骤中,若多个安全检测任务存在对应有优先级信息,则可以基于优先级信息对应的等级高低,调用优先级分配策略将安全检测任务按照优先级顺序分发到对应的引擎服务节点进行扫描,如果存在同一优先级的多个安全检测任务,可以采用随机分配的方式将安全检测任务分发到对应的引擎服务节点进行扫描,或者获取安全检测任务的资源占用信息,并基于资源占用量的大小将安全检测任务分发到对应的引擎服务节点进行任务扫描。
可选的,若多个安全检测任务不存在优先级信息,则可以基于负载均衡策略进行任务下发和任务执行。
因此,本申请实施例可以实现引擎分配调度,采用引擎参数配置策略进行任务分发,提高安全实施效率。
在一种可能的设计中,所述扫描介质信息包括代码仓地址、源码包地址和部署包地址;基于所述扫描介质信息,调用对应的安全测试工具进行安全测试,得到测试结果,包括:
基于所述代码仓地址、源码包地址和部署包地址,利用所述至少一种类型的安全检测任务对应的安全测试接口,调用所需的代码仓、源码包和部署包;所述安全测试接口为提前定义的用于数据调用的统一接口;所述代码仓、源码包和部署包分别用于存储相应的代码信息;
基于所述代码仓、源码包和部署包,利用多种安全测试工具进行安全测试,得到测试结果;每一安全测试工具对应有引擎服务节点;所述安全测试工具包括静态代码测试工具、动态代码测试工具、程序数据分析工具;
其中,所述静态代码测试工具用于测试源代码的安全漏洞问题;所述动态代码测试工具用于测试代码运行态的安全漏洞问题;所述程序数据分析工具用于对软件***研发过程中的敏感信息、配置参数和***漏洞进行检测。
本申请实施例中,安全测试接口是开展***安全实施检测的统一开关,包括研发流水线(DevOps)接入接口和定时任务执行接口等,所述DevOps接入接口为用户提前配置的在DevOps上进行自动拉取***代码包进行安全扫描的接口,所述定时任务执行接口为提前制定定时任务逻辑按需进行相关安全检测工艺实施的接口。
在本步骤中,基于安全测试接口获取到测试软件***所需的测试数据后,可以利用多种安全测试工具进行安全测试,得到测试结果,如利用静态代码测试工具、动态代码测试工具、程序数据分析工具等进行安全测试。
其中,进行静态代码安全测试需要获取***源码包,基于提前配置的基准扫描规则,调用对应的安全测试工具如静态代码扫描分析工具、源代码扫描工具、静态分析工具等进行源码扫描,从而得出源代码对应的安全漏洞问题,其中,扫描规则为提前配置的扫描检查规则,涉及多种语言类型包括Java、C++、PHP等,本申请实施例对扫描规则不作具体限定,其也可以为安全测试工具自带的扫描规则。
动态代码测试工具用于测试代码运行态的安全漏洞问题,由于自动动态方法不可以理解代码逻辑,所以动态代码测试工具用于发现语言规范特性的错误,如变量定义不规范、异常未处理、文件流未关闭等错误,而对于代码逻辑功能的测试,还需要依靠人工动态方法,通过借助DAST(Dynamic Application Security Testing)工具进行Web应用程序的功能测试;其中,所述人工动态方法为接口测试方法,通过接口测试工具进行抓包、请求链路以及进行分析。
具体的,测试人员无需具备编程能力,也不用区分测试对象的实现语言,采用攻击特征库来做漏洞发现与验证,通过扫描应用程序、第三方开源组件、第三方框架等的漏洞问题,用于发现大部分的高风险问题,如采用检测SQL注入、跨站脚本攻击(XXS)检测、cookie欺骗的方法进行动态代码的安全测试。
程序数据分析工具用于对***研发过程中涉及到的相关数据进行分析,包括对敏感信息扫描、配置参数检查,渗透测试检查等,所述配置参数检查指的是通过正则匹配规则提取应用***开发时的配置文件参数内容,进行格式和内容的检查;所述渗透测试检查可以指的是通过人工借助自动化接口测试工具进行应用***测试探测,发现***漏洞进而获取***资产数据的安全测试行为,如获取***用户信息、服务权限、交易信息等安全测试行为。
需要说明的是,由于金融行业软件研发不可避免的会涉及到用户的敏感信息,但是为了保护用户隐私,并且根据规定,不管是数据库、日志还有页面都需要进行加密或者掩码,敏感信息扫描用于解决此类问题,即将***涉及到的敏感信息漏洞问题扫描出来。
因此,本申请实施例可以通过标准化数据接口统一接入,实现引擎统一接入,由于安全测试工具多样化,针对多类检测引擎工具使用统一化调度,提高安全测试效率。
在一种可能的设计中,将所述测试结果进行过滤处理,得到漏洞数据,包括:
将所述测试结果与误报数据库中的数据进行比对,以过滤掉所述测试结果中的误报数据,得到漏洞数据;所述误报数据库为获取历史测试结果进行归类分析,得到历史误报数据,并基于所述历史误报数据构建的数据库;所述误报数据为判断错误的漏洞数据;
将所述漏洞数据按照预定义存储规则分区域存储于数据库中进行持久化保存。
本申请实施例中,预定义存储规则可以指的是提前预定用于进行分区域存储数据的规则,如可以按照漏洞数据对应的漏洞类别分区域的进行存储,也可以按照漏洞数据对应的漏洞等级分区域的进行存储,本申请实施例对预定义存储规则不作具体限定。
在本步骤中,由于某些安全漏洞问题之间存在一定的关联性和规律性,需要归纳总结形成误报数据库,针对新扫描出来的漏洞问题进行过滤,并将经过过滤的漏洞数据进行统一存储分析。
因此,本申请实施例可以有效过滤和识别误报等无效问题,方便快速的定位和解决有效问题,从而形成问题分析的长效机制和解决方案。
结合上述实施例,可以设计一种一体化安全测试***,用于实施软件安全测试方法,图4为本申请实施例提供的一体化安全测试***的架构示意图,如图4所示,所述一体化安全测试***包括安全测试入口模块、基础资产中心模块、统一调度中心模块、安全测试引擎模块及安全测试结果模块组成。
具体的,所述安全测试入口模块包括DevOps接入接口和定时任务执行接口,所述安全测试入口模块还可以包括任务接入接口、机器资产配置查询接口、排队算法调度接口,用于数据调用提供统一接口;所述基础资产中心模块是***架构中的基础模块,统一管理扫描介质信息即引擎扫描的代码包信息,包括代码仓、源码包和部署包等,不同扫描引擎可以复用统一介质,无需重复关联上传处理,所述基础资产中心模块还可以包括服务器信息,通过对扫描介质信息和服务器信息处理,得到***基础信息;所述服务器信息可以包括服务器IP、服务器用户信息等,所述***基础信息可以包括***名称、***机构等。
安全测试工具引擎模块涵盖了各类安全测试自动化工具,包括但不限于静态代码测试引擎模块、动态代码安全测试引擎模块、程序数据分析引擎模块;其中,所述静态代码测试引擎模块用于进行静态代码扫描分析工具扫描、源代码扫描工具扫描、静态分析工具扫描等;所述动态代码安全测试引擎模块用于进行SQL注入,XSS检测,Cookie欺骗等安全测试;所述程序数据分析引擎模块用于进行敏感信息扫描、配置参数检查、渗透测试检测等。
统一调度中心模块是***架构中的核心模块,包括引擎调度管理、实施任务管理及漏洞数据管理等功能,引擎调度管理功能用于进行集成多类安全检测自动化工具,如通过定义统一的数据接口接入方法实现引擎统一接入、引擎分配调度、引擎节点监控及相关引擎参数配置等;实施任务管理功能用于是针对不同引擎创建的安全检测任务进行统一管理,包括任务创建、任务分发、任务调度和任务监控等;漏洞数据管理功能用于对一体化安全测试架构***产出的安全漏洞数据进行统一管理,对于不同类别的安全测试引擎数据结果统一收集,进行误报数据过滤处理后入库持久化保存。
安全测试结果模块用于监控生产***安全漏洞问题,并量化安全漏洞指标进而实施安全风险评估,包括构建***质量画像模块和***风险评估模块;其中,所述***风险评估模块是基于各维度安全漏洞进行分析。
在一种可能的设计中,所述影响参数包括漏洞个数、漏洞类别、漏洞等级、漏洞利用难度、漏洞影响范围;基于所述影响参数构建安全质量画像,利用所述安全质量画像进行风险评估,得到风险等级,包括:
利用所述漏洞个数、所述漏洞类别、所述漏洞等级、所述漏洞利用难度、所述漏洞影响范围构建维度向量;
将所述维度向量输入风险评估模型中,得到风险等级;所述风险评估模型为提前训练好的基于循环神经网络的深度学习模型。
本申请实施例中,风险评估模型可以指的是提前定义好的用于进行风险评估的机器学习模型,如所述风险评估模型为提前训练好的基于循环神经网络的深度学习模型,也可以为基于残差网络的深度学习模型,本申请实施例对风险评估模型对应的具体模型不作限定。
示例性的,图5为本申请实施例提供的***安全风险评估的结构示意图,如图5所示,通过对漏洞资产数据进行统计分析,得到漏洞个数、漏洞类别、漏洞利用难度、关联***范围(漏洞影响范围)等影响参数,进一步的,基于上述影响参数构建***整体安全质量画像,并利用安全质量画像进行风险评估,如将影响参数输入到风险评估模型中,得到***安全风险等级评分,从而评估管控***投产上线使用风险。
其中,所述漏洞利用难度可以指的是漏洞处理的难易程度;所述漏洞影响范围可以指的是漏洞关系的***个数。
需要说明的是,安全风险评估是一个持续跟进的过程,可以做到持续监控和跟踪。
因此,本申请实施例可以通过质量画像指标了解整体***服务的安全质量情况,从而实现为***研发过程和安全投产保驾护航。
在一种可能的设计中,所述方法还包括:
基于所述风险等级查找对应级别的用户信息,并基于所述用户信息将漏洞数据发送到用户的终端设备上,以提示用户进行漏洞修复;
响应于用户的修复操作,利用安全测试工具对测试软件***进行漏洞验证,以验证所述测试软件***的漏洞是否修复成功。
本申请实施例中,通过数据流程管理实现相关漏洞的流程的统一化管控,即将发现的漏洞分配相关人员进行整改以及修复,并对修复漏洞后的测试软件***进行验证;所述相关漏洞指的是扫描检测发现的***安全漏洞,包括扫描出来的代码行数、代码片段以及对应的漏洞说明。
在本步骤中,基于风险等级查找对应级别的用户信息,风险等级越高的问题漏洞,匹配的进行漏洞修复人员的等级越高,通过查找到对应级别的用户信息,如手机号、终端IP等信息,将漏洞数据发送到相应用户的终端设备,以提示用户进行漏洞修复,本申请实施例对发送漏洞数据的发送形式和发送内容不作具体限定,其可以为短信的发送形式,发送内容包括漏洞数据和风险等级等信息。
进一步的,用户的终端设备在收到该漏洞数据,用户可以基于终端设备查找到漏洞的位置,并对相关漏洞进行修复,响应于用户的修复操作,***可以利用安全测试工具再次对测试软件***进行测试,以验证测试软件***的漏洞是否修复成功,若没有修复成功,则再次生成提示信息,用以提醒用户。
因此,本申请实施例可以对漏洞进行修复,针对存在的风险及时处理,及时避免在***研发和安全投产过程中可能出现的安全问题。
在一种可能的设计中,所述方法还包括:
监控每一引擎服务节点的运行状态,当所述运行状态发生异常时,重新启动所述引擎服务节点进行任务扫描;
当重新启动所述引擎服务节点进行任务扫描失败后,生成告警提示信息,以提示用户所述引擎服务节点运行异常。
本申请实施例中,运行状态异常可以指的是引擎服务节点执行任务时发生故障,如任务扫描失败、处理任务缓慢或引擎服务节点死机等故障,本申请实施例对运行状态异常对应的具体故障现象不作限定。
在本步骤中,可以对引擎服务节点执行任务的状态进行动态监控,当发生任务状态变更如任务扫描失败时,则将重试机制拉起,重新启动引擎服务节点进行任务扫描,若重新启动引擎服务节点进行任务扫描失败后,可以生成告警提示信息,并将告警提示信息以短信的形式发送到用户的终端设备上,以提示用户引擎服务节点运行异常。
需要说明的是,本申请实施例对告警提示信息的发送形式和发送内容不作具体限定。
因此,本申请实施例可以持续监控各业务***的运行状态,通过对执行任务进行动态状态监控,提高任务处理效率。
结合上述实施例,图6为本申请实施例提供的具体的软件安全测试方法的流程示意图,如图6所示,所述软件安全测试方法包括如下步骤:
S601、基础资产统一管理,涵盖各个维度***安全检测数据资产,包括应用***信息、服务器信息、代码仓地址等,进行流水线管理及资产中心化管理。
其中,流水线管理可以指的是进行***自动化部署的流程管理,即从代码仓拉取代码进行编译、打包、部署到对应的服务器上的操作;资产中心化管理可以指的是由一个一体化安全测试***进行统一管理,不需要将安全检测任务分散到不同的***当中,减少资产数据不统一情况的发生,节约资源。
S602、安全扫描引擎统一调度器提供标准化扫描引擎数据接入接口,实现安全检测任务统一分发、调度、执行及检测结果收集,支持分布式扫描引擎节点(引擎服务节点)进行横向扩展。
其中,横向扩展可以指的是增加扫描服务机器节点,以提升扫描服务能力。
S603、获取多维度安全检测数据,进行数据一体化建模,将多维数据纳入到统一数据模型表中进行持久化存储。
其中,数据一体化建模可以指的是针对不同类别的漏洞数据进行统一化定义、入库存储、流转管理等操作。
S604、数据流程管理实现安全实施任务及相关漏洞流程的统一化管控,将平台中涉及到的自动化扫描类、手动渗透类等实施任务及相关漏洞进行统一流程流转。
其中,实施任务指的是开展不同类别的安全检测任务;自动化扫描类可以指的是自动化工具直接扫描代码介质进行安全检测的安全检测任务的类别;手动渗透类可以指的是需要手动开展安全检测的安全检测任务的类别。
S605、获取安全风险点的影响参数,影响参数包括安全漏洞个数、安全漏洞类别、安全漏洞等级、安全漏洞关联***数(漏洞影响范围)和安全漏洞利用难度等。
S606、构建***安全质量画像,进行***不同维度安全风险评估,判断***安全故障的风险等级。
因此,本申请实施例通过进行数据存储持久化、基础资产中心化、数据接口标准化、流程管理模型化及引擎节点微服务化的操作,构建一体化漏洞资产数据管理平台,实现简单又高效的***安全检测和软件安全保障。
在前述实施例中,对本申请实施例提供的软件安全测试方法进行了介绍,而为了实现上述本申请实施例提供的方法中的各功能,作为执行主体的电子设备可以包括硬件结构和/或软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。上述各功能中的某个功能以硬件结构、软件模块、还是硬件结构加软件模块的方式来执行,取决于技术方案的特定应用和设计约束条件。
例如,图7为本申请实施例提供的软件安全测试装置的结构示意图,如图7所示,该装置包括:接收模块701,分发模块702,处理模块703和评估模块704;其中,所述接收模块701,用于接收安全测试请求,所述安全测试请求包括测试软件部署信息、扫描介质信息和测试需求;所述测试软件部署信息用于指示测试软件***部署的服务器类别与区域;所述扫描介质信息为测试软件***所需测试的代码信息;
所述分发模块702,用于基于所述测试软件部署信息和测试需求创建至少一种类型的安全检测任务,并基于引擎参数配置策略将所述至少一种类型的安全检测任务分发到对应的引擎服务节点进行任务扫描,以使所述引擎服务节点基于所述扫描介质信息,调用对应的安全测试工具进行安全测试,得到测试结果;
所述处理模块703,用于将所述测试结果进行过滤处理,得到漏洞数据,并对所述漏洞数据进行分析,得到所述漏洞数据对应的影响参数;所述影响参数用于表述所述漏洞数据对应的风险程度;
所述评估模块704,用于基于所述影响参数构建安全质量画像,利用所述安全质量画像进行风险评估,得到风险等级。
在一种可能的设计中,所述引擎参数配置策略包括:优先级分配策略和负载均衡分配策略;所述分发模块702,具体用于:
判断所述至少一种类型的安全检测任务是否对应有优先级信息;
若是,则获取所述至少一种类型的安全检测任务的优先级信息,并基于所述优先级信息调用优先级分配策略将所述至少一种类型的安全检测任务分发到对应的引擎服务节点进行任务扫描;
若否,则获取所述至少一种类型的安全检测任务的资源占用信息,并基于所述资源占用信息调用负载均衡分配策略将所述至少一种类型的安全检测任务分发到对应的引擎服务节点进行任务扫描。
在一种可能的设计中,所述扫描介质信息包括代码仓地址、源码包地址和部署包地址;所述装置还包括测试模块,所述测试模块,用于:
基于所述代码仓地址、源码包地址和部署包地址,利用所述至少一种类型的安全检测任务对应的安全测试接口,调用所需的代码仓、源码包和部署包;所述安全测试接口为提前定义的用于数据调用的统一接口;所述代码仓、源码包和部署包分别用于存储相应的代码信息;
基于所述代码仓、源码包和部署包,利用多种安全测试工具进行安全测试,得到测试结果;每一安全测试工具对应有引擎服务节点;所述安全测试工具包括静态代码测试工具、动态代码测试工具、程序数据分析工具;
其中,所述静态代码测试工具用于测试源代码的安全漏洞问题;所述动态代码测试工具用于测试代码运行态的安全漏洞问题;所述程序数据分析工具用于对软件***研发过程中的敏感信息、配置参数和***漏洞进行检测。
在一种可能的设计中,所述处理模块703,具体用于:
将所述测试结果与误报数据库中的数据进行比对,以过滤掉所述测试结果中的误报数据,得到漏洞数据;所述误报数据库为获取历史测试结果进行归类分析,得到历史误报数据,并基于所述历史误报数据构建的数据库;所述误报数据为判断错误的漏洞数据;
将所述漏洞数据按照预定义存储规则分区域存储于数据库中进行持久化保存。
在一种可能的设计中,所述影响参数包括漏洞个数、漏洞类别、漏洞等级、漏洞利用难度、漏洞影响范围;所述评估模块704,具体用于:
利用所述漏洞个数、所述漏洞类别、所述漏洞等级、所述漏洞利用难度、所述漏洞影响范围构建维度向量;
将所述维度向量输入风险评估模型中,得到风险等级;所述风险评估模型为提前训练好的基于循环神经网络的深度学习模型。
在一种可能的设计中,所述装置还包括修复模块,所述修复模块,用于:
基于所述风险等级查找对应级别的用户信息,并基于所述用户信息将漏洞数据发送到用户的终端设备上,以提示用户进行漏洞修复;
响应于用户的修复操作,利用安全测试工具对测试软件***进行漏洞验证,以验证所述测试软件***的漏洞是否修复成功。
在一种可能的设计中,所述装置还包括监控模块,所述监控模块,用于:
监控每一引擎服务节点的运行状态,当所述运行状态发生异常时,重新启动所述引擎服务节点进行任务扫描;
当重新启动所述引擎服务节点进行任务扫描失败后,生成告警提示信息,以提示用户所述引擎服务节点运行异常。
本申请实施例提供的软件安全测试装置的具体实现原理和效果可以参见上述实施例对应的相关描述和效果,此处不做过多赘述。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。各模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上各模块的功能。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
图8为本申请实施例提供的电子设备的结构示意图。如图8所示,该电子设备可以包括:收发器801、处理器802、存储器803。
处理器802执行存储器存储的计算机执行指令,使得处理器802执行上述实施例中的方案。处理器802可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器803通过***总线与处理器802连接并完成相互间的通信,存储器803用于存储计算机程序指令。
收发器801可以用于接收安全测试请求。
***总线可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。***总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。收发器用于实现数据库访问装置与其他计算机(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(RandomAccess Memory,RAM),也可能还包括非易失性存储器(Non-Volatile Memory,NVM)。
本申请实施例提供的电子设备,可以是上述实施例的一体化安全测试***。
本申请实施例还提供一种运行指令的芯片,该芯片用于执行上述实施例中软件安全测试方法的技术方案。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行上述实施例软件安全测试方法的技术方案。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,其存储在计算机可读存储介质中,至少一个处理器可以从计算机可读存储介质读取计算机程序,至少一个处理器执行计算机程序时可实现上述实施例中软件安全测试方法的技术方案。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例方法的部分步骤。
应理解,上述处理器可以是中央处理单元(Central Processing Unit,简称CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,简称ISA)总线、外部设备互连(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random-Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-OnlyMemory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电控单元或主控设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (11)

1.一种软件安全测试方法,其特征在于,所述方法包括:
接收安全测试请求,所述安全测试请求包括测试软件部署信息、扫描介质信息和测试需求;所述测试软件部署信息用于指示测试软件***部署的服务器类别与区域;所述扫描介质信息为测试软件***所需测试的代码信息;
基于所述测试软件部署信息和测试需求创建至少一种类型的安全检测任务,并基于引擎参数配置策略将所述至少一种类型的安全检测任务分发到对应的引擎服务节点进行任务扫描,以使所述引擎服务节点基于所述扫描介质信息,调用对应的安全测试工具进行安全测试,得到测试结果;
将所述测试结果进行过滤处理,得到漏洞数据,并对所述漏洞数据进行分析,得到所述漏洞数据对应的影响参数;所述影响参数用于表述所述漏洞数据对应的风险程度;
基于所述影响参数构建安全质量画像,利用所述安全质量画像进行风险评估,得到风险等级。
2.根据权利要求1所述的方法,其特征在于,所述引擎参数配置策略包括:优先级分配策略和负载均衡分配策略;基于引擎参数配置策略将所述至少一种类型的安全检测任务分发到对应的引擎服务节点进行任务扫描,包括:
判断所述至少一种类型的安全检测任务是否对应有优先级信息;
若是,则获取所述至少一种类型的安全检测任务的优先级信息,并基于所述优先级信息调用优先级分配策略将所述至少一种类型的安全检测任务分发到对应的引擎服务节点进行任务扫描;
若否,则获取所述至少一种类型的安全检测任务的资源占用信息,并基于所述资源占用信息调用负载均衡分配策略将所述至少一种类型的安全检测任务分发到对应的引擎服务节点进行任务扫描。
3.根据权利要求1所述的方法,其特征在于,所述扫描介质信息包括代码仓地址、源码包地址和部署包地址;基于所述扫描介质信息,调用对应的安全测试工具进行安全测试,得到测试结果,包括:
基于所述代码仓地址、源码包地址和部署包地址,利用所述至少一种类型的安全检测任务对应的安全测试接口,调用所需的代码仓、源码包和部署包;所述安全测试接口为提前定义的用于数据调用的统一接口;所述代码仓、源码包和部署包分别用于存储相应的代码信息;
基于所述代码仓、源码包和部署包,利用多种安全测试工具进行安全测试,得到测试结果;每一安全测试工具对应有引擎服务节点;所述安全测试工具包括静态代码测试工具、动态代码测试工具、程序数据分析工具;
其中,所述静态代码测试工具用于测试源代码的安全漏洞问题;所述动态代码测试工具用于测试代码运行态的安全漏洞问题;所述程序数据分析工具用于对软件***研发过程中的敏感信息、配置参数和***漏洞进行检测。
4.根据权利要求1所述的方法,其特征在于,将所述测试结果进行过滤处理,得到漏洞数据,包括:
将所述测试结果与误报数据库中的数据进行比对,以过滤掉所述测试结果中的误报数据,得到漏洞数据;所述误报数据库为获取历史测试结果进行归类分析,得到历史误报数据,并基于所述历史误报数据构建的数据库;所述误报数据为判断错误的漏洞数据;
将所述漏洞数据按照预定义存储规则分区域存储于数据库中进行持久化保存。
5.根据权利要求1所述的方法,其特征在于,所述影响参数包括漏洞个数、漏洞类别、漏洞等级、漏洞利用难度、漏洞影响范围;基于所述影响参数构建安全质量画像,利用所述安全质量画像进行风险评估,得到风险等级,包括:
利用所述漏洞个数、所述漏洞类别、所述漏洞等级、所述漏洞利用难度、所述漏洞影响范围构建维度向量;
将所述维度向量输入风险评估模型中,得到风险等级;所述风险评估模型为提前训练好的基于循环神经网络的深度学习模型。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
基于所述风险等级查找对应级别的用户信息,并基于所述用户信息将漏洞数据发送到用户的终端设备上,以提示用户进行漏洞修复;
响应于用户的修复操作,利用安全测试工具对测试软件***进行漏洞验证,以验证所述测试软件***的漏洞是否修复成功。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
监控每一引擎服务节点的运行状态,当所述运行状态发生异常时,重新启动所述引擎服务节点进行任务扫描;
当重新启动所述引擎服务节点进行任务扫描失败后,生成告警提示信息,以提示用户所述引擎服务节点运行异常。
8.一种软件安全测试装置,其特征在于,所述装置包括:
接收模块,用于接收安全测试请求,所述安全测试请求包括测试软件部署信息、扫描介质信息和测试需求;所述测试软件部署信息用于指示测试软件***部署的服务器类别与区域;所述扫描介质信息为测试软件***所需测试的代码信息;
分发模块,用于基于所述测试软件部署信息和测试需求创建至少一种类型的安全检测任务,并基于引擎参数配置策略将所述至少一种类型的安全检测任务分发到对应的引擎服务节点进行任务扫描,以使所述引擎服务节点基于所述扫描介质信息,调用对应的安全测试工具进行安全测试,得到测试结果;
处理模块,用于将所述测试结果进行过滤处理,得到漏洞数据,并对所述漏洞数据进行分析,得到所述漏洞数据对应的影响参数;所述影响参数用于表述所述漏洞数据对应的风险程度;
评估模块,用于基于所述影响参数构建安全质量画像,利用所述安全质量画像进行风险评估,得到风险等级。
9.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-7中任一项所述的方法。
11.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现如权利要求1-7中任一项所述的方法。
CN202310988972.5A 2023-08-07 2023-08-07 软件安全测试方法、装置、设备、存储介质及程序产品 Pending CN117272308A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310988972.5A CN117272308A (zh) 2023-08-07 2023-08-07 软件安全测试方法、装置、设备、存储介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310988972.5A CN117272308A (zh) 2023-08-07 2023-08-07 软件安全测试方法、装置、设备、存储介质及程序产品

Publications (1)

Publication Number Publication Date
CN117272308A true CN117272308A (zh) 2023-12-22

Family

ID=89205145

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310988972.5A Pending CN117272308A (zh) 2023-08-07 2023-08-07 软件安全测试方法、装置、设备、存储介质及程序产品

Country Status (1)

Country Link
CN (1) CN117272308A (zh)

Similar Documents

Publication Publication Date Title
US10489283B2 (en) Software defect reporting
US11218510B2 (en) Advanced cybersecurity threat mitigation using software supply chain analysis
JP7073343B2 (ja) 難読化されたウェブサイトコンテンツ内のセキュリティ脆弱性及び侵入検出及び修復
TWI575397B (zh) 利用運行期代理器及動態安全分析之應用程式逐點保護技術
US8613080B2 (en) Assessment and analysis of software security flaws in virtual machines
CN103699480B (zh) 一种基于java的web动态安全漏洞检测方法
KR101743269B1 (ko) 행위 정보 분석 및 사용자 행위 패턴 모델링을 통한 이상행위 탐지 방법과 그를 위한 장치
CN113489713B (zh) 网络攻击的检测方法、装置、设备及存储介质
US11748487B2 (en) Detecting a potential security leak by a microservice
KR101143999B1 (ko) Api 기반 어플리케이션 분석 장치 및 방법
US8621613B1 (en) Detecting malware in content items
EP2126772A2 (en) Assessment and analysis of software security flaws
CN111835756B (zh) App隐私合规检测方法、装置、计算机设备及存储介质
CN111611592A (zh) 一种大数据平台安全评估方法及装置
CN114138590A (zh) Kubernetes集群的运维处理方法、装置及电子设备
CN117501658A (zh) 安全事件告警的可能性评估
US9348977B1 (en) Detecting malware in content items
KR101464736B1 (ko) 정보보호 관리 시스템 및 이를 통한 홈페이지 위변조 탐지 방법
CN116881979A (zh) 数据安全合规的检测方法、装置及设备
CN117032894A (zh) 容器安全状态检测方法、装置、电子设备及存储介质
CN116932381A (zh) 小程序安全风险自动化评估方法及相关设备
JP2005234661A (ja) アクセスポリシ生成システム、アクセスポリシ生成方法およびアクセスポリシ生成用プログラム
Ban et al. A Survey on IoT Vulnerability Discovery
CN111241547A (zh) 一种越权漏洞的检测方法、装置及***
CN117272308A (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