检测web应用中的安全漏洞的制作方法

文档序号:7990324阅读:172来源:国知局
检测web应用中的安全漏洞的制作方法
【专利摘要】本发明公开涉及检测web应用中的安全漏洞。检测安全漏洞的方法包括:在web应用执行期间与web应用交互以识别由web应用暴露的网页;静态分析网页以识别网页中受客户机端验证措施约束并且要发送到web应用的参数;鉴于由客户机端验证措施给予参数的约束来确定要应用到参数的服务器端验证措施;静态分析web应用以识别web应用中要把参数输入到web应用中的位置;在安全敏感操作中使用参数之前确定参数是否受服务器端验证措施的约束;及把参数识别为安全漏洞。
【专利说明】检测web应用中的安全漏洞
【背景技术】
[0001]如果不能在处理用户输入和在安全敏感操作中使用它们之前正确地验证用户输 入,那么基于互联网的计算机软件应用,或者说“web”应用,可能容易受到恶意攻击。一种常 用手段是通过在用户与之交互的web应用接口处约束用户输入来执行这种验证。因此,例 如,呈现给用户的基于HTML的网页可以包括只能经具有预定义值的有限集合以供用户选 择的下拉框填充的参数、及不让用户直接修改的隐式参数,然后这些参数转发到底层的web 应用。

【发明内容】

[0002]实施例提供了 web应用中安全漏洞的检测。在一种实施例中,一种方法包括在web 应用执行期间与所述web应用交互以识别由所述web应用暴露的网页;及静态分析所述网 页以识别所述网页中受客户机端验证措施约束并且要发送到所述web应用的参数。所述方 法还包括鉴于由客户机端验证措施给予参数的约束来确定要应用到所述参数的服务器端 验证措施;及静态分析所述web应用以识别所述web应用中要把所述参数输入到所述web 应用中的位置。所述方法还包括在安全敏感操作中使用所述参数之前确定所述参数是否受 服务器端验证措施的约束;及在安全敏感操作中使用所述参数之前在所述参数不受服务器 端验证措施约束的情况下把所述参数识别为安全漏洞。
【专利附图】

【附图说明】
[0003]根据以下具体描述并结合附图,实施例将得到更加完全的理解和认可,其中:
[0004]图1是根据本发明一种实施例构造并操作的、用于检测采用客户机端验证的web 应用中的安全漏洞的系统的简化概念性图示;
[0005]图2是根据本发明一种实施例操作的图1系统操作的示例性方法的简化流程图图 示;及
[0006]图3是根据本发明一种实施例构造并操作的计算系统的示例性硬件实现的简化 框图图示。
【具体实施方式】
[0007]现在在一种或多种实施例的背景下描述本发明,虽然本描述是要从整体上说明本 发明,而不是要把本发明限定到所示出的实施例。应当认识到,虽然没有在这里具体示出, 但是各种修改都是本领域技术人员可以想到的,而且仍然在本发明的真正主旨与范围内。
[0008]所属【技术领域】的技术人员知道,本发明的各个方面可以实现为系统、方法或计算 机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、 完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方 式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面 还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0009]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器 (EPR0M或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光数据存储器件、磁数据存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0010]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号, 其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括一但不限于一电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0011]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0012]可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++ 等,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、 部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。 在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN) 或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0013]下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和 /或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0014]也可以把这些计算`机程序指令存储在计算机可读介质中,这些指令使得计算机、 其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)?
[0015]所述计算机程序指令还可以加载到计算机、其它可编程数据处理装置或者其它设备上,使得一系列操作步骤在计算机、其它可编程装置或者其它设备上执行,以产生一种计算机实现的过程,使得在所述计算机或者其它可编程装置上执行的指令提供用于实现在所述流程图和/或框图的一个或多个方框中所指定的功能/动作的过程。
[0016]现在参考图1,其是根据一种实施例构造并操作的、用于检测采用客户机端验证的web应用中的安全漏洞的系统的简化概念性图示。在图1的系统中,在一种实施例中,黑盒 测试器100,诸如可以从位于纽约Armonk的国际商用机器公司商业获得的IBM Rational AppScan?,被配置成在web应用102执行过程中根据常规的黑盒测试技术与web应用102 交互,以便识别由web应用102暴露的任何静态或动态生成的网页。Web应用102可以是可 以由计算机服务器104托管并且由一个或多个客户计算机106经计算机网络108,诸如互联 网,访问的任何基于计算机的软件应用。
[0017]在一种实施例中,约束管理器110被配置成静态地分析黑盒测试器100识别出的 网页,以便识别该网页中受一个或多个预定义客户机端验证措施112约束并且要发送到位 于服务器104处的web应用102的参数。这种客户机端验证措施112可以例如包括:
[0018]-其中参数是隐式参数;
[0019]-其中参数是通过从预定义值的列表中进行选择,诸如经下拉框,来给其分配值的 参数;及
[0020]-其中参数是为其执行客户机端测试以便确定其值是否遵循正则表达式的参数。
[0021]在一种实施例中,约束管理器110可以鉴于由客户机端验证措施112给予参数的 约束而确定应当应用到给定参数的一个或多个服务器端验证措施114。这种服务器端验证 措施114可以例如包括:
[0022]-当参数是隐式参数时,web应用102检查其值与客户机端提供的其它参数的 值之间的相关性。例如,如果网页中的候选参数是称为“isAdmin”的布尔隐式字段,它是 当用户输入用户名与密码时由网页中的JavaScript?代码设置的,则客户机端的约束是 “isAdmin”与输入的用户名与密码相关;
[0023]-当参数是通过从预定义值的列表中进行选择,诸如经下拉框,来为其分配值的参 数时,web应用102检查该值是属于固定的值集合还是预定义的值范围 '及
[0024]-当参数是为其执行客户机端测试以确定其值是否遵循正则表达式的参数时,web 应用102执行相同的测试。
[0025]在一种实施例中,约束管理器110可以把识别出的参数与它们适用的服务器端验 证措施114 一起存储在参数约束数据存储116中。
[0026]在一种实施例中,静态分析器118可以被配置成静态地分析web应用102,诸如通 过建立web应用102的控制流模型和数据流模型,来识别web应用102中网页参数要输入 到web应用102中的位置。对于这样识别出的任何给定参数,静态分析器118都询问约束 管理器110,或者作为替代直接访问参数约束116,以便确定哪些约束应当对参数应用,而 且这些约束是否要在参数用于安全敏感操作之前由web应用102对参数应用。在参数用于 安全敏感操作之前,静态分析器118把在web应用102中不受适用的服务器端验证措施114 约束的任何参数识别为安全漏洞。静态分析器118把关于识别出的web应用102的安全漏 洞的报告提供给诸如黑盒测试器100或静态分析器118的操作人员。
[0027]现在参考图2,其是根据一种实施例操作的图1的系统操作的示例性方法的简化 流程图图示。在图2的方法中,在一种实施例中,web应用的黑盒测试可以在其执行过程中 执行,以便识别由该web应用暴露的任何静态或动态生成的网页(方框200)。系统静态分析 所识别出的网页,以便识别网页中由一个或多个预定义客户机端验证措施约束并且要发送 到所述web应用的参数(方框202)。鉴于由客户机端验证措施给予参数的约束,系统确定应当应用到给定参数的一个或多个服务器端验证措施(方框204)。系统对web应用执行静态 分析,以便识别该web应用中网页参数要输入到该web应用中的位置(方框206)。如果在 参数用于安全敏感操作之前该参数在web应用中不受适用的服务器端验证措施约束(方框 208),则系统把该参数识别为安全漏洞并且报告(方框210)。
[0028]图1的系统和图2的方法可以在以下例子的背景下展示,其中在web应用102执 行过程中黑盒测试器100与其交互,并且为其呈现具有登录表单的网页。在一种实施例中, 约束管理器110分析该网页,确定登录表单包括指示用户是否是管理员的隐式标志,并且 确定该隐式标志应当与由来自该用户的其它参数所持有的值相关。在一种实施例中,静态 分析器118发现web应用102中形式如下的有关调用集合:
[0029]<y>=<x>.getParameter (’ admin’),
[0030]其中<x>和<y>分别是用于其静态类型为HttpServletRequest和Boolean的变 量标识符的占位符。然后,静态分析器118检查<y>的值是否直接或间接地用于控制执行 流,而不需要web应用102首先检查这个值是否与由来自该用户的其它参数所持有的值相 关。如果可以从“getParameter”语句到达的安全敏感操作仅仅是由对<y>的测试控制的, 那么,因为没有发现充分约束该隐式标志的服务器端验证措施,所以静态分析器118把该 隐式标志报告为安全漏洞,这是因为在该隐式标志被发送到web应用102之前对其进行简 单操纵可能就足以把一个普通用户变成管理员,这有可能让该普通用户对应用具有绝对的 控制。
[0031]现在参考图3,框图300说明了根据一种实施例的可以利用其实现一种或多种组 件/方法(例如,在图1-2背景下描述的组件/方法)的计算系统的示例性硬件实现。
[0032]如图所示,用于控制对至少一个资源的访问的技术可以根据经计算机总线318或 备用连接布置耦合的处理器310、存储器312、I/O设备314和网络接口 316来实现。
[0033]应当认识到,如本文所使用的,术语“处理器”是要包括任何处理设备,诸如例如包 括CPU (中央处理单元)的处理设备,和/或其它处理电路。还应当理解,术语“处理器”可 以指多于一个处理设备而且与一个处理设备关联的各种元件可以由其它处理设备共享。
[0034]如本文所使用的,术语“存储器”是要包括与处理器或CPU关联的处理器,诸如例 如RAM、ROM、固定存储器设备(例如,硬驱)、可拆卸存储器设备(例如,磁盘)、闪存存储器等。 这种存储器可以被认为是计算机可读存储介质。
[0035]此外,如本文所使用的,短语“输入/输出设备”或“ I/O设备”是要包括例如用于 把数据输入处理单元的一个或多个输入设备(例如,键盘、鼠标、扫描仪等),和/或用于呈现 与处理单元关联的结果的一个或多个输出设备(例如,扬声器、显示器、打印机等)。
[0036]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以 代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个 用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所 标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以 基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的 是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行 规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0037]将认识到,本文所描述的任何元素都可以实现为包含在计算机可读介质中的计算 机程序产品,诸如以存储在磁性或光学存储介质上或者嵌入在计算机硬件中的计算机程序 指令的形式,而且可以由计算机(未示出)执行或以别的方式进行访问。
[0038]尽管本文的方法与装置可能已经或者可能还没有参考具体的计算机硬件或软件 进行描述,但是应当认识到,本文所述的方法与装置可以很容易地利用常规技术以计算机 硬件或软件实现。
[0039]尽管已经参考一种或多种具体实施例描述了本发明,但是这种描述是为了从整体 上说明本发明而不是要把本发明限定到所示出的实施例。应当认识到,虽然没有在这里具 体示出,但是各种变化都是本领域技术人员可以想到的,而且仍然在本发明的真正主旨与 范围内。
【权利要求】
1.一种方法,包括:在web应用执行期间与所述web应用交互以识别由所述web应用暴露的网页;静态分析所述网页以识别所述网页中受客户机端验证措施约束并且要发送到所述web 应用的参数;鉴于由客户机端验证措施给予参数的约束来确定要应用到所述参数的服务器端验证措施;静态分析所述web应用以识别所述web应用中要把所述参数输入到所述web应用中的位置;在安全敏感操作中使用所述参数之前确定所述参数是否受服务器端验证措施的约束;及在安全敏感操作中使用所述参数之前在所述参数不受服务器端验证措施约束的情况下把所述参数识别为安全漏洞。
2.如权利要求1所述的方法,进一步包括:识别网页中的参数,其中所述参数是隐式参数。
3.如权利要求1所述的方法,进一步包括:识别网页中的参数,其中所述参数是通过从预定义值的列表中进行选择来给其分配值的参数。
4.如权利要求1所述的方法,进一步包括: 识别网页中的参数,其中所述参数是要为其执行客户机端测试以确定参数的值是否遵循正则表达式的参数。
5.如权利要求1所述的方法,进一步包括:建立所述web应用的控制流模型与数据流模型。
6.如权利要求1所述的方法,其中所述参数是隐式参数,所述web应用检查所述参数的值与客户机提供的至少一个其它参数的值之间的相关性。
7.如权利要求1所述的方法,其中所述参数是通过从预定义值的列表中进行选择来给其分配值的参数,并且其中所述web应用检查所述值是属于固定的值集合还是预定义的值范围。
8.如权利要求1所述的方法,其中所述参数是要为其执行客户机端测试以确定参数的值是否遵循正则表达式的参数。
9.一种系统,包括:黑盒测试器,被配置成在web应用执行期间与所述web应用交互以识别由所述web应用暴露的网页;约束管理器,被配置成:静态分析所述网页以识别所述网页中受客户机端验证措施约束并且要发送到所述web 应用的参数;及鉴于由客户机端验证措施给予参数的约束来确定要应用到所述参数的服务器端验证措施;静态分析器,被配置成:静态分析所述web应用以识别所述web应用中要把所述参数输入到所述web应用中的位置;在安全敏感操作中使用所述参数之前确定所述参数是否受服务器端验证措施的约束;及在安全敏感操作中使用所述参数之前在所述参数不受服务器端验证措施约束的情况下把所述参数识别为安全漏洞。
10.如权利要求9所述的系统,其中所述参数是隐式参数。
11.如权利要求9所述的系统,其中所述参数是通过从预定义值的列表中进行选择来给其分配值的参数。
12.如权利要求9所述的系统,其中所述参数是要为其执行客户机端测试以确定参数的值是否遵循正则表达式的参数。
13.如权利要求9所述的系统,其中所述静态分析器进一步被配置成通过建立所述web 应用的控制流模型与数据流模型来静态地分析web应用。
14.如权利要求9所述的系统,其中所述参数是隐式参数,并且其中所述web应用检查所述参数的值与客户机提供的至少一个其它参数的值之间的相关性。
15.如权利要求9所述的系统,其中所述参数是通过从预定义值的列表中进行选择来给其分配值的参数,并且其中所述web应用检查所述值是属于固定的值集合还是预定义的值范围。
16.如权利要求9所述的系统,其中所述参数是要为其执行客户机端测试以确定参数的值是否遵循正则表达式的参数。
17.一种计算机程序产品,包括:计算机可读存储介质;及包含在计算机可读存储介质中的计算机可读程序代码,其中计算机可读程序代码被配置成:在web应用执行期间与所述web应用交互以识别由所述web应用暴露的网页;静态分析所述网页以识别所述网页中受客户机端验证措施约束并且要发送到所述web 应用的参数;鉴于由客户机端验证措施给予参数的约束来确定要应用到所述参数的服务器端验证措施;静态分析所述web应用以识别所述web应用中要把所述参数输入到所述web应用中的位置;在安全敏感操作中使用所述参数之前确定所述参数是否受服务器端验证措施的约束;及在安全敏感操作中使用所述参数之前在所述参数不受服务器端验证措施约束的情况下把所述参数识别为安全漏洞。
18.如权利要求17所述的计算机程序产品,其中计算机可读程序代码进一步被配置成识别网页中的参数,其中所述参数是隐式参数。
19.如权利要求17所述的计算机程序产品,其中计算机可读程序代码进一步被配置成识别网页中的参数,并且其中所述参数是通过从预定义值的列表中进行选择来给其分配值的参数。
20.如权利要求17所述的计算机程序产品,其中计算机可读程序代码进一步被配置成识别网页中的参数,并且其中所述参数是要为其执行客户机端测试以确定参数的值是否遵循正则表达式的参数。
21.如权利要求17所述的计算机程序产品,其中计算机可读程序代码进一步被配置成建立所述web应用的控制流模型与数据流模型。
22.如权利要求17所述的计算机程序产品,其中计算机可读程序代码进一步被配置成确定,并且其中所述参数是隐式参数,所述web应用检查所述参数的值与客户机提供的至少一个其它参数的值之间的相关性。
23.如权利要求17所述的计算机程序产品,其中计算机可读程序代码进一步被配置成确定,其中所述参数是通过从预定义值的列表中进行选择来给其分配值的参数,并且其中所述web应用检查所述值是属于固定的值集合还是预定义的值范围。
24.如权利要求17所述的计算机程序产品,其中计算机可读程序代码进一步被配置成确定,并且其中所述参数是要为其执行客户机端测试以确定参数的值是否遵循正则表达式的参数。
【文档编号】H04L9/32GK103563293SQ201280026257
【公开日】2014年2月5日 申请日期:2012年6月26日 优先权日:2011年6月30日
【发明者】M·匹斯托爱, O·塞伽尔, O·特立普 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1