用于减缓跨站弱点的方法和装置的制作方法

文档序号:7849611阅读:134来源:国知局
专利名称:用于减缓跨站弱点的方法和装置的制作方法
技术领域
本公开大体而言涉及数据处理系统中的Web应用的跨站脚本弱点,且更具体而言涉及防止web浏览器访问的web应用的脚本语言中嵌入恶意代码。
背景技术
跨站脚本(Cross-Site Scripting, XSS)为普遍性问题,其中在一个形式中,来自客户端的用户输入原样(as-is)反射(reflect)或回送(echoback)至返回的来自服务器超文本标记语言(HTML)输出中。此类型的弱点意味着,攻击者可精巧地制作非常特定的有效负荷,该有效负荷当在输出中回送时包括在浏览器中执行的脚本。由于脚本是作为输出的一部分返回的,因此脚本可以访问与返回该输出的域(例如,网站)有关的所有cookie及数据。将精巧地制作的有效负荷发送至远程牺牲者将会使有弱点的网站返回恶意脚本,从而允许恶意脚本与有弱点的网站充分交互,而不受由浏览器的同源策略(same originpolicy)的安全机制施加的限制。·跨站脚本的最简单解决方案为输入验证,该输入验证不允许可在返回的输出中导致脚本动作的任何字符或模式。输入验证是使用肯定安全模型(positive securitymodel)、否定安全模型(negative security model)或模型的组合来执行的,该肯定安全模型定义允许什么,该否定安全模型定义不允许什么。在二者状况下,不满足所定义的条件的请求被拒绝或修改。在否定安全模型中,通常定义用于阻挡的已知攻击模式。举例而言,具有已知为攻击有效负荷的“〈script〉”的值的输入可被阻挡。此模型中的主要挑战是要一直了解最新的存在的所有可能的攻击模式(尤其在使用一般(generic)模式时)。否定安全输入验证通常将不会达成完全保护,因此如果可能,则建议开发者使用肯定安全模型。在肯定安全输入验证模型中,由于成功利用(exploit)仅具有字母数字字符的跨站脚本问题是困难的,所以可指定仅允许字母数字字符的定义。肯定安全输入验证模型的主要挑战在于中断应用的可能性。举例而言,应用的逻辑可能需要使用可能危险的字符,从而导致覆盖所有可能的跨站脚本攻击向量、而不中断应用的功能成为越来越困难的任务。用于跨站脚本的替代解决方案为通过编码输出来净化输出。在输入得以添加至输出以前编码输入将确保浏览器不会将输出中接收到的输入作为脚本来处理。因为回送的输入可在包括返回属性的部分、标签(tag)的值、在批注(co_ent)内或在脚本标签内的许多不同上下文中被添加至输出,所以编码输入需要匹配特定上下文。举例而言,考虑在以下具有URL (统一资源定位器)的代码片断中的请求ht tp://server/welcome, j sp name=John。该示例在诸如以下的输出中原样返回两个不同上下文中的名称(name)参数<html><body>
<Hl>Hello, John</Hl>
<script><![CDATA[ var user="John";
"...
]]></script> </body></html>为在“Hello”语句中利用跨站脚本,攻击者将发送诸如以下的请求http://server/welcome jsp name=John<script>hi jack () </script)于是,请求被返回为
<html><body>
<Hl>Hello, JohrKscript>hijack () </script></Hl> <script><![CDATA[
var user="John<script>hijack 0</script>";
"...
]]></script>
</body></html>脚本将由于第一回送内容而被成功利用,且属性中的值将为简单值。此问题的解决方案将为使用HTML编码技术,且尤其以符号“&lt”代替符号“〈”。为在第二种情况中利用跨站脚本,攻击者将发送不同请求,例如http://server/welcome. jsp name=John//;hijack()//于是,请求被返回为
<html><body>
<Hl>Hello, John"; hijack 0 "</Hl>
<script>
var user="John"; hijack 0//";
</script>
</body></html>示例中的脚本因回送内容的第二实例及新添加的JavaScriptTM码(Java和所有基于Java的商标和徽标是Oracle和/或其附属企业的商标或注册商标)而被成功利用。欢迎文字(welcome text)仍为纯文本。对该示例的问题的解决方案将是使用STRING (字符串)编码技术,该STRING编码技术将以\"(反斜线+双引号)替换双引号。刚刚描述的解决方案是有效(valid)的且是明确定义的,但是需要修改应用代码,这是昂贵的且有时是困难的过程,尤其在处理遗留应用、第三方模块及外包应用时。代码修改需要时间,从而当已布署系统时,会使系统曝露,直至代码修复为止。诸如用于Web应用的防火墙的自动工具通过提供输入净化解决方案来处理此问题。输入净化通常使用否定安全模式,包括试图排除所有可能的有效负荷的精心制成的正则表达式。虽然此方法是有用的,但是仅是部分解决方案,因为跨站脚本攻击的可能的变化实际上是无限的。这些工具经常提供一般的否定安全规则,所述否定安全规则说明哪些模式是不允许的,且所述工具允许用户指定更具体的安全规则,但是这些规则很难维护。因此,需要对诸如跨站脚本攻击的注入攻击的自动解决方案。US2008/0263650公开了高效地防止跨站攻击,其中网页存储在站点上。网页被组织为不接收输入的入口页和不是入口页的被保护页。 US2007/0113282公开了一种包括挂钩脚本生成器和脚本处理引擎的用于接收和处理具有至少一个原始函数调用的数据内容的装置。所述挂钩脚本生成器被配置为生成具有至少一个挂钩函数的挂钩脚本。每个挂钩函数被配置为取代对应的原始函数。所述挂钩函数提供了数据内容处理的运行时检测和控制。US2004/0260754公开了用于减缓跨站脚本攻击的方法。当从用户计算机接收到HTTP请求时,评估该HTTP请求以确定它是否包括脚本内容。具体地,检查包括在该HTTP请求中的来自外部源的数据以发现脚本构造的存在。脚本构造的存在指示跨站脚本攻击正在执行,且服务器计算机能够阻止攻击的进行。

发明内容
根据一个实施例,一种用于减缓注入攻击的计算机实施的过程。计算机实施的过程监视所有进入通信流(incoming traffic)及外出通信流(outgoing traffic),以形成受监视通信流;确定独特元素是否与受监视通信流的输入值匹配,以形成匹配的输入值;且响应于确定独特元素与受监视通信流的输入值匹配而保存匹配的输入值。该计算机实施的过程进一步确定输出是否在预期位置中包含匹配的输入值;且响应于确定输出在预期位置中包含匹配的输入值而使用来自配置文件的相应定义来编码匹配的输入值;且将输出返回至请求者。根据另一实施例,一种用于减缓注入攻击的计算机程序产品包含计算机可记录型媒体,该计算机可记录型媒体包含存储于其上的计算机可执行程序代码。该计算机可执行程序代码包含用于监视所有进入通信流及外出通信流,以形成受监视通信流的计算机可执行程序代码;用于确定独特元素是否与受监视通信流的输入值匹配,以形成匹配的输入值的计算机可执行程序代码;用于响应于确定独特元素与受监视通信流的输入值匹配而保存匹配的输入值的计算机可执行程序代码;用于确定输出是否在预期位置中包含匹配的输入值的计算机可执行程序代码;用于响应于确定输出在预期位置中包含匹配的输入值而使用来自配置文件的相应定义来编码匹配的输入值的计算机可执行程序代码;以及用于将输出返回至请求者的计算机可执行程序代码。
根据另一实施例,一种用于减缓注入攻击的装置包含通信结构;存储器,该存储器连接至通信结构,其中存储器包含计算机可执行程序代码;通信单元,该通信单元连接至通信结构;输入/输出单元,该输入/输出单元连接至通信结构;显示器,该显示器连接至通信结构;以及处理器单元,该处理器单元连接至通信结构。处理器单元执行计算机可执行程序代码以引导该装置监视所有进入通信流及外出通信流,以形成受监视通信流;确定独特元素是否与受监视通信流的输入值匹配,以形成匹配的输入值;且响应于确定独特元素与受监视通信流的输入值匹配而保存匹配的输入值。处理器单元进一步执行计算机可执行程序代码以引导该装置确定输出是否在预期位置中包含匹配的输入值,且响应于确定输出在预期位置中包含匹配的输入值而使用来自配置文件的相应定义来编码匹配的输入值,且将输出返回至请求者。从第一方面看,本发明提供了一种用于防止恶意代码被嵌入到web浏览器访问的web应用的脚本语言中的方法,该方法包括监视由web浏览器产生的所有进入通信流及由服务器产生的外出通信流,以形成受监视通信流;确定在配置文件中定义的独特元素是否与该受监视通信流的输入值匹配,以形成匹配的输入值;响应于确定该独特元素与该受监视通信流的输入值匹配而保存该匹配的输入值;确定输出是否在预期位置中包含该匹配的 输入值;响应于确定该输出在预期位置中包含该匹配的输入值而使用来自该配置文件的相 应定义来编码该匹配的输入值;以及将输出返回至该请求者。优选地,本发明提供了一种方法,其中确定输出是否在预期位置中包含该匹配的输入值进一步包括确定相应独特元素是否在该输出中被回送;以及识别与该输出中的独特元素关联的位置及上下文,其中确定及识别进一步包括独特值的注入。优选地,本发明提供了一种方法,其中确定独特元素是否与该受监视通信流的输入值匹配进一步包括识别该应用的页面及该页面的相关输入,以形成一组识别的输入;变换该组识别的输入中的每个输入,以形成相应的独特元素;以及使用所述相应的独特元素来重发该输入。优选地,本发明提供了一种方法,其中识别与该输出中的独特元素关联的位置及上下文进一步包括在该配置文件中输出扫描结果。优选地,本发明提供了一种方法,其中该配置文件包含该组识别的输入中的每个输入及相应的预期输出位置和上下文的列表。优选地,本发明提供了一种方法,其中响应于确定该独特元素不与该受监视通信流的输入值匹配而返回监视所有进入通信流及外出通信流。优选地,本发明提供了一种方法,其中响应于确定该输出在预期位置中不包含该匹配的输入值而使用默认定义来编码该匹配的输入值。从另一方面看,本发明提供了一种用于减缓注入攻击的计算机程序产品,该计算机程序产品包含计算机可记录型媒体,该计算机可记录型媒体包含存储于其上的计算机可执行程序代码。该计算机可执行程序代码包含用于监视所有进入通信流及外出通信流,以形成受监视通信流的计算机可执行程序代码;用于确定独特元素是否与受监视通信流的输入值匹配,以形成匹配的输入值的计算机可执行程序代码;用于响应于确定独特元素与受监视通信流的输入值匹配而保存匹配的输入值的计算机可执行程序代码;用于确定输出是否在预期位置中包含匹配的输入值的计算机可执行程序代码;用于响应于确定输出在预期位置中包含匹配的输入值而使用来自配置文件的相应定义来编码匹配的输入值的计算机可执行程序代码;以及用于将输出返回至请求者的计算机可执行程序代码。优选地,本发明提供了一种计算机程序产品,其中用于确定独特元素是否与该受监视通信流的输入值匹配的计算机可执行程序代码进一步包括用于识别该应用的页面及该页面的相关输入,以形成一组识别的输入的计算机可执行程序代码;用于变换该组识别的输入中的每个输入,以形成相应的独特元素的计算机可执行程序代码;以及用于使用所述相应的独特元素来重发该输出的计算机可执行程序代码。优选地,本发明提供了一种计算机程序产品,其中用于确定输出是否在预期位置中包含该匹配的输入值的计算机可执行程序代码进一步包括用于确定相应独特元素是否在该输出中被回送的计算机可执行程序代码;以及用于识别与该输出中的独特元素关联的位置及上下文的计算机可执行程序代码,其中用于确定及识别的计算机可执行程序代码进一步包括用于注入独特值的计算机可执行程序代码。优选地,本发明提供了一种计算机程序产品,其中用于识别与该输出中的独特元素关联的位置及上下文的计算机可执行程序代码进一步包括用于在该配置文件中输出扫 描结果的计算机可执行程序代码。优选地,本发明提供了一种计算机程序产品,其中该配置文件包含该组识别的输入中的每个输入及相应的预期输出位置和上下文的列表。优选地,本发明提供了一种计算机程序产品,其中响应于确定该独特元素不与该受监视通信流的输入值匹配的计算机可执行程序代码进一步包括用于返回监视所有进入通信流及外出通信流的计算机可执行程序代码。优选地,本发明提供了一种计算机程序产品,其中响应于确定该输出在预期位置中不包含该匹配的输入值的计算机可执行程序代码进一步包括用于使用默认定义来编码该匹配的输入值的计算机可执行程序代码。从另一方面看,本发明提供了一种用于减缓注入攻击的装置,该装置包含通信结构;存储器,该存储器连接至通信结构,其中存储器包含计算机可执行程序代码;通信单元,该通信单元连接至通信结构;输入/输出单元,该输入/输出单元连接至通信结构;显示器,该显示器连接至通信结构;以及处理器单元,该处理器单元连接至通信结构,其中该处理器单元执行计算机可执行程序代码以弓I导该装置来监视所有进入通信流及外出通信流,以形成受监视通信流;确定独特元素是否与受监视通信流的输入值匹配,以形成匹配的输入值;响应于确定独特元素与受监视通信流的输入值匹配而保存匹配的输入值;确定输出是否在预期位置中包含匹配的输入值,响应于确定输出在预期位置中包含匹配的输入值而使用来自配置文件的相应定义来编码匹配的输入值;以及将输出返回至请求者。优选地,本发明提供了一种装置,其中处理器单元进一步执行计算机可执行程序代码以确定独特元素是否与该受监视通信流的输入值匹配引导该装置来识别该应用的页面及该页面的相关输入以形成一组识别的输入;变换该组识别的输入中的每个输入以形成相应的独特元素的装置;以及使用所述相应的独特元素来重发该输出的装置。优选地,本发明提供了一种装置,其中处理器单元进一步执行计算机可执行程序代码以确定输出是否在预期位置中包含匹配的输入值引导该装置来确定相应的独特元素是否在输出中被回送;以及识别与该输出中的独特元素关联的位置及上下文,其中引导该装置来确定及识别进一步包括注入独特值。优选地,本发明提供了一种装置,其中处理器单元进一步执行计算机可执行程序代码以识别与该输出中的独特元素关联的位置及上下文引导该装置来在该配置文件中输出扫描结果。优选地,本发明提供了一种装置,其中该配置文件包含该组识别的输入中的每个输入及相应的预期输出位置和上下文的列表。优选地,本发明提供了一种装置,其中处理器单元进一步执行计算机可执行程序代码响应于确定该输出在预期位置中不包含该匹配的输入值,引导该装置来使用默认定义来编码该匹配的输入值。


现参阅附图,仅以示例的方式本发明的优选实施例,在附图中图I是可操作以用于本发明的多种优选实施例的示例性网络数据处理系统的方块图;图2是可操作以用于本发明的多种实施例的图I的网络数据处理系统中的示例性数据处理系统的方块图;图3是根据本发明的多种实施例的注入攻击减缓系统的方块图;图4是根据本发明的一个实施例的使用图3的注入攻击减缓系统的过程的流程图;图5是根据本发明的一个实施例的与图4的过程一起使用的配置文件创建过程的流程图。
具体实施例方式虽然下文提供一个或多个实施例的说明性实施,但是所公开的系统及/或方法可使用任何数量的技术来实施。本公开应绝不限于下文说明的说明性实施、附图及技术,包括本文说明并描述的示例性设计及实施,而是可在随附权利要求范围及其等效物的全部范围内进行修改。所属技术领域的技术人员知道,本公开可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在任何表达介质中的计算机程序产品的形式,该表达介质中包含计算机可用的程序代码。可以以一种或多种程序设计语言或其组合来编写用于执行本公开操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如JavaTM、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如”C”语言或类似的程序设计语言。Java和所有基于Java的商标和徽标是Oracle和/或其附属企业的商标或注册商标。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。以下参照根据本发明的实施例的方法、装置、系统及计算机程序产品的流程图说明及/或方块图来描述本公开。将理解,流程图说明及/或方块图的各个方块、及流程图说明及/或方块图中的方块的组合可由计算机程序指令来实施。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(article of manufacture)0
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。现参阅附图且尤其参阅图I及图2,提供了数据处理环境的示例性图,说明性实施例可在所述数据处理环境中实施。应了解,图I及图2仅是示例性的,且图I及图2并非旨在确定或暗示关于不同实施例可实施于其中的环境的任何限制。可对图示的环境进行许多修改。图I示出说明性实施例可在其中实施的数据处理系统的网络的图形表示。网络数据处理系统100是计算机网络,说明性实施例可在该计算机网络中实施。网络数据处理系统100包含网络102,该网络是用以在各种装置与计算机之间提供通信链路的媒体,所述各种装置及计算机在网络数据处理系统100内连接在一起。网络102可包括连接,诸如,电线、无线通信链路或光缆。在示出的示例中,服务器104及服务器106与存储单元108 —起连接至网络102。另外,客户机110、112及114连接至网络102。客户机110、112及114可以是例如个人计算机或网络计算机。在示出的示例中,服务器104向客户机110、112及114提供数据,诸如,启动文件、操作系统映像及应用。在此示例中,客户机110、112及114是服务器104的客户机。网络数据处理系统100可包括未示出的额外的服务器、客户机及其他装置。在示出的示例中,网络数据处理系统100是因特网,其中网络102代表网络及网关的世界性集合,这些网络与网关使用传输控制协议/网际协议(TCP/IP)协议套来彼此通信。在因特网的中心是主要节点或主机计算机之间的高速数据通信线路的基干,这些主要节点或主机计算机由路由数据与消息的成千上万的商业、政府、教育计算机系统及其他计算机系统组成。当然,网络数据处理系统100也可实施为若干不同类型的网络,例如,内部网、局域网(LAN)或广域网(WAN)。图I旨在作为示例,而非作为不同说明性实施例的架构限制。现转向图2,给出了可操作以用于本公开的各种实施例的示例性数据处理系统的方块图。在此说明性示例中,数据处理系统200包括通信结构(fabric)202,该通信结构提供处理器单元204、存储器206、持久存储器208、通信单元210、输入/输出(I/O)单元212与显示器214之间的通信。处理器单元204用来执行可加载至存储器206中的软件的指令。处理器单元204可以是一个或多个处理器的集合,或可以是多处理器核心,这取决于特定实施。另外,可使用一个或多个异质处理器系统来实施处理器单元204,在该一个或多个异质处理器系统中,主处理器与次处理器一起存在于单个芯片上。作为另一说明性示例,处理器单元204可以是包含相同类型的多个处理器的对称多处理器系统。存储器206及持久存储器208是存储装置216的示例。存储装置是任何硬件,该硬件能够存储信息,诸如而非限制地,数据、函数形式的程序代码及/或其他暂时及/或永久的适合信息。在这些示例中,存储器206可以是例如随机存取存储器或任何其他适合的易失性或非易失性存储装置。持久存储器208可采取取决于特定实施的各种形式。举例而言,持久存储器208可包含一个或多个组件或装置。举例而言,持久存储器208可以是硬盘、 闪存、可重写光盘、可重写磁带或以上各项的某种组合。持久存储器208所使用的媒体也可以是可移除的。举例而言,可移除硬盘驱动器可用于持久存储器208。在这些示例中,通信单元210提供与其他数据处理系统或装置通信。在这些示例中,通信单元210是网络接口卡。通信单元210可通过使用物理通信链路和无线通信链路中的任何一个或两者来提供通信。输入/输出单元212允许与其他装置的数据输入和输出,这些其他装置可连接至数据处理系统200。举例而言,输入/输出单元212可经由键盘、鼠标及/或某种其他适合输入装置为用户输入提供连接。另外,输入/输出单元212可将输出发送至打印机。显示器214向用户提供显示信息的机制。操作系统、应用及/或程序的指令可位于存储装置216中,该存储装置经由通信结构202与处理器单元204通信。在这些说明性示例中,指令在持久存储器208上为函数形式。可将这些指令加载至存储器206中,供处理器单元204执行。不同实施例的过程可由处理器单元204使用计算机实施的指令来执行,这些计算机实施的指令可位于存储器(诸如,存储器206)中。这些指令被称为程序代码、计算机可用程序代码或计算机可读程序代码,所述程序代码、计算机可用程序代码或计算机可读程序代码可由处理器单元204中的处理器读取并执行。不同实施例中的程序代码可体现于不同物理或有形计算机可读媒体(诸如,存储器206或持久存储器208)上。程序代码218以函数形式位于选择性地可移除的计算机可读媒体220上,且可被加载至或转移至数据处理系统200上,供处理器单元204执行。在这些示例中,程序代码218及计算机可读媒体220形成计算机程序产品222。在一个示例中,计算机可读媒体220可以是有形形式,例如,光盘或磁盘,该光盘或磁盘被插入或放置于为持久存储器208的部分的驱动器或其他装置中,以转移至存储装置(诸如,为持久存储器208的部分的硬盘驱动器)上。以有形形式,计算机可读媒体220也可采取持久存储器的形式,诸如,连接至数据处理系统200的硬盘驱动器、姆指驱动器或闪存。计算机可读媒体220的有形形式也称为计算机可记录存储媒体。在某些情况下,计算机可读媒体220可以不是可移除的。或者,可经由至通信单元210的通信链路及/或经由至输入/输出单元212的连接将程序代码218自计算机可读媒体220转移至数据处理系统200。在说明性示例中,通信链路及/或连接可以是物理的或无线的。计算机可读媒体也可能采取非有形媒体的形式,诸如,包含程序代码的通信链路或无线传输。在一些说明性实施例中,可通过网络将程序代码218自另一装置或数据处理系统下载至持久存储器208,供在数据处理系统200内使用。举例而言,可通过网络上将存储在服务器数据处理系统的计算机可读存储媒体中的程序代码自服务器下载至数据处理系统200。提供程序代码218的数据处理系统可以是能够存储且传输程序代码218的服务器计算机、客户机计算机或其他装置。使用图I的数据处理系统100作为示例,诸如图I的服务器104的服务器与诸如客户机110的客户机可单独实施于代表性系统上或实施于相同系统上。另外,代理(proxy)与服务器可实施在诸如服务器104的相同或不同服务器上,其中代理使诸如客户机110的客户机与应用服务器分离。在用于减缓注入的装置的一个说明性实施例中,诸如图2的处 理器单元204的处理器单元监视经由图2的通信单元210接收到的所有进入通信流及外出通信流(traffic),以形成受监视通信流。处理器单元204确定独特元素是否与受监视通信流的输入值匹配,以形成匹配的输入值,且响应于确定独特元素与受监视通信流的输入值匹配而将匹配的输入值保存在图2的存储装置216中。处理器单元204进一步确定来自服务器104上的应用服务器的输出是否在预期位置中包含匹配的输入值,且响应于确定输出在预期位置中包含匹配的输入值而使用来自配置文件的相应定义来编码匹配的输入值。处理器单元204使用通信单元210将输出返回至请求者。在另一示例中,用于减缓注入攻击的计算机实施的过程(该计算机实施的过程使用存储在存储器206中的程序代码218或作为计算机程序产品222)包含计算机可记录存储媒体,诸如,计算机可读媒体220,该计算机可记录存储媒体包含存储在其上的计算机可执行程序代码。计算机可执行程序代码包含用于减缓注入攻击的计算机实施的过程的计算机可执行程序代码。在另一说明性实施例中,用于减缓注入攻击的过程可实施于装置中,该装置包含通信结构;连接至通信结构的存储器,其中存储器包含计算机可执行程序代码;连接至通信结构的通信单元;连接至通信结构的输入/输出单元;连接至通信结构的显示器;以及连接至通信结构的处理器单元。该装置的处理器单元执行计算机可执行程序代码,以引导装置执行用于减缓注入攻击的过程。参阅图3,给出了根据本公开的各种实施例的注入攻击减缓系统的方块图。注入攻击减缓系统300是具有减缓注入攻击(包括跨站脚本攻击)的能力的增强的数据处理系统的示例。注入攻击减缓系统300包括三个主要区域中的若干组件,这些主要区域包括客户端服务302、代理服务304及应用服务306中的组件。客户端服务302包括诸如浏览器308的典型浏览器,以输入诸如受监视输入310及输入316,且接收形式为经编码的输出330的输出。代理服务304由包括监视器314、扫描器322及编码器328的代理312提供。监视器314提供监视浏览器308与服务器318之间的进入通信流及外出通信流的能力。受监视的进入通信流包括受监视输入310及输入316,而受监视的外出通信流包括输出326及经编码的输出330。监视被用于确定什么代码片段需要在输入串流(input stream)内处理及在哪个上下文中处理。代理312逻辑上或物理上位于浏览器308与诸如服务器318上的被扫描web应用320的web应用之间,以程序化地编码反射于输出中的任何输入,从而防止反射输入被超文本标记语言解译为脚本。由于注入的有效负荷在输出中是被编码的,且有效负荷中的任何脚本将不会执行,该实施方式将有效阻挡任何跨站脚本攻击。举例而言,当传递参数值“<script>hijack()〈/script>”时,代理312的编码器328 将以 “& It ;script & gt ;hijack() & It ;/script & gt ; ” 替换该值的任何出现(occurrence)0该解决方案是有用的,然而存在限制。虽然此编码适合上文所述第一场景,但是该编码对于在第二反射位置中使用将是不正确的。为净化输入的第二次出现,需要使用不同编码方法,例如,字符串编码,其使用开头的反斜线来编码双引号。进一步如上所述,代理308将必须知道输入被回送的上下文,以识别应使用的适当的编码。使用web应用扫描器(诸如,扫描器322),识别反射于扫描应用中的输入以及反射 在其中进行的上下文。扫描器322将提交在受监视输入310中发现的每个输入字段上的测试值,且确定该值是否是回送的。对于在输出326中回送的值的各个出现,识别位置及上下文。因为扫描器322控制注入的值,扫描器322使用独特的值,该值的独特足以在返回的输出中容易地识别。扫描器322也可支持相同输入在相同输出内被回送多次及在不同位置及上下文中被回送的情况。扫描器322的输出产生出现的列表,该出现的列表可被存储以供重用,例如,在一个实施例中,该出现的列表以可扩展标记语言(XML)配置文件324的形式被存储。编码器328程序化地编码反射于输出326中的输入,以创建经编码的输出330。扫描器322程序化地识别用于反射于输出中的输入的每个实例的适当位置及编码。所公开的实施例是在跨站脚本的上下文中给出的;所描述的技术适用于所有注入型攻击。举例而言,当代理能够监视所有SQL活动且确定输入(例如,超文本传输协议参数值)被原样嵌入结构化查询语言(SQL)命令中时,代理可以程序化地编码被识别的点处的值。在此示例中,如以与跨站脚本示例类似的方式,待编码的确切区域及使用的编码类型取决于上下文,在该上下文中,用户数据被嵌入结构化查询语言命令中,从而暗示代理312将需要具有被配置用于支持的适当信息。为解决此问题,扫描器322将注入独特输入,且识别在何处输入被注入至SQL命令中(如果输入被注入的话)。跨站脚本实际上是超文本标记语言注入攻击的示例,在这种攻击中攻击者将由攻击者提供的脚本注入至输出中。在某种意义上,输入被注入至超文本标记语言命令中。虽然示例公开了监视且编码传入的整个输入,但是说明性实施例对于部分输入同样有效,例如,当输入的前十个字符被回送时。出于公开的目的,管理整个输入,但是实施例也包括管理部分输入。参阅图4,给出了根据本公开的一个实施例的使用图3的注入攻击减缓系统的过程的流程图。过程400是使用图3的注入攻击减缓系统300的过程的示例。在实施例的描述中,使用以下示例请求http: //server/welcome, jsp name = John响应
<html><body> <Hl>Hello, Joha</Hl> <script><! [CDATA [ var user="John n;
//···
]]></script> </body〉</h tml>过程400开始(步骤402),且监视所有进入通信流及外出通信流(步骤404)。进入通信流由浏览器产生,且经由代理流至应用服务器上的web应用。外出通信流源于服务器上,且经由代理行进至浏览器上的客户端。过程400确定在配置文件中所定义的独特元素是否与受监视通信流的输入值匹配(步骤406)。独特元素是作为web应用扫描的结果被创建和保存的,该web应用扫描使用诸如图3的扫描器322的扫描器。当确定在配置文件中所定义的独特元素与保存的受监视通信流的输入值匹配时,返回“是”结果。当确定在配置文件中所定义的独特元素与受监视通信流的输入值不匹配时,返回“否”结果。当在步骤406中获得“否”结果时,过程400循环返回,以执行步骤404。当在步骤406中获得“是”时,过程400保存匹配的输入值(步骤408)。过程400确定输出是否在预期位置中包含匹配的输入值(步骤410)。当确定输出在预期位置中包含匹配的输入值时,获得“是”结果。当确定输出在预期位置中不包含匹配的输入值时,获得“否”结果。当在步骤410中获得“是”结果时,过程400使用配置文件中的相应定义来编码匹配的输入值(步骤412)。匹配的输入值是使用包含于配置文件内的信息来编码的,该配置文件包括位置及上下文信息。因此,适当编码系被用来编码包括在输出中的匹配的输入值。过程400将输出返回至请求者(步骤414),此后过程400终止(步骤416)。当在步骤410中获得“否”结果时,过程400使用默认定义来编码匹配的输入值(步骤418),且此后过程400终止(步骤416)。因为匹配的输入值是在配置文件的项中揭示的位置之外的位置中识别的,所以使用默认定义。尽管位置不同,但是输入值是匹配的且因此被编码以用于保护。因此,代理使用刚刚描述的过程来实施保护。代理接收或访问可扩展标记语言配置文件,且监视所有进入通信流及外出通信流。每当遇到配置文件中提及的输入时,代理保存输入的值。当形成输出时,代理确定输入值是否出现于一个或多个预期位置中,且如果是这样,基于用于每个输入值的一个或多个被配置的上 下文来编码输入值。举例而言,当“name”参数具有 <script>hijack(〃this " )〈/script〉的值时,该值将被修改,以在输出中的第一出现中变为& It ;script & gt ;hijack(& quot ;this
&quot ;) & It ;/script & gt ;,且在输出中的第二出现中变为 <script>hi jack (| "this
")〈/script>。关于编码什么输入值的指令可变得复杂得多,包括描述哪些额外参数或cookie出现于请求中的上下文、作为路径的一部分的输入、在另一输入之后的输入、及其他典型的出现。描述输出中的位置可以许多不同方式来进行。位置描述的方法可变化。举例而言,在一个实施例中,可使用XPath表达式。使用此示例,扫描器可将超文本标记语言正规化为可扩展超文本标记语言(XHTML),然后扫描器可使用XML路径、XPath表达式来描述返回的有效负荷的位置。使用上述先前示例,将使用XPath记法来编码两个位置如下/html/body/Hl/b/text ()/html/body/img/@ alt/string O。此不例将仅在 XPath 2. O 中工作。 在另一实施例中,使用正则表达式来描述输出中的位置。此方法及XPath方法将通常忽略输出的很可能变化的不太显着部分,因为页面并不是真正静态的。所使用的一个技术预期输出的超文本标记语言结构保持不变,但忽略内容本身。
举例而言,在先前示例中,假设使用$1来描述回送的输出,可使用以下正则表达式
<html><body>
<Η1>[Λ<]*,$1</Η1>
<scr ip t><! [CDATA [ var user =rrSlff;为克服描述太具体且输入值在不同点中回送的状况,使代理能够实施退路(fallback)默认编码。默认编码具有较高中断应用的机率,但是在使用时将提高安全性。举例而言,代理被设置为当输出中的有效负荷属于已知回送数据的输入时,使用超文本标记语言来编码输出中的该有效负荷的任何出现,并且因此离开初始配置,且比八个字符长。参阅图5,给出了根据本公开的一个实施例的与图4的过程一起使用的配置文件创建过程的流程图。过程500是用以创建诸如图3的XML配置文件324的配置文件的配置过程的示例,该配置文件包含识别的输入值,这些识别的输入值包括与图4的过程400 —起使用的位置及上下文信息。实施例的描述使用以下示例请求http://server/welcome, jsp name = John响应<html><body>
<Hl>Hello, John</Hl>
<script><! [CDATAf var user="John //···
]]></script>
</body></h tml>在一个实施例中,扫描器(诸如图3的扫描器322)侦测在输出中回送用户输入所在的所有位置。为识别位置,扫描器将对包含web应用的网站进行蜘蛛查找(spider),从而发现包括cookie、表单字段及路径的、web应用的所有页面及输入。用于每个这种输入, 将输入值修改为某种独特的值(诸如,“AppSCan_Value”),重发输入,且确定该值是否在输出中回送。如果该值在输出中回送,则扫描器记下被修改的输入,例如,统一资源定位器(URL)、参数名、包含回送的输入的输出中的一个或多个位置及一个或多个上下文。在扫描完成之后,扫描器例如以可扩展标记语言格式输出这些位置的列表。当前可用的web应用安全扫描器已为许多现有测试进行蜘蛛查找、修改值且创建配置,从而减少添加此额外有效负荷所需要的努力。第一实施例可仅关心实际上易受跨站脚本攻击侵害的输入,而简单地跳过被认为不太可能易受跨站脚本攻击侵害的回送输入(因为典型的代码解决方案是可用的)。在上文示例中,说明性实施例中的扫描器指示,统一资源定位器“http. //server/welcome, jsp”上的参数“name”在输出中被回送两次,从而详述每一次回送的位置及上下文。过程500开始(步骤502),且识别Web应用的页面及页面的相关输入,以形成一组识别的输入(步骤504)。获取位置信息及与位置关联的上下文信息。对于该组识别的输入中的每个输入,过程500变换输入,以形成独特元素(步骤506)。过程500形成独特元素,以将输入值识别为潜在注入攻击值。过程500使用独特元素来重发输入(步骤508)。独特元素表示扫描的输入值。过程500确定独特元素是否在输出中回送(步骤510)。当确定独特元素在输出中回送时,获得“是”结果。当确定独特元素没有在输出中回送时,获得“否”结果。当在步骤510中获得“否”结果时,过程500向前跳至步骤514。当在步骤510中获得“是”结果时,过程500在包含独特元素的回送输入的输出中识别位置及上下文(步骤512)。过程500确定是否存在更多页面待处理(步骤514)。当确定存在更多页面待处理时,获得“是”结果。当确定不存在更多页面待处理时,获得“否”结果。当在步骤514中获得“是”结果时,过程500循环返回至步骤504,以处理剩余页面。当在步骤514中获得“否”结果时,过程500在配置文件中输出扫描结果,其包含识别的位置的列表(步骤516),并且此后过程500终止(步骤518)。具有相关位置及上下文信息的每个识别的输入值作为一项被放置在所得到的配置文件中,该配置文件由诸如图3的编码器328的编码器使用。
因此,在一实施例中提供了一种用于减缓注入攻击的计算机实施的过程,该计算机实施的过程监视所有进入通信流及外出通信流,以形成受监视通信流;确定独特元素是否与受监视通信流的输入值匹配,以形成匹配的输入值;且响应于确定独特元素与该受监视通信流的输入值匹配而保存匹配的输入值。计算机实施的过程进一步确定所返回的输出是否在预期位置中包含匹配的输入值,且响应于确定输出在预期位置中包含匹配的输入值而使用来自配置文件的相应定义来编码匹配的输入值,且将输出返回至请求者。附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的 组合来实现。下面的权利要求中的所有装置功能元件或步骤功能元件的对应结构、材料、操作和等价物旨在包括用于与如具体声明的那样的其他所声明的元件结合执行所述功能的任何结构、材料或操作。出于说明和描述目的给出了对本发明的描述,但是所述描述并非旨在是穷举的或是将本发明限于所公开的形式。在不偏离本发明的范围和精神的情况下,许多修改和变化对于本领域的技术人员来说都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理和实际应用,并且使得本领域的其他技术人员能够针对具有各种修改的适合于所构想的特定使用的各种实施例理解本发明。本发明可采取完全硬件实施例、完全软件实施例或包含硬件及软件元素的实施例的形式。在优选实施例中,本公开实施于软件中,该软件包括(但不限于)固件、常驻软件、微代码及本领域的技术人员可认识的其他软件媒体。应注意,虽然已在全功能数据处理系统的上下文中描述了本发明,但是本领域的技术人员将了解,本发明的过程能够以指令的计算机可读媒体的形式及各种形式分发,且本发明同样适用,而不管实际用于执行分发的特定类型的信号承载媒体。计算机可读媒体的示例包括可记录型媒体(诸如,软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM,及传输型媒体,诸如,数字通信链路及模拟通信链路、使用传输形式(例如,射频及光波传输)的有线或无线通信链路。该计算机可读媒体可采取编码格式的形式,这些编码格式经解码,供特定数据处理系统中实际使用。适合于存储及/或执行程序代码的数据处理系统将包括至少一个处理器,该至少一个处理器直接耦合至存储器组件或经由系统总线间接耦合至存储器组件。存储器组件可包括本地存储器,该本地存储器使用于程序代码的实际执行期间;大容量存储器;以及高速缓存,这些高速缓存提供至少某些程序代码的暂时存储,以减少在执行期间必须自大容量存储器取得代码的次数。输入/输出或I/O装置(包括但不限于键盘、显示器、指点装置等)可直接地或经由中介的I/o控制器耦合至系统。
网络配接器也可耦合至系统,以使数据处理系统能够经由中介的专用网络或公用网络耦合至其他数据处理系统或远程打印机或存储装置。调制解调器、电缆调制解调器及以太网络卡仅是几种目前可用类型的网络配接器。出于说明及描述的目的已给出本发明的描述,且本发明的描述并非旨在是穷尽的或者将本发明限制于所公开的形式。许多修改及变化对于本领域技术人员将是显而易见 的。选择且描述实施例,以便最佳地解释本发明的原理、实际应用,且使本领域的技术人员能了解本发明的具有适于如所考虑的特定用途的各种修改的各种实施例。
权利要求
1.一种用于防止恶意代码被嵌入到Web浏览器访问的web应用的脚本语言中的方法,该方法包括 监视由web浏览器产生的所有进入通信流及由服务器产生的外出通信流,以形成受监视通 目流; 确定在配置文件中定义的独特元素是否与该受监视通信流的输入值匹配,以形成匹配的输入值; 响应于确定该独特元素与该受监视通信流的输入值匹配而保存该匹配的输入值; 确定输出是否在预期位置中包含该匹配的输入值; 响应于确定该输出在预期位置中包含该匹配的输入值而使用来自该配置文件的相应定义来编码该匹配的输入值;以及 将输出返回至该请求者。
2.如权利要求I所述的方法,其中确定输出是否在预期位置中包含该匹配的输入值进一步包括 确定相应独特元素是否在该输出中被识别;以及 识别与该输出中的独特元素关联的位置及上下文,其中确定及识别进一步包括独特值的嵌入。
3.如权利要求2所述的方法,其中确定独特元素是否与该受监视通信流的输入值匹配进一步包括 识别该web应用的页面及该页面的相关输入,以形成一组识别的输入; 变换该组识别的输入中的每个输入,以形成相应的独特元素;以及 使用所述相应的独特元素来重发该输入。
4.如权利要求2所述的方法,其中识别与该输出中的独特元素关联的位置及上下文进一步包括 在该配置文件中输出扫描结果。
5.如权利要求I所述的方法,其中该配置文件包含该组识别的输入中的每个输入及相应的预期输出位置和上下文的列表。
6.如权利要求I所述的方法,其中响应于确定该独特元素不与该受监视通信流的输入值匹配而返回监视所有进入通信流及外出通信流。
7.如权利要求I所述的方法,其中响应于确定该输出在预期位置中不包含该匹配的输入值而使用默认定义来编码该匹配的输入值。
8.一种用于防止恶意代码被嵌入到web浏览器访问的web应用的脚本语言中的装置,该装置包括 用于监视由web浏览器产生的所有进入通信流及由服务器产生的外出通信流以形成受监视通信流的装置; 用于确定在配置文件中定义的独特元素是否与该受监视通信流的输入值匹配以形成匹配的输入值的装置; 响应于确定该独特元素与该受监视通信流的输入值匹配,用于保存该匹配的输入值的装置; 用于确定输出是否在预期位置中包含该匹配的输入值的装置;响应于确定该输出在预期位置中包含该匹配的输入值,用于使用来自该配置文件的相应定义来编码该匹配的输入值的装置;以及用于将输出返回至该请求者的装置。
9.如权利要求8所述的装置,进一步包括 用于识别该应用的页面及该页面的相关输入以形成一组识别的输入的装置; 用于变换该组识别的输入中的每个输入以形成相应的独特元素的装置;以及 用于使用所述相应的独特元素来重发该输出的装置。
10.如权利要求8所述的装置,其中该配置文件包含该组识别的输入中的每个输入及相应的预期输出位置和上下文的列表。
11.如权利要求8所述的方法,进一步包括响应于确定该输出在预期位置中不包含该匹配的输入值,用于使用默认定义来编码该匹配的输入值的装置。
12.一种包含计算机程序代码的计算机程序,当该计算机程序代码被加载到计算机系统中并被执行时,执行根据权利要求I 一 7中的任何一个方法的所有步骤。
全文摘要
一种用于防止恶意代码被嵌入到web浏览器(308)访问的web应用的脚本语言中的方法,该方法包括监视由web浏览器产生的所有进入通信流(310)及由服务器(318)产生的外出通信流(326),以形成受监视通信流;确定在配置文件中定义的独特元素是否与该受监视通信流的输入值匹配,以形成匹配的输入值;响应于确定该独特元素与该受监视通信流的输入值匹配而保存该匹配的输入值;确定输出是否在预期位置中包含该匹配的输入值;响应于确定该输出在预期位置中包含该匹配的输入值而使用来自该配置文件的相应定义来编码该匹配的输入值;以及将该输出(330)返回至该请求者。
文档编号H04L29/06GK102893576SQ201180023769
公开日2013年1月23日 申请日期2011年6月8日 优先权日2010年6月10日
发明者G·伯德加尼, A·沙拉巴尼 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1