应用软件的漏洞检测方法、装置、电子设备及存储介质
文献发布时间:2024-04-18 19:59:31
技术领域
本申请涉及计算机技术领域,尤其涉及一种应用软件的漏洞检测方法、装置、电子设备及存储介质。
背景技术
万维网(Web)应用软件广泛应用于生产和生活中的各个行业,为了保证Web应用软件的可用性,需要检测并处理Web应用软件中出现的漏洞,为Web应用软件提供安全防护。现有技术中检测Web应用软件中漏洞,通过Web应用防火墙、Web漏扫等传统设备,对Web应用软件中的程序代码进行检测。
但是Web应用软件中程序代码较多,导致检测Web应用软件中漏洞的工作量较大,而且现有技术检测漏洞的程序固定,灵活性较低,容易遗漏Web应用软件中的漏洞,检测效果较差。
发明内容
本申请提供一种应用软件的漏洞检测方法、装置、电子设备及存储介质,用于检测并处理Web应用软件中出现的漏洞,为Web应用软件提供安全防护。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种应用软件的漏洞检测方法,方法包括:确定待检测应用软件的功能模块,得到多个功能模块;一个功能模块用于实现待检测应用软件的一个应用功能;对于任意一个功能模块,确定功能模块是否存在于预设的公共模块库中,若功能模块位于公共模块库中,则根据公共模块库关联的漏洞规则库,确定功能模块的第一漏洞检测规则,并根据第一漏洞检测规则,对功能模块进行漏洞检测;若功能模块不位于公共模块库中,则确定功能模块是否存在自定义漏洞检测规则,若存在自定义漏洞检测规则,则根据自定义漏洞检测规则对功能模块进行漏洞检测。
可选的,第一漏洞检测规则包括多个子规则,一个子规则对应一个漏洞检测逻辑;根据第一漏洞检测规则,对功能模块进行漏洞检测,包括:通过各子规则,分别对功能模块进行漏洞检测,得到多个检测结果。
可选的,方法还包括:对于任意一个子规则对应的检测结果,在检测结果为不合格的情况下,从预设的安全函数接口库中获取子规则对应的安全函数接口,并根据安全函数接口对功能模块进行漏洞修复;安全函数接口用于执行漏洞修复程序。
可选的,确定功能模块是否存在自定义漏洞检测规则,包括:获取功能模块的名称,并根据名称在漏洞规则库中进行漏洞规则检索,得到检索结果;若检索结果为空,则确定不存在自定义漏洞检测规则;若检索结果不为空,则将检索结果确定为自定义漏洞检测规则。
第二方面,提供一种应用软件的漏洞检测装置,检测装置包括确定单元以及处理单元;确定单元,用于确定待检测应用软件的功能模块,得到多个功能模块;一个功能模块用于实现待检测应用软件的一个应用功能;处理单元,用于对于任意一个功能模块,确定功能模块是否存在于预设的公共模块库中,若功能模块位于公共模块库中,则根据公共模块库关联的漏洞规则库,确定功能模块的第一漏洞检测规则,并根据第一漏洞检测规则,对功能模块进行漏洞检测;确定单元,还用于若功能模块不位于公共模块库中,则确定功能模块是否存在自定义漏洞检测规则,若存在自定义漏洞检测规则,则根据自定义漏洞检测规则对功能模块进行漏洞检测。
可选的,第一漏洞检测规则包括多个子规则,一个子规则对应一个漏洞检测逻辑;处理单元,具体用于:通过各子规则,分别对功能模块进行漏洞检测,得到多个检测结果。
可选的,处理单元,具体用于:对于任意一个子规则对应的检测结果,在检测结果为不合格的情况下,从预设的安全函数接口库中获取子规则对应的安全函数接口,并根据安全函数接口对功能模块进行漏洞修复;安全函数接口用于执行漏洞修复程序。
可选的,确定单元,具体用于:获取功能模块的名称,并根据名称在漏洞规则库中进行漏洞规则检索,得到检索结果;若检索结果为空,则确定不存在自定义漏洞检测规则;若检索结果不为空,则将检索结果确定为自定义漏洞检测规则。
第三方面,提供一种电子设备,包括:处理器、用于存储处理器可执行的指令的存储器;其中,处理器被配置为执行指令,以实现上述第一方面的应用软件的漏洞检测方法。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质上存储有指令,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述第一方面的应用软件的漏洞检测方法。
本申请实施例提供的技术方案至少带来以下有益效果:检测装置确定待检测应用软件的功能模块,得到多个功能模块;一个功能模块用于实现待检测应用软件的一个应用功能。对于任意一个功能模块,检测装置确定功能模块是否存在于预设的公共模块库中,若功能模块位于公共模块库中,则根据公共模块库关联的漏洞规则库,确定功能模块的第一漏洞检测规则,并根据第一漏洞检测规则,对功能模块进行漏洞检测。若功能模块不位于公共模块库中,则检测装置确定功能模块是否存在自定义漏洞检测规则,若存在自定义漏洞检测规则,则根据自定义漏洞检测规则对功能模块进行漏洞检测。现有技术中检测Web应用软件中漏洞,主要对Web应用软件中的程序代码进行检测,但是Web应用软件中程序代码较多,检测工作量较大,而且现有技术检测漏洞的程序固定,灵活性较低,容易遗漏Web应用软件中的漏洞,检测效果较差。本申请构建公共模块库与漏洞规则库,并将公共模块库与漏洞规则库关联,基于公共模块库与漏洞规则库,便可针对待检测应用软件中不同的功能模块,分别进行漏洞检测。相较于现有技术笼统地对Web应用软件中的程序代码进行检测,本申请基于第一漏洞检测规则以及自定义漏洞检测规则,针对待检测应用软件中不同的功能模块,分别进行漏洞检测,使得漏洞检测更有针对性,更加细致、准确,提高了漏洞检测效率,实用性更强。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种漏洞检测系统结构示意图;
图2为本申请实施例提供的一种应用软件的漏洞检测方法的流程示意图;
图3为本申请实施例提供的一种公共模块库示意图;
图4为本申请实施例提供的一种漏洞规则库示意图;
图5为本申请实施例提供的一种安全函数接口库示意图;
图6为本申请实施例提供的一种Web应用软件安全开发模块示意图;
图7为本申请实施例提供的一种Web应用软件安全开发流程示意图;
图8为本申请实施例提供的一种检测装置的结构示意图;
图9为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
还需要说明的是,本申请实施例中,“的(英文:of)”,“相应的(英文:corresponding,relevant)”和“对应的(英文:corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不是在对数量和执行次序进行限定。
在对本申请实施例进行详细地解释说明之前,先对本申请实施例涉及到的一些相关技术术语以及相关技术进行介绍。
随着数字化转型的加速推进,人们的工作和生活正在进入数字化时代,软件作为新一代信息技术的灵魂,在数字化进程中发挥着重要的支撑作用,Web应用软件是软件的重要组成部分,已经广泛应用于生产和生活中的各个行业。为了保证Web应用软件的可用性,需要检测并处理Web应用软件中出现的漏洞,为Web应用软件提供安全防护。
现有技术对于软件应用安全的防护手段有Web应用防火墙、Web漏扫设备、交互式应用安全测试(Interactive Application Security Testing,IAST)、应用运行时自我保护(Runtime Application Self-Protection,RASP)以及静态源码分析技术(Staticapplication security testing,SAST)工具等。
其中,Web应用防火墙、Web漏扫设备等传统设备检测漏洞的程序固定,灵活性较低,只对已知规则漏洞有一定的防护作用,无法检测出最新的安全漏洞。IAST使用插桩来收集安全信息,直接从运行的代码发现问题,RASP在运行时检测攻击,阻止漏洞被利用;IAST和RASP技术,可以将漏洞定位到代码级别,对Web应用安全防护和代码漏洞检测有一定防护作用,但在漏洞检测时,需要启动代理程序(agent)运行到应用中,即需要与项目一同运行,加大了服务器的运行压力,容易对项目运行产生影响。静态源码分析技术工具可以在编码阶段静态扫描源代码,但不考虑项目功能,只检测代码中的漏洞,误报率较高,需要开发人员花费大量时间进行过滤,导致项目开发效率变低。
鉴于上述问题,本申请提供一种应用软件的漏洞检测方法,检测装置确定待检测应用软件的功能模块,得到多个功能模块。对于任意一个功能模块,确定功能模块是否存在于预设的公共模块库中,若功能模块位于公共模块库中,则检测装置根据公共模块库关联的漏洞规则库,确定功能模块的第一漏洞检测规则,并根据第一漏洞检测规则,对功能模块进行漏洞检测。若功能模块不位于公共模块库中,则检测装置确定功能模块是否存在自定义漏洞检测规则,若功能模块存在自定义漏洞检测规则,则根据自定义漏洞检测规则对功能模块进行漏洞检测;若功能模块不存在自定义漏洞检测规则,则将开发该功能模块可能出现的漏洞与对应的自定义漏洞检测规则,导入漏洞规则库,完成漏洞规则库的更新。
下面结合附图对本申请实施例提供的应用软件的漏洞检测方法进行详细说明。
本申请实施例提供的应用软件的漏洞检测方法可以适用于漏洞检测系统,图1示出了该漏洞检测系统的一种结构示意图。如图1所示,漏洞检测系统10包括漏洞检测装置(以下简称检测装置)11以及服务器12。其中,检测装置11与服务器12之间可以采用有线方式连接,也可以采用无线方式连接,本申请实施例对此不作限定。
服务器12可以收集软件开发中常用的功能模块,供检测装置11构建公共模块库;服务器12还可以从国内外的漏洞库以及渗透测试经验中梳理常见的Web应用软件漏洞,供检测装置11基于Web应用软件漏洞,生成漏洞检测规则,检测装置11整合Web应用软件漏洞与漏洞检测规则,构建漏洞规则库。检测装置11还可以针对漏洞规则库中的每个漏洞,开发安全函数接口,进而构建安全函数接口库,具体的构建方法可以参考下述实施例的介绍,此处不再赘述。
检测装置11可以确定待检测应用软件的功能模块,并基于构建的公共模块库关联的漏洞规则库,对功能模块进行漏洞检测,具体的检测方法可以参考下述实施例的介绍,此处不再赘述。
检测装置11,可以为具有数据处理功能的电子设备。例如检测装置11可以为计算机、平板电脑、笔记本电脑、超级移动计算机(ultra-mobile personal computer,UMPC)等,本申请实施例对检测装置11的具体类型不作限制。
服务器12可以为单个的服务器,也可以为服务器集群,还可以是服务器中芯片或片上系统等,本申请实施例对服务器的具体类型不作限制。
图2是根据一些示例性实施例示出的一种应用软件的漏洞检测方法的流程示意图。在一些实施例中,上述应用软件的漏洞检测方法可以应用到如图1所示的检测装置,也可以应用到其他类似设备。
如图2所示,本申请实施例提供的应用软件的漏洞检测方法,包括下述S201-S203。
S201、确定待检测应用软件的功能模块,得到多个功能模块。
其中,一个功能模块用于实现待检测应用软件的一个应用功能。
作为一种可能实现的方式,在应用软件开发前期,检测装置分析软件需求,将整个应用软件项目分为多个需求模块,即得到多个应用软件的功能模块。
S202、对于任意一个功能模块,确定功能模块是否存在于预设的公共模块库中,若功能模块位于公共模块库中,则根据公共模块库关联的漏洞规则库,确定功能模块的第一漏洞检测规则,并根据第一漏洞检测规则,对功能模块进行漏洞检测。
其中,第一漏洞检测规则包括多个子规则,一个子规则对应一个漏洞检测逻辑。
作为一种可能实现的方式,检测装置基于软件开发中常用的功能模块,构建公共模块库;获取国内外的漏洞库以及渗透测试经验中,梳理的常见的Web应用软件漏洞,基于Web应用软件漏洞,生成漏洞检测规则,整合Web应用软件漏洞与漏洞检测规则,构建漏洞规则库,并将公共模块库与漏洞规则库关联。检测装置针对漏洞规则库中的每个漏洞,开发安全函数接口,进而构建安全函数接口库。
检测装置检测应用软件的功能模块,确定功能模块是否存在于公共模块库中,若功能模块位于公共模块库中,则根据公共模块库关联的漏洞规则库,确定功能模块的第一漏洞检测规则,并根据第一漏洞检测规则,对功能模块进行漏洞检测,具体包括:检测装置基于第一漏洞检测规则中的各子规则,分别对各功能模块进行漏洞检测,得到多个检测结果。对于任意一个子规则对应的检测结果,在检测结果为不合格的情况下,检测装置从安全函数接口库中获取各子规则对应的安全函数接口,并根据安全函数接口对对应的功能模块进行漏洞修复。
示例性的,如图3所示,检测装置获取软件开发中常用的功能模块,例如用户登录模块(创建用户登陆界面、用户登陆处理界面等用于实现用户登录应用软件)、数据库交互模块(使用编程语言可以与数据库进行数据交互,编程语言通过数据库管理系统提供的接口和工具,建立连接并执行查询和操作,以实现和数据库的交互,进而实现应用程序和数据库之间的传输和处理等)、用户输入验证模块(用于对用户输入的数据类型、格式以及长度等进行验证,并使用安全过滤技术确保用户输入的安全性和数据完整性)以及JS对象简谱(JavaScript Object Notation,JSON)解析模块(JSON用于数据交换,JSON解析包括序列化与反序列化,序列化用于将Java中的对象快速的转换为JSON格式的字符串,反序列化用于将JSON格式的字符串转换为Java的对象)等软件开发中常用的功能模块,整合上述功能模块,构建公共模块库。
如图4所示,检测装置从国内外的漏洞库以及渗透测试经验中梳理常见的Web应用软件漏洞,例如结构化查询语言(Structured Query Language,SQL)注入、爆破攻击、弱口令、跨站脚本攻击以及文件上传漏洞等常见的Web应用软件漏洞。其中,SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;SQL注入,是指Web应用程序在接收相关数据参数时未做好过滤,将其直接带到数据库中查询,导致攻击者可以拼接并执行构造的SQL语句,即在Web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。弱口令没有严格和准确的定义,通常认为容易被别人猜测到或破解工具破解的口令均为弱口令,攻击者攻击此漏洞可直接进入应用系统或管理系统,从而进行系统、网页、数据的篡改与删除,非法获取系统、用户的数据,甚至导致服务器沦陷。爆破攻击是一种基于暴力破解密码的攻击方式,攻击者通过不断尝试各种可能的密码组合,直到找到正确的密码为止,常用于破解弱密码或者没有启动多元素认证的账户。跨站脚本攻击(Cross Site Scripting,XSS),通常发生在软件客户端,可被用于进行窃取隐私、窃取代码、传播恶意代码等。文件上传漏洞,通常由网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过Web访问的目录上传任意文件,包括网站后门文件,进而远程控制网站服务器。
检测装置对每个漏洞整理典型的缺陷代码(缺陷代码指软件中不符合业务逻辑的代码、软件运行中不符合预期的值、软件交互过程中不符合预期的行为以及代码自身缺陷等),通过正则表达式、敏感函数等将缺陷代码进行规则提取(正则表达式是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,用以表达对字符串的一种过滤逻辑;在代码安全审计中,快速定位敏感函数,有助于更快发现漏洞),建立缺陷代码库,得到多个漏洞检测规则(可根据不同的功能模块,选择不同的漏洞规则,用于检测应用软件代码中的漏洞),检测装置整合Web应用软件漏洞与漏洞检测规则,构建漏洞规则库,并在发现新的漏洞时,将新的漏洞(如漏洞1、漏洞2)与对应的漏洞检测规则导入漏洞规则库,使得漏洞规则库不断更新。
如图5所示,检测装置针对漏洞规则库中的每个漏洞,开发多个安全函数接口,进而构建安全函数接口库。例如,针对漏洞规则库中的SQL注入、爆破攻击、弱口令等漏洞,分别开发SQL注入安全函数接口、爆破攻击安全函数接口、弱口令安全函数接口等安全函数接口,并在漏洞规则库更新漏洞时,如发现新的漏洞:漏洞1、漏洞2时,将安全函数接口库随之更新,新增漏洞1对应的漏洞1安全函数接口、漏洞2对应的漏洞2安全函数接口。其中,每个安全函数接口都包含防御对应漏洞的代码,用于在编码过程中有效避免漏洞,或者对已发现的漏洞进行修复。
如图6所示,检测装置将公共模块库与漏洞规则库关联,即确定公共模块库中每个功能模块可能出现的漏洞类型。检测装置检测应用软件的功能模块,确定功能模块是否存在于公共模块库中,若在公共模块库中存在对应的功能模块,则根据公共模块库关联的漏洞规则库,确定该功能模块在漏洞规则库中对应的漏洞与第一漏洞检测规则(第一漏洞检测规则包括多个子规则,一个子规则对应一个漏洞检测逻辑),并根据第一漏洞检测规则,对功能模块进行漏洞检测。例如,应用软件项目中的用户登录模块,在公共模块库中存在对应的用户登录模块,该用户登录模块在漏洞规则库中对应了SQL注入、爆破攻击、弱口令等可能出现的漏洞,则检测装置基于SQL注入漏洞检测规则、爆破攻击漏洞检测规则、弱口令检测规则等子规则,对用户登录模块进行漏洞检测,得到多个检测结果;当任意一个子规则对应的检测结果不合格时(如SQL注入漏洞检测规则,检测到用户登录模块存在SQL注入漏洞),检测装置从安全函数接口库中获取各子规格对应的安全函数接口,并根据安全函数接口对对应的功能模块进行漏洞修复(如检测装置检测到用户登录模块存在SQL漏洞后,从安全函数接口库中获取SQL注入安全函数接口,并根据SQL注入安全函数接口中包含的代码,对SQL注入漏洞进行修复)。
如图6所示,在软件开发过程中,检测装置可以选择公共模块库,通过集成开发环境(Integrated Development Environment,IDE)插件,将对应的安全函数接口内嵌入应用软件功能模块中,通过简单调用即可完成相应功能模块的的安全开发。例如,应用软件项目中的用户登录模块对应公共模块库中的用户登录模块,公共模块库中的用户登录模块对应漏洞规则库中的SQL注入、爆破攻击、弱口令等漏洞,漏洞规则库中的SQL注入、爆破攻击、弱口令等漏洞又对应了安全函数接口库中的SQL注入安全函数接口、爆破攻击安全函数接口、弱口令安全函数接口等安全函数接口,则检测装置可以通过IDE插件,将SQL注入安全函数接口、爆破攻击安全函数接口、弱口令安全函数接口等安全函数接口,内嵌入应用软件项目中的用户登录模块中。检测装置将上述安全函数接口内嵌入应用软件项目中的用户登录模块后,在开发Web应用软件用户登录模块时,上述安全函数接口中包含的代码,会对开发用户登录模块时可能出现的漏洞进行防护,且会在对应漏洞出现时进行漏洞修复。
S203、若功能模块不位于公共模块库中,则确定功能模块是否存在自定义漏洞检测规则,若存在自定义漏洞检测规则,则根据自定义漏洞检测规则对功能模块进行漏洞检测。
作为一种可能实现的方式,检测装置获取功能模块的名称,并根据名称在漏洞规则库中进行漏洞规则检索,得到检索结果;若检索结果为空,则确定不存在自定义漏洞检测规则;若检索结果不为空,则将检索结果确定为自定义漏洞检测规则,并根据自定义漏洞检测规则对功能模块进行漏洞检测。
示例性的,如图6所示,检测装置检测应用软件项目中的功能模块,确定功能模块是否存在于公共模块库中,若在公共模块库中不存在对应的功能模块,则确定功能模块是否存在自定义漏洞检测规则。当漏洞规则库中存在开发功能模块过程中可能出现的漏洞时,则功能模块存在自定义漏洞检测规则,此时检测装置根据自定义漏洞检测规则对功能模块进行漏洞检测。例如检测装置针对应用软件项目中的自定义模块1,在漏洞规则库中获取,开发该自定义模块1过程中可能出现的漏洞A;针对自定义模块2,在漏洞规则库中获取,开发该自定义模块2过程中可能出现的漏洞1、漏洞2,将上述自定义模块1与自定义模块2整合组成自定义模块库,此时自定义模块库与漏洞规则库相关联,即自定义模块1与漏洞规则库中的漏洞A对应,自定义模块2与漏洞规则库中的漏洞1、漏洞2对应。该自定义模块库包括自定义模块1与自定义模块2,即应用软件项目中的自定义模块1与自定义模块2,在自定义模块库中存在对应的自定义模块1与自定义模块2,此时检测装置基于漏洞A检测规则对自定义模块1进行漏洞检测,基于漏洞1检测规则、漏洞2检测规则等自定义漏洞检测规则,对自定义模块2进行漏洞检测,得到多个检测结果。
当存在检测结果不合格时,如当漏洞1检测规则,检测到自定义模块2存在漏洞1,则检测装置从安全函数接口库中获取漏洞1安全函数接口,并根据漏洞1安全函数接口中包含的代码,对漏洞1进行修复。当漏洞规则库中不存在开发功能模块过程中可能出现的漏洞时,则功能模块不存在自定义漏洞检测规则,此时检测装置将开发该功能模块可能出现的漏洞添加至漏洞检测库中,并对上述可能出现的漏洞整理典型的缺陷代码,将缺陷代码进行规则提取,得到自定义漏洞检测规则,并将上述漏洞与对应的自定义漏洞检测规则导入漏洞规则库,完成漏洞规则库的更新。
如图6所示,在软件开发过程中,检测装置可以选择自定义模块库,通过IDE插件,对关联有自定义漏洞检测规则的自定义漏洞进行处理,使得自定义漏洞对应的自定义漏洞安全函数接口,内嵌入应用软件项目中对应的自定义功能模块。例如,针对应用软件项目中的自定义模块2,勾选自定义模块2对应的漏洞1、漏洞2后,构建包含自定义模块2的自定义模块库,由于漏洞规则库中的漏洞1、漏洞2对应安全函数接口库中的漏洞1安全函数接口、漏洞2安全函数接口,则检测装置可以通过IDE插件,将上述漏洞1安全函数接口、漏洞2安全函数接口,内嵌入应用软件项目中对应的自定义功能模块2。检测装置将上述安全函数接口内嵌入应用软件项目中的自定义功能模块2后,在开发自定义功能模块2时,上述安全函数接口中包含的代码,会对开发自定义功能模块2时可能出现的漏洞进行防护,而且会在对应漏洞出现时进行漏洞修复。
如图7所示,在应用软件开发前期,检测装置分析软件需求,将Web应用软件项目分成多个需求模块,即分解成与公共模块库对应的多个功能模块(公共库模块)、多个在公共模块库中无对应模块的功能模块(自定义模块),以及业务本身逻辑不适合构建模块的自开发代码。上述功能模块均能通过IDE插件,将自身对应的安全函数接口内嵌入功能模块中,用于完成Web应用的安全开发。针对自开发代码,检测装置在漏洞规则库中选择自开发代码可能关联的漏洞类型,用漏洞规则库中自开发代码关联漏洞对应的漏洞规则,对自开发代码进行漏洞检测,找出有安全风险的点,并通过自开发代码关联漏洞对应的安全函数接口,对自开发代码中的漏洞出现时进行漏洞修复,进而完成Web应用的安全开发。
可以理解的,检测装置获取软件开发中常用的功能模块,构建公共模块库;从国内外的漏洞库以及渗透测试经验中,梳理常见的Web应用软件漏洞,基于Web应用软件漏洞,对每个漏洞整理典型的缺陷代码,将缺陷代码进行规则提取,得到多个漏洞检测规则,并整合Web应用软件漏洞与漏洞检测规则,构建漏洞规则库,并将公共模块库与漏洞规则库关联。检测装置针对漏洞规则库中的每个漏洞,开发多个安全函数接口,整合多个安全函数接口,进而构建安全函数接口库。
如图6所示,在应用软件开发前期,检测装置分析软件需求,将整个应用软件项目分为多个需求模块,即得到多个应用软件的功能模块。检测装置检测应用软件的功能模块,确定功能模块是否存在于公共模块库中,若在公共模块库中存在对应的功能模块,则根据公共模块库关联的漏洞规则库,确定功能模块的第一漏洞检测规则,基于第一漏洞检测规则中的各子规则,分别对各功能模块进行漏洞检测,得到多个检测结果。对于任意一个子规则对应的检测结果,在检测结果为不合格的情况下,检测装置从安全函数接口库中获取各子规则对应的安全函数接口,通过IDE插件,将各子规则对应的安全函数接口,内嵌入各子规则对应的应用软件项目中的功能模块中,并根据安全函数接口对对应的功能模块进行漏洞修复。若在公共模块库中不存在对应的功能模块,则检测装置确定功能模块是否存在自定义漏洞检测规则,若漏洞规则库中存在开发功能模块过程中可能出现的漏洞时,则存在自定义漏洞检测规则,此时检测装置根据自定义漏洞检测规则对功能模块进行漏洞检测,得到多个检测结果,在检测结果为不合格的情况下,检测装置从安全函数接口库中获取自定义漏洞检测规则对应的安全函数接口,通过IDE插件,将自定义漏洞检测规则对应的安全函数接口,内嵌入自定义漏洞检测规则对应的应用软件项目中的功能模块中,并根据安全函数接口对对应的功能模块进行漏洞修复。若漏洞规则库中不存在开发功能模块过程中可能出现的漏洞时,则功能模块不存在自定义漏洞检测规则,此时检测装置将开发该功能模块可能出现的漏洞添加至漏洞检测库中,并对上述可能出现的漏洞整理典型的缺陷代码,将缺陷代码进行规则提取,得到自定义漏洞检测规则,并将上述漏洞与对应的自定义漏洞检测规则导入漏洞规则库,完成漏洞规则库的更新。
针对自开发代码,检测装置在漏洞规则库中选择自开发代码可能关联的漏洞类型,采用漏洞规则库中自开发代码关联漏洞对应的漏洞规则,对自开发代码进行漏洞检测,并通过自开发代码关联漏洞对应的安全函数接口,对自开发代码中的漏洞出现时进行漏洞修复。检测装置将Web应用软件项目分为多个功能模块以及自开发代码,并通过IDE插件,将各功能模块以及自开发代码对应的安全函数接口,内嵌入应用软件项目中,保证及时检测并处理Web应用软件中出现的漏洞,进而完成Web应用软件的安全开发。
本申请实施例提供的技术方案至少带来以下有益效果:检测装置确定待检测应用软件的功能模块,得到多个功能模块;一个功能模块用于实现待检测应用软件的一个应用功能。对于任意一个功能模块,检测装置确定功能模块是否存在于预设的公共模块库中,若功能模块位于公共模块库中,则根据公共模块库关联的漏洞规则库,确定功能模块的第一漏洞检测规则,并根据第一漏洞检测规则,对功能模块进行漏洞检测。若功能模块不位于公共模块库中,则检测装置确定功能模块是否存在自定义漏洞检测规则,若存在自定义漏洞检测规则,则根据自定义漏洞检测规则对功能模块进行漏洞检测。现有技术中检测Web应用软件中漏洞,主要对Web应用软件中的程序代码进行检测,但是Web应用软件中程序代码较多,检测工作量较大,而且现有技术检测漏洞的程序固定,灵活性较低,容易遗漏Web应用软件中的漏洞,检测效果较差。本申请构建公共模块库与漏洞规则库,并将公共模块库与漏洞规则库关联,基于公共模块库与漏洞规则库,便可针对待检测应用软件中不同的功能模块,分别进行漏洞检测。相较于现有技术笼统地对Web应用软件中的程序代码进行检测,本申请基于第一漏洞检测规则以及自定义漏洞检测规则,针对待检测应用软件中不同的功能模块,分别进行漏洞检测,使得漏洞检测更有针对性,更加细致、准确,提高了漏洞检测效率,实用性更强。
上述实施例主要从装置(设备)的角度对本申请实施例提供的方案进行了介绍。可以理解的是,为了实现上述方法,装置或设备包含了执行各个方法流程相应的硬件结构和/或软件模块,这些执行各个方法流程相应的硬件结构和/或软件模块可以构成一个物料信息的确定装置。本领域技术人员应该很容易意识到,结合本文中所发明的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对装置或设备进行功能模块的划分,例如,装置或设备可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图8是根据一示例性实施例示出的检测装置的结构示意图。参照图8所示,本申请实施例提供的检测装置30包括确定单元301以及处理单元302。
确定单元301,用于确定待检测应用软件的功能模块,得到多个功能模块;一个功能模块用于实现待检测应用软件的一个应用功能;处理单元302,还用于对于任意一个功能模块,确定功能模块是否存在于预设的公共模块库中,若功能模块位于公共模块库中,则根据公共模块库关联的漏洞规则库,确定功能模块的第一漏洞检测规则,并根据第一漏洞检测规则,对功能模块进行漏洞检测;确定单元301,还用于若功能模块不位于公共模块库中,则确定功能模块是否存在自定义漏洞检测规则,若存在自定义漏洞检测规则,则根据自定义漏洞检测规则对功能模块进行漏洞检测。
可选的,第一漏洞检测规则包括多个子规则,一个子规则对应一个漏洞检测逻辑;处理单元302,具体用于:通过各子规则,分别对功能模块进行漏洞检测,得到多个检测结果。
可选的,处理单元302,具体用于:对于任意一个子规则对应的检测结果,在检测结果为不合格的情况下,从预设的安全函数接口库中获取子规则对应的安全函数接口,并根据安全函数接口对功能模块进行漏洞修复;安全函数接口用于执行漏洞修复程序。
可选的,确定单元301,具体用于:获取功能模块的名称,并根据名称在漏洞规则库中进行漏洞规则检索,得到检索结果;若检索结果为空,则确定不存在自定义漏洞检测规则;若检索结果不为空,则将检索结果确定为自定义漏洞检测规则。
图9是本申请提供的一种电子设备的结构示意图。如图9,该电子设备40可以包括至少一个处理器401以及用于存储处理器可执行指令的存储器402其中,处理器401被配置为执行存储器402中的指令,以实现上述实施例中的应用软件的漏洞检测方法。
另外,电子设备40还可以包括通信总线403以及至少一个通信接口404。
处理器401可以是一个处理器(central processing units,CPU),微处理单元,ASIC,或一个或多个用于控制本申请方案程序执行的集成电路。
通信总线403可包括一通路,在上述组件之间传送信息。
通信接口404,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
存储器402可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器401相连接。存储器也可以和处理器401集成在一起。
其中,存储器402用于存储执行本申请方案的指令,并由处理器401来控制执行。处理器401用于执行存储器402中存储的指令,从而实现本申请方法中的功能。
作为一个示例,结合图8,检测装置30中的确定单元301以及处理单元302实现的功能与图9中的处理器401的功能相同。
在具体实现中,作为一种实施例,处理器401可以包括一个或多个CPU,例如图9中的CPU0和CPU1。
在具体实现中,作为一种实施例,电子设备40可以包括多个处理器,例如图9中的处理器401和处理器407。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,电子设备40还可以包括输出设备405和输入设备406。输出设备405和处理器401通信,可以以多种方式来显示信息。例如,输出设备405可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备406和处理器401通信,可以以多种方式接受用户对象的输入。例如,输入设备406可以是鼠标、键盘、触摸屏设备或传感设备等。
本领域技术人员可以理解,图9中示出的结构并不构成对电子设备40的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
另外,本申请还提供一种计算机可读存储介质,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述实施例所提供的应用软件的漏洞检测方法。
另外,本申请还提供一种计算机程序产品,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如上述实施例所提供的应用软件的漏洞检测方法。
本领域技术人员在考虑说明书及实践这里发明的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求指出。
- 一种陶瓷釉上绘画色浆及陶瓷釉上绘画方法和应用
- 一种艺术设计用绘画系统及方法
- 一种艺术设计用绘画系统及方法