CN111027073B - 漏洞检测方法、装置、设备及存储介质 - Google Patents

漏洞检测方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN111027073B
CN111027073B CN201911192825.7A CN201911192825A CN111027073B CN 111027073 B CN111027073 B CN 111027073B CN 201911192825 A CN201911192825 A CN 201911192825A CN 111027073 B CN111027073 B CN 111027073B
Authority
CN
China
Prior art keywords
command
analysis result
attribute parameters
commands
statement
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
CN201911192825.7A
Other languages
English (en)
Other versions
CN111027073A (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.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies 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 Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN201911192825.7A priority Critical patent/CN111027073B/zh
Publication of CN111027073A publication Critical patent/CN111027073A/zh
Application granted granted Critical
Publication of CN111027073B publication Critical patent/CN111027073B/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/033Test or assess software

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)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种漏洞检测方法、装置、设备及存储介质。其中,该方法包括:获取待分析的命令语句及所述命令语句的属性参数;解析所述命令语句,得到所述命令语句相应于所述属性参数的解析结果;基于所述解析结果和所述属性参数中相应信息进行比较,对所述命令语句进行漏洞检测,生成漏洞检测结果。本发明实施例可以自动检测命令语句中的漏洞。

Description

漏洞检测方法、装置、设备及存储介质
技术领域
本发明涉及软件安全检测领域,尤其涉及一种漏洞检测方法、装置、设备及存储介质。
背景技术
漏洞是信息系统在生命周期的各个阶段(设计、实现、运维等过程)中产生的某类问题,这些问题会对系统的安全(机密性、完整性、可用性)产生影响。软件开发项目中,若没有统一的安全编码规范和解决方案,很容易导致各种各样的漏洞,命令注入漏洞就是其中很常见且危害严重的一类漏洞。
各种开发语言都提供了执行系统命令的函数,在使用这些函数的时候,研发人员需要自行构造命令语句,如果命令语句中包含有攻击者可控制的部分,那么研发人员就需要对这部分内容进行安全性处理,否则就会导致漏洞。
发明内容
有鉴于此,本发明实施例提供了一种漏洞检测方法、装置、设备及存储介质,旨在有效检测命令语句中的漏洞。
本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种漏洞检测方法,包括:
获取待分析的命令语句及所述命令语句的属性参数;
解析所述命令语句,得到所述命令语句相应于所述属性参数的解析结果;
基于所述解析结果和所述属性参数中相应信息进行比较,对所述命令语句进行漏洞检测,生成漏洞检测结果。
本发明实施例还提供了一种漏洞检测装置,包括:
获取模块,用于获取待分析的命令语句及所述命令语句的属性参数;
解析模块,用于解析所述命令语句,得到所述命令语句相应于所述属性参数的解析结果;
检测模块,用于基于所述解析结果和所述属性参数中相应信息进行比较,对所述命令语句进行漏洞检测,生成漏洞检测结果。
本发明实施例又提供了一种漏洞检测设备,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,所述处理器,用于运行计算机程序时,执行本发明任一实施例所述方法的步骤。
本发明实施例还提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现本发明任一实施例所述方法的步骤。
本发明实施例提供的技术方案,通过获取待分析的命令语句及所述命令语句的属性参数;解析所述命令语句,得到所述命令语句相应于所述属性参数的解析结果;基于所述解析结果和所述属性参数对所述命令语句进行漏洞检测,生成漏洞检测结果,可以自动检测命令语句中的漏洞。
附图说明
图1为本发明实施例漏洞检测方法的流程示意图;
图2为本发明一应用实施例检测方法的流程示意图;
图3为本发明另一应用实施例漏洞检测方法的流程示意图;
图4为本发明实施例漏洞检测装置的结构示意图;
图5为本发明实施例漏洞检测设备的结构示意图。
具体实施方式
下面结合附图及实施例对本发明再作进一步详细的描述。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释:
命令语句:命令语句是操作系统使用的一种语言,命令是指按命令语言规定格式组成的字符串,一条命令相当于一个语句。
命令注入漏洞:命令注入漏洞是常见的一种漏洞形式,它属于输入验证类漏洞,调用系统命令时,如果要执行的命令没有经过正确的安全性处理,导致攻击者可以执行规定命令之外的命令就会导致该漏洞,该类漏洞往往危害严重,利用该漏洞可以直接获得当前进程的权限。
参数注入漏洞:参数注入漏洞属于输入验证类漏洞,调用系统命令时,如果要执行的命令没有经过正确的安全性处理,导致攻击者可以插入额外命令参数就会导致该漏洞,该漏洞的实际危害取决于执行的命令,有些命令的参数可以执行任意命令,如果应用本身想要执行的是这些命令,则会直接导致攻击者获得当前进程的权限。
针对命令注入漏洞,相关技术的解决方案通常包含以下三种情况:
(1)、使用转义函数对要拼接的参数先进行转义再拼接执行;
(2)、采用输入校验的方式对要拼接内容进行格式校验或黑/白名单字符校验;
(3)、使用安全的命令执行函数,函数本身提供命令安全拼接功能,防止研发人员自己拼接命令。
以上三个解决方案都存在一定的缺陷,分别对应如下:
(1)、很多语言没有源生的转义函数,需要项目中提供或研发人员自行编写,这就导致两个风险:一是转义函数实现存在缺陷,转义错误或缺少对某些特殊字符的转义;二是单双引号引用不固定,有些转义函数是默认在单引号引用参数的前提下进行转义,有些是默认在双引号引用参数的前提下进行转义,还有些会在转义之后自行添加单双引号,上述三种不同的情况导致在拼接转义后字符串的时候需要拼接的内容是不同的,如果研发人员没有理解很容易导致错误使用,引发bug甚至漏洞;
(2)、格式校验或黑/白名单字符校验需要与业务结合,不能通用解决所有问题,该种方法不仅可能会影响业务,也会受参数是被单引号引用还是双引号引用甚至是没有引用的影响而导致需要过滤的特殊字符不同;
(3)、很多开发语言是不存在源生安全执行命令的函数的,依然需要项目提供或研发人员自行编写,上述(1)中的缺陷也可能存在。此外,还存在一个缺陷,那就是命令的局限性,有时会发现命令要使用管道符、导出符等功能,如果这些函数没有提供这样的功能,研发人员就要自行拼接命令,更容易导致命令注入漏洞。
基于此,本发明各种实施例中,通过获取待分析的命令语句及所述命令语句的属性参数;解析所述命令语句,得到所述命令语句相应于所述属性参数的解析结果;基于所述解析结果和所述属性参数对所述命令语句进行漏洞检测,生成漏洞检测结果,可以自动检测命令语句中的漏洞。
本发明实施例提供了一种漏洞检测方法,应用于漏洞检测设备,如图1所示,该漏洞检测方法包括:
步骤101,获取待分析的命令语句及所述命令语句的属性参数;
这里,漏洞检测设备可以为服务器或者客户端,可以获取本地或者远程输入的待分析的命令语句及所述命令语句的属性参数。
在一实施例中,命令语句可以为shell命令,命令语句的属性参数包括以下至少之一:要执行的命令的个数、命令集合、每个命令的集合参数及是否允许导出文件。实际应用时,采用第一标识来表征所述命令语句是否允许导出文件,该第一标识可以为一个布尔类型数据,通过不同的赋值来表征所述命令语句是否允许导出文件。
步骤102,解析所述命令语句,得到所述命令语句相应于所述属性参数的解析结果;
这里,漏洞检测设备可以通过调用命令解析器来解析所述命令语句,得到所述命令语句的解析结果。该解析结果包括以下至少之一:命令个数、具体是什么命令、每个命令的参数集合以及是否允许导出文件。实际应用时,采用第二标识来表征解析结果中所述命令语句是否允许导出文件,该第二标识可以为一个布尔类型数据,通过不同的赋值来表征所述命令语句是否允许导出文件。
步骤103,基于所述解析结果和所述属性参数中相应信息进行比较,对所述命令语句进行漏洞检测,生成漏洞检测结果。
这里,基于解析结果和所述属性参数中相应的信息进行检测,生成漏洞检测结果,可以自动检测命令语句中的漏洞。具体地,可以基于解析结果中的命令个数与属性参数中的命令个数进行漏洞检测,还可以基于解析结果中的命令是否落入属性参数中的命令集合进行漏洞检测,还可以基于解析结果中的每个命令的参数集合是否与属性参数中相应命令的参数集合匹配来进行漏洞检测,还可以基于解析结果中的第二标识与属性参数中的第一标识进行漏洞检测。
应用本发明实施例漏洞检测方法,可以不修改命令语句的源代码逻辑,只需在调用命令执行函数之前对拼接后的系统命令字符串进行检查即可有效地检查出是否存在漏洞。这样,不需要研发人员了解防止漏洞该如何转义或者过滤哪些特殊字符,只需要知道将要执行的命令语句的属性参数即可。
在一实施例中,所述基于所述解析结果和所述属性参数中相应信息进行比较,对所述命令语句进行漏洞检测,生成漏洞检测结果,包括:
确定所述属性参数包括所述命令语句对应的命令个数;
比较所述解析结果中的命令个数与所述属性参数中的命令个数,若所述解析结果中的命令个数大于所述属性参数中的命令个数,生成存在命令注入漏洞的第一检测结果。
这样,只需要预先知道命令语句要执行的命令个数,即可根据解析结果中的命令个数来判断该命令语句是否存在命令注入漏洞。
在一实施例中,所述基于所述解析结果和所述属性参数中相应信息进行比较,对所述命令语句进行漏洞检测,生成漏洞检测结果,包括:
确定所述属性参数包括所述命令语句对应的命令集合;
判断所述解析结果中的命令是否落入所述命令集合,若所述解析结果中的命令未落入所述命令集合,生成存在命令注入漏洞的第一检测结果。
这样,只需要预先知道命令语句的命令集合,即可根据解析结果中的命令来判断该命令语句是否存在命令注入漏洞。
在一实施例中,所述方法还包括:
若所述解析结果中的命令个数小于或等于所述属性参数中的命令个数,且所述属性参数包括所述命令语句对应的命令集合;
判断所述解析结果中的命令是否落入所述命令集合,若所述解析结果中的命令未落入所述命令集合,生成存在命令注入漏洞的第一检测结果。
这样,可以先根据解析结果中的命令个数来判断该命令语句是否存在命令注入漏洞,若不存在命令注入漏洞,再根据解析结果中的命令来判断该命令语句是否存在命令注入漏洞,能够有效检测命令注入漏洞。
在一实施例中,所述方法还包括:
确定所述属性参数包括所述命令语句中命令的参数集合;
判断所述解析结果中每个命令的参数集合与所述属性参数中相应命令的参数集合是否匹配,若否,生成存在参数注入漏洞的第二检测结果。
这里,若解析结果中每个命令的参数集合是属性参数中同一命令的参数集合的子集或者二者相同,则确定二者匹配,否则,确定存在参数注入漏洞。这样,可以进一步通过解析得到命令的参数集合,有效防止和检测参数注入漏洞。
在一实施例中,所述方法还包括:
确定所述属性参数包括所述命令语句是否允许导出文件的第一标识;
判断所述解析结果中用于表征所述命令语句是否允许导出文件的第二标识与所述第一标识是否匹配,若否,则生成存在参数注入漏洞的第二检测结果。
这里,若第二标识与第一标识表征的结果相同,即均为允许导出文件或者不允许导出文件,则确定二者匹配,否则,确定存在参数注入漏洞。这样,可以进一步通过解析得到第二标识,有效防止和检测参数注入漏洞。
在一实施例中,所述方法还包括:
确定所述属性参数不包括所述命令语句对应的命令个数及所述命令语句对应的命令集合;
显示所述解析结果。
实际应用中,漏洞检测设备确定获取的命令语句的属性参数既不包括命令语句对应的命令个数,也不包括命令语句对应的命令集合,则直接将所述解析结果显示或者传送至相关人员的终端设备进行显示,以供相关人员根据所述解析结果进行人工校验。
下面结合应用实施例对本发明再作进一步详细的描述。
应用实施例一:
如图2所示,本应用实施例漏洞检测方法包括以下步骤:
步骤201,获取输入数据。
漏洞检测设备获取输入数据。这里,输入数据包括:必须项和可选项。必须项为待分析的完整的命令语句,可选项为该命令语句的属性参数,该属性参数可包括:要执行的命令个数、命令集合、每个命令的参数集合及一个表征是否允许导出文件的第一标识。
步骤202,对输入的命令语句进行解析。
漏洞检测设备调用命令解析器对输入的命令语句进行解析,得到解析结果。例如,shell命令解析器对待分析的shell命令进行解析,得到shell命令中的要执行的命令个数、命令集合、每个命令的参数集合及一个表征是否允许导出文件的第二标识。
步骤203,返回命令个数、具体是什么命令、每个命令的参数集合以及是否会导出文件。
漏洞检测设备获取命令解析器返回的解析结果,该解析结果包括:命令个数、具体是什么命令、每个命令的参数集合以及表征是否会导出文件的第二标识。
步骤204,判断可选项是否输入了要执行的命令个数,若是,则执行步骤205,若否,则执行步骤206。
步骤205,判断返回的命令个数是否小于或等于输入的命令个数,若是,则执行步骤207,若否,则执行步骤210。
将解析结果中的命令个数与可选项输入的命令个数进行比较,如果解析结果中的命令个数小于或等于输入的命令个数,则执行步骤207以继续检测,否则执行步骤210,直接返回存在安全风险的识别结果。具体地,可以返回存在命令注入漏洞的第一识别结果。
步骤206,判断可选项是否输入了要执行的命令集合,若是,则执行步骤208,若否,则执行步骤211。
这里,若可选项既没有输入命令个数,也没有输入要执行的命令集合,则执行步骤211,返回解析结果,以便于人工进行漏洞检测。若可选项输入了要执行的命令集合,则执行步骤208,以根据解析结果中的命令和输入的命令集合进行漏洞检测。
步骤207,判断可选项是否输入了要执行的命令集合,若是,则执行步骤208,若否,则执行步骤209。
这里,若可选项输入了要执行的命令集合,则执行步骤208,以根据解析结果中的命令和输入的命令集合进行漏洞检测。若可选项中未输入要执行的命令集合,则执行步骤209。
步骤208,判断返回的命令是否都在输入的命令集合中,若是,则执行步骤209,若否,则执行步骤210。
若解析结果中的命令均属于输入的命令集合,则执行步骤209。否则,执行步骤210,直接返回存在安全风险的识别结果。具体地,可以返回存在命令注入漏洞的第一识别结果。
步骤209,返回不存在安全风险的识别结果。
漏洞检测设备生成不存在安全风险的识别结果。
步骤210,返回存在安全风险的识别结果。
漏洞检测设备生成存在安全风险的识别结果。具体地,返回存在命令注入漏洞的第一识别结果。
步骤211,返回命令个数、具体是什么命令、每个命令的参数集合以及是否会导出文件。
若可选项既没有输入命令个数,也没有输入要执行的命令集合,则直接返回解析结果,以便于人工进行漏洞检测。
在第一应用实施例中,漏洞检测设备可以对命令语句进行命令注入漏洞检测,若不存在命令注入漏洞,则返回不存在安全风险的识别结果,并结束检测流程,可以实现对命令注入漏洞的自动检测。
应用实施例二:
如图3所示,本应用实施例漏洞检测方法包括以下步骤:
步骤301,获取输入数据。
漏洞检测设备获取输入数据。这里,输入数据包括:必须项和可选项。必须项为待分析的完整的命令语句,可选项包括:要执行的命令个数、命令集合、每个命令的参数集合及一个表征是否允许导出文件的布尔类型数据(即第一标识)。
步骤302,对输入的命令语句进行解析。
漏洞检测设备调用命令解析器对输入的命令语句进行解析,得到解析结果。例如,shell命令解析器对待分析的shell命令进行解析,得到shell命令的解析结果。
步骤303,返回命令个数、具体是什么命令、每个命令的参数集合以及是否会导出文件。
漏洞检测设备获取命令解析器返回的解析结果,该解析结果包括:命令个数、具体是什么命令、每个命令的参数集合以及表征是否会导出文件的第二标识。
步骤304,判断可选项是否输入了要执行的命令个数,若是,则执行步骤305,若否,则执行步骤306。
步骤305,判断返回的命令个数是否小于或等于输入的命令个数,若是,则执行步骤307,若否,则执行步骤314。
将解析结果中的命令个数与可选项输入的命令个数进行比较,如果解析结果中的命令个数小于或等于输入的命令个数,则执行步骤307以继续检测,否则执行步骤314,直接返回存在安全风险的识别结果。具体地,可以返回存在命令注入漏洞的第一识别结果。
步骤306,判断可选项是否输入了要执行的命令集合,若是,则执行步骤308,若否,则执行步骤315。
这里,若可选项既没有输入命令个数,也没有输入要执行的命令集合,则执行步骤315,返回解析结果,以便于人工进行漏洞检测。若可选项输入了要执行的命令集合,则执行步骤308,以根据解析结果中的命令和输入的命令集合进行漏洞检测。
步骤307,判断可选项是否输入了要执行的命令集合,若是,则执行步骤308,若否,则执行步骤309。
这里,若可选项输入了要执行的命令集合,则执行步骤308,以根据解析结果中的命令和输入的命令集合进行漏洞检测。若可选项中未输入要执行的命令集合,则执行步骤309。
步骤308,判断返回的命令是否都在输入的命令集合中,若是,则执行步骤309,若否,则执行步骤314。
若解析结果中的命令均属于输入的命令集合,则执行步骤309,以继续检测。否则,执行步骤314,直接返回存在安全风险的识别结果。具体地,可以返回存在命令注入漏洞的第一识别结果。
步骤309,判断可选项是否输入了每个命令的参数集合,若是,则执行步骤310,若否,则执行步骤311;
若可选项输入了每个命令的参数集合,则执行步骤310,否则,执行步骤311,以判断可选项是否输入了布尔类型数据。
步骤310,判断返回的每个命令的参数集合是否与输入的命令的参数集合匹配,若是,则执行步骤311,若否,则执行步骤314。
若解析结果中每个命令的参数集合与输入的相应命令的参数集合匹配,则执行步骤311,以继续检测。否则,执行步骤314,直接返回存在安全风险的识别结果。具体地,可以返回存在参数注入漏洞的第二识别结果。
步骤311,判断可选项是否输入了布尔类型数据,若是,则执行步骤312,若否,则执行步骤313。
若可选项输入了布尔类型数据,则执行步骤312,否则,执行步骤313,以结束检测。
步骤312,判断返回的第二标识是否与布尔类型数据匹配,若是,则执行步骤313,若否,则执行步骤314。
若解析结果中的第二标识表征的信息与布尔类型数据表征的信息相同,比如,命令语句均允许导出文件或者均不允许导出文件,则表明该命令语句不存在安全风险,执行步骤313,否则,执行步骤314,直接返回存在安全风险的识别结果。具体地,可以返回存在参数注入漏洞的第二识别结果。
步骤313,返回不存在安全风险的识别结果。
漏洞检测设备生成不存在安全风险的识别结果。
步骤314,返回存在安全风险的识别结果。
漏洞检测设备生成存在安全风险的识别结果。该识别结果可以包括前述的第一识别结果或者第二识别结果。
步骤315,返回命令个数、具体是什么命令、每个命令的参数集合以及是否会导出文件。
若可选项既没有输入命令个数,也没有输入要执行的命令集合,则直接返回解析结果,以便于人工进行漏洞检测。
在第二应用实施例中,漏洞检测设备可以对命令语句进行命令注入漏洞检测,若不存在命令注入漏洞,还可以进一步进行参数注入漏洞检测,在命令注入漏洞和参数注入漏洞均不存在的情形下,方返回不存在安全风险的识别结果,并结束检测流程,可以实现对命令注入漏洞和参数注入漏洞的自动检测。
为了实现本发明实施例的方法,本发明实施例还提供一种漏洞检测装置,如图4所示,该装置包括:获取模块401、解析模块402、检测模块403。其中,
获取模块401,用于获取待分析的命令语句及所述命令语句的属性参数;
解析模块402,用于解析所述命令语句,得到所述命令语句相应于所述属性参数的解析结果;
检测模块403,用于基于所述解析结果和所述属性参数中相应信息进行比较,对所述命令语句进行漏洞检测,生成漏洞检测结果。
在一实施例中,检测模块403具体用于:
确定所述属性参数包括所述命令语句对应的命令个数;
比较所述解析结果中的命令个数与所述属性参数中的命令个数,若所述解析结果中的命令个数大于所述属性参数中的命令个数,生成存在命令注入漏洞的第一检测结果。
在一实施例中,检测模块403具体用于:
确定所述属性参数包括所述命令语句对应的命令集合;
判断所述解析结果中的命令是否落入所述命令集合,若所述解析结果中的命令未落入所述命令集合,生成存在命令注入漏洞的第一检测结果。
在一实施例中,检测模块403还用于:
若所述解析结果中的命令个数小于或等于所述属性参数中的命令个数,且所述属性参数包括所述命令语句对应的命令集合;
判断所述解析结果中的命令是否落入所述命令集合,若所述解析结果中的命令未落入所述命令集合,生成存在命令注入漏洞的第一检测结果。
在一实施例中,检测模块403还用于:
确定所述属性参数包括所述命令语句中命令的参数集合;
判断所述解析结果中每个命令的参数集合与所述属性参数中相应命令的参数集合是否匹配,若否,生成存在参数注入漏洞的第二检测结果。
在一实施例中,检测模块403还用于:
确定所述属性参数包括所述命令语句是否允许导出文件的第一标识;
判断所述解析结果中用于表征所述命令语句是否允许导出文件的第二标识与所述第一标识是否匹配,若否,则生成存在参数注入漏洞的第二检测结果。
在一实施例中,检测模块403还用于:
确定所述属性参数不包括所述命令语句对应的命令个数及所述命令语句对应的命令集合;
显示所述解析结果。
在一实施例中,解析模块402具体用于以下至少之一:
解析所述命令语句,得到所述命令语句的命令个数;
解析所述命令语句,得到所述命令语句包含的各种命令;
解析所述命令语句,得到所述命令语句中每个命令的参数集合;
解析所述命令语句,得到表征所述命令语句是否允许导出文件的第二标识。
实际应用时,获取模块401、解析模块402及检测模块403,可以由漏洞检测装置中的处理器来实现。当然,处理器需要运行存储器中的计算机程序来实现它的功能。
需要说明的是:上述实施例提供的漏洞检测装置在进行漏洞检测时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的漏洞检测装置与漏洞检测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于上述程序模块的硬件实现,且为了实现本发明实施例的方法,本发明实施例还提供一种漏洞检测设备。图5仅仅示出了该漏洞检测设备的示例性结构而非全部结构,根据需要可以实施图5示出的部分结构或全部结构。
如图5所示,本发明实施例提供的漏洞检测设备500包括:至少一个处理器501、存储器502、用户接口503和至少一个网络接口504。漏洞检测设备400中的各个组件通过总线系统505耦合在一起。可以理解,总线系统505用于实现这些组件之间的连接通信。总线系统505除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统505。
其中,用户接口503可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。
本发明实施例中的存储器502用于存储各种类型的数据以支持漏洞检测设备的操作。这些数据的示例包括:用于在漏洞检测设备上操作的任何计算机程序。
本发明实施例揭示的漏洞检测方法可以应用于处理器501中,或者由处理器501实现。处理器501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,漏洞检测方法的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器501可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器501可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器502,处理器501读取存储器502中的信息,结合其硬件完成本发明实施例提供的漏洞检测方法的步骤。
在示例性实施例中,漏洞检测设备可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,ProgrammableLogic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、FPGA、通用处理器、控制器、微控制器(MCU,Micro Controller Unit)、微处理器(Microprocessor)、或者其他电子元件实现,用于执行前述方法。
可以理解,存储器502可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本发明实施例描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
在示例性实施例中,本发明实施例还提供了一种存储介质,即计算机存储介质,具体可以是计算机可读存储介质,例如包括存储计算机程序的存储器502,上述计算机程序可由漏洞检测设备的处理器501执行,以完成本发明实施例方法所述的步骤。计算机可读存储介质可以是ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
需要说明的是:“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
另外,本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种漏洞检测方法,其特征在于,包括:
获取待分析的命令语句及所述命令语句的属性参数,所述命令语句的属性参数包括以下至少之一:要执行的命令的个数、命令集合、每个命令的集合参数及是否允许导出文件;
解析所述命令语句,得到所述命令语句相应于所述属性参数的解析结果;
基于所述解析结果和所述属性参数中相应信息进行比较,对所述命令语句进行漏洞检测,生成漏洞检测结果。
2.根据权利要求1所述的方法,其特征在于,所述基于所述解析结果和所述属性参数中相应信息进行比较,对所述命令语句进行漏洞检测,生成漏洞检测结果,包括:
确定所述属性参数包括所述命令语句对应的命令个数;
比较所述解析结果中的命令个数与所述属性参数中的命令个数,若所述解析结果中的命令个数大于所述属性参数中的命令个数,生成存在命令注入漏洞的第一检测结果。
3.根据权利要求1所述的方法,其特征在于,所述基于所述解析结果和所述属性参数中相应信息进行比较,对所述命令语句进行漏洞检测,生成漏洞检测结果,包括:
确定所述属性参数包括所述命令语句对应的命令集合;
判断所述解析结果中的命令是否落入所述命令集合,若所述解析结果中的命令未落入所述命令集合,生成存在命令注入漏洞的第一检测结果。
4.根据权利要求1所述的方法,其特征在于,所述基于所述解析结果和所述属性参数中相应信息进行比较,对所述命令语句进行漏洞检测,生成漏洞检测结果,包括:
若所述解析结果中的命令个数小于或等于所述属性参数中的命令个数,且所述属性参数包括所述命令语句对应的命令集合;
判断所述解析结果中的命令是否落入所述属性参数中的命令集合,若所述解析结果中的命令未落入所述命令集合,生成存在命令注入漏洞的第一检测结果。
5.根据权利要求2至4任一所述的方法,其特征在于,所述方法还包括:
确定所述属性参数包括所述命令语句中命令的参数集合;
判断所述解析结果中每个命令的参数集合与所述属性参数中相应命令的参数集合是否匹配,若否,生成存在参数注入漏洞的第二检测结果。
6.根据权利要求2至4任一所述的方法,其特征在于,所述方法还包括:
确定所述属性参数包括所述命令语句是否允许导出文件的第一标识;
判断所述解析结果中用于表征所述命令语句是否允许导出文件的第二标识与所述第一标识是否匹配,若否,则生成存在参数注入漏洞的第二检测结果。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述属性参数不包括所述命令语句对应的命令个数及所述命令语句对应的命令集合;
显示所述解析结果。
8.一种漏洞检测装置,其特征在于,包括:
获取模块,用于获取待分析的命令语句及所述命令语句的属性参数,所述命令语句的属性参数包括以下至少之一:要执行的命令的个数、命令集合、每个命令的集合参数及是否允许导出文件;
解析模块,用于解析所述命令语句,得到所述命令语句相应于所述属性参数的解析结果;
检测模块,用于基于所述解析结果和所述属性参数中相应信息进行比较,对所述命令语句进行漏洞检测,生成漏洞检测结果。
9.一种漏洞检测设备,其特征在于,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,
所述处理器,用于运行计算机程序时,执行权利要求1至7任一项所述方法的步骤。
10.一种存储介质,所述存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1至7任一项所述方法的步骤。
CN201911192825.7A 2019-11-28 2019-11-28 漏洞检测方法、装置、设备及存储介质 Active CN111027073B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911192825.7A CN111027073B (zh) 2019-11-28 2019-11-28 漏洞检测方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911192825.7A CN111027073B (zh) 2019-11-28 2019-11-28 漏洞检测方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN111027073A CN111027073A (zh) 2020-04-17
CN111027073B true CN111027073B (zh) 2022-03-22

Family

ID=70203105

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911192825.7A Active CN111027073B (zh) 2019-11-28 2019-11-28 漏洞检测方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN111027073B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102651060A (zh) * 2012-03-31 2012-08-29 北京奇虎科技有限公司 一种漏洞检测的方法和系统
CN105302707A (zh) * 2014-06-06 2016-02-03 腾讯科技(深圳)有限公司 应用程序的漏洞检测方法和装置
CN108509792A (zh) * 2017-02-23 2018-09-07 腾讯科技(深圳)有限公司 一种注入漏洞检测方法及装置
CN110909361A (zh) * 2019-11-08 2020-03-24 北京长亭未来科技有限公司 一种漏洞检测方法,装置和计算机设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008047351A2 (en) * 2006-10-19 2008-04-24 Checkmarx Ltd. Locating security vulnerabilities in source code

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102651060A (zh) * 2012-03-31 2012-08-29 北京奇虎科技有限公司 一种漏洞检测的方法和系统
CN105302707A (zh) * 2014-06-06 2016-02-03 腾讯科技(深圳)有限公司 应用程序的漏洞检测方法和装置
CN108509792A (zh) * 2017-02-23 2018-09-07 腾讯科技(深圳)有限公司 一种注入漏洞检测方法及装置
CN110909361A (zh) * 2019-11-08 2020-03-24 北京长亭未来科技有限公司 一种漏洞检测方法,装置和计算机设备

Also Published As

Publication number Publication date
CN111027073A (zh) 2020-04-17

Similar Documents

Publication Publication Date Title
US20070271617A1 (en) Vulnerability check program, vulnerability check apparatus, and vulnerability check method
US8635602B2 (en) Verification of information-flow downgraders
US9075997B2 (en) Global variable security analysis
JP2021535477A (ja) フォールトツリー分析を使用して機能安全のため制御フローグラフを最適化するシステム及び方法
US8572747B2 (en) Policy-driven detection and verification of methods such as sanitizers and validators
Huang et al. Detecting sensitive data disclosure via bi-directional text correlation analysis
CN110704304A (zh) 一种应用程序测试方法、装置、存储介质和服务器
US20150143342A1 (en) Functional validation of software
CN114065222A (zh) 源代码风险分析方法、装置、电子设备及存储介质
CN111008017B (zh) 一种基于oclint的待提交文件预审方法及相关组件
CN112131573A (zh) 安全漏洞的检测方法、装置及存储介质
CN115391230A (zh) 一种测试脚本生成、渗透测试方法、装置、设备及介质
JP5077455B2 (ja) 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法
CN108595656B (zh) 一种数据的处理方法及系统
US8464103B2 (en) Generating a functional coverage model from a trace
CN113778852A (zh) 一种基于正则表达式的代码分析方法
CN111027073B (zh) 漏洞检测方法、装置、设备及存储介质
CN111258562A (zh) Java代码质量检查方法、装置、设备和存储介质
CN116361793A (zh) 代码检测方法、装置、电子设备及存储介质
CN115617352A (zh) 基于安全编码标准的c代码检测方法、设备和存储介质
RU168346U1 (ru) Устройство выявления уязвимостей
Zhioua et al. Formal specification and verification of security guidelines
Gazzillo Inferring and securing software configurations using automated reasoning
CN112035888A (zh) 基于网页防篡改系统的文件路径确定方法、装置及介质
Zhioua et al. Framework for the formal specification and verification of security guidelines

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