• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 33
    • 下载费用:30 金币  

    重庆时时彩模拟器: 信息流降级器中缺陷和不兼容问题的自动检测.pdf

    关 键 词:
    信息 降级 缺陷 兼容问题 自动检测
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201280047485.9

    申请日:

    2012.07.27

    公开号:

    CN103842963A

    公开日:

    2014.06.04

    当前法律状态:

    授权

    有效性:

    有权

    法律详情: 授权|||实质审查的生效IPC(主分类):G06F 9/45申请日:20120727|||公开
    IPC分类号: G06F9/45 主分类号: G06F9/45
    申请人: 国际商业机器公司
    发明人: O·特立普; S·D·泰尔赫特; 立石孝彰; M·匹斯托爱
    地址: 美国纽约
    优先权: 2011.09.29 US 13/248,724
    专利代理机构: 中国国际贸易促进委员会专利商标事务所 11038 代理人: 鲍进
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201280047485.9

    授权公告号:

    ||||||

    法律状态公告日:

    2016.11.30|||2014.07.02|||2014.06.04

    法律状态类型:

    授权|||实质审查的生效|||公开

    摘要

    本发明公开涉及信息流降级器中缺陷和不兼容问题的自动检测。涉及目标部署环境评估应用代码中降级器代码的机制。识别应用代码中的降级器代码?;谑涑龃?,识别降级器代码响应于接收输入串而输出的输出串。检索一个或多个非法串模式集合。该一个或多个非法串模式集合中的每一个与相应的部署环境相关联。非法串模式是降级器为安全起见而在信息流中识别的串模式?;诟靡桓龌蚨喔龇欠ùJ郊弦约笆涑龃?,做出关于降级器代码是否与目标部署环境相兼容的确定。生成指示确定结果的输出。

    权利要求书

    权利要求书
    1.  一种关于目标部署环境评估应用代码中的降级器代码的方法,包括:
    通过应用分析机制识别与应用代码相关联的降级器代码,其中降级器代码是与应用代码相关联的一部分代码,所述一部分代码对应用代码的信息流进行操作以确保在降级器代码的输出中对降级器代码的信息输入的保密性;
    基于输入串,通过应用分析机制生成降级器代码响应于收到输入串而输出的输出串;
    从存储系统检索一个或多个非法串模式集合,其中所述一个或多个非法串模式集合中的每一个与相应的部署环境相关联,并且其中非法串模式是降级器为了安全而在信息流中识别的串模式;
    基于一个或多个非法串模式集合和输出串,通过应用分析机制确定降级器代码是否与目标部署环境相兼容;及
    通过应用分析机制产生指示所述确定的结果的输出。

    2.  如权利要求1所述的方法,其中确定降级器代码是否与部署环境相兼容包括:
    识别降级器代码被部署在其中或者将要被部署在其中的目标部署环境;及
    基于一个或多个非法串模式集合、输出串以及目标部署环境的识别,确定降级器代码是否与部署环境相兼容。

    3.  如权利要求2所述的方法,其中识别目标部署环境包括:
    接收目标部署环境的用户规范。

    4.  如权利要求2或权利要求3所述的方法,其中识别目标部署环境包括:
    基于对由数据处理系统维护的配置信息的分析,自动地确定目标部署环境。

    5.  如任一在前权利要求所述的方法,其中确定降级器代码是否与目标部署环境相兼容包括:
    比较降级器代码的输出串和一个或多个非法串模式集合;及
    识别匹配降级器代码的输出串的、与一个或多个非法串模式集合相关联的非法串模式。

    6.  如权利要求5所述的方法,其中确定降级器代码是否与目标部署环境相兼容包括:
    识别和与降级器代码的输出串匹配的非法串模式相关联的相应部署环境;及
    确定相应部署环境是否与目标部署环境匹配,其中,如果相应部署环境与目标部署环境匹配,就确定降级器代码与目标部署环境相兼容,并且其中,如果相应部署环境与目标部署环境不匹配,就确定降级器代码与目标部署环境不兼容。

    7.  如权利要求5或权利要求6所述的方法,还包括:
    确定与降级器代码的输出串匹配的非法串模式的强度;
    确定对于目标部署环境是否存在与一个或多个非法串模式集合相关联的较高强度的非法串模式;及
    响应于确定存在较高强度的非法串模式,产生关于如何改善降级器代码的操作以使得降级器代码的输出串将与较高强度的非法串模式匹配的建议。

    8.  如权利要求7所述的方法,其中输出包括发送到用户的通知,其中所述通知识别降级器代码是否与目标部署环境相兼容并且进一步识别建议。

    9.  如任一在前权利要求所述的方法,还包括:
    存储多个非法串模式,其中与多个非法串模式相关联的每个非法串模式集合与一种类型的降级器代码相关联,并且其中对一个或多个非法串模式集合的检索是基于在应用代码中识别的降级器代码的类型执行的。

    10.  一种包括其中存储了计算机可读程序的计算机可读存储介质的计算机程序产品,其中当在计算设备上执行时,计算机可读程序使计算设备:
    识别与应用代码相关联的降级器代码,其中降级器代码是与应用代码相关联的一部分代码,所述一部分代码对应用代码的信息流进行操作以确保在降级器代码的输出中对降级器代码的信息输入的保密性;
    基于输入串,生成降级器代码响应于收到输入串而输出的输出串;
    检索一个或多个非法串模式集合,其中所述一个或多个非法串模式集合中的每一个与相应的部署环境相关联,并且其中非法串模式是降级器为了安全而在信息流中识别的串模式;
    基于一个或多个非法串模式集合和输出串,通过应用分析机制确定降级器代码是否与目标部署环境相兼容;及
    通过应用分析机制产生指示所述确定的结果的输出。

    11.  如权利要求10所述的计算机程序产品,其中计算机可读程序还通过以下使计算设备确定降级器代码是否与部署环境相兼容:
    识别降级器代码被部署在其中或者将要被部署在其中的目标部署环境;及
    基于一个或多个非法串模式集合、输出串以及目标部署环境的识别,确定降级器代码是否与部署环境相兼容。

    12.  如权利要求11所述的计算机程序产品,其中计算机可读程序还使计算设备通过接收目标部署环境的用户规范来识别目标部署环境。

    13.  如权利要求11或权利要求12所述的计算机程序产品,其中计算机可读程序还使计算设备通过基于对由数据处理系统维护的配置信息的分析而自动地确定目标部署环境来识别目标部署环境。

    14.  如权利要求10至13中任一项所述的计算机程序产品,其中计算机可读程序还通过以下使计算设备确定降级器代码是否与目标部署环境相兼容:
    比较降级器代码的输出串和一个或多个非法串模式集合;及
    识别与降级器代码的输出串匹配的和一个或多个非法串模式集合相关联的非法串模式。

    15.  如权利要求14所述的计算机程序产品,其中计算机可读程序还通过以下使计算设备确定降级器代码是否与目标部署环境相兼容:
    识别和与降级器代码的输出串匹配的非法串模式相关联的相应部署环境;及
    确定相应部署环境是否与目标部署环境匹配,其中,如果相应部署环境与目标部署环境匹配,就确定降级器代码与目标部署环境相兼容,并且其中,如果相应部署环境与目标部署环境不匹配,就确定降级器代码与目标部署环境不兼容。

    16.  如权利要求14或权利要求15所述的计算机程序产品,其中计算机可读程序还使计算设备:
    确定与降级器代码的输出串匹配的非法串模式的强度;
    确定对于目标部署环境是否存在与一个或多个非法串模式集合相关联的较高强度的非法串模式;及
    响应于确定存在较高强度的非法串模式,产生关于如何改善降级器代码的操作以使得降级器代码的输出串将与较高强度的非法串模式匹配的建议。

    17.  如权利要求16所述的计算机程序产品,其中输出包括发送到用户的通知,其中所述通知识别降级器代码是否与目标部署环境相兼容并且进一步识别建议。

    18.  如权利要求10至17中任一项所述的计算机程序产品,其中计算设备存储多个非法串模式,其中与多个非法串模式相关联的每个非法串模式集合与一种类型的降级器代码相关联,并且其中基于在应用代码中识别的降级器代码的类型而执行对一个或多个非法串模式集合的检索。

    19.  如权利要求10至18中任一项所述的计算机程序产品,其中计算机可读程序存储在计算设备中的计算机可读存储介质中,并且其中计算机可读程序是从远程数据处理系统经网络下载的。

    20.  如权利要求10至19中任一项所述的计算机程序产品,其中计算机可读程序存储在服务器数据处理系统中的计算机可读存储介质中,并且其中计算机可读程序是经网络下载到计算设备上的,其中计算设备对服务器数据处理系统来说是远程的。

    21.  一种关于目标部署环境评估应用代码中的降级器代码的设备,包括:
    用于通过应用分析机制识别与应用代码相关联的降级器代码的装置,其中降级器代码是与应用代码相关联的一部分代码,所述一部分 代码对应用代码的信息流进行操作以确保在降级器代码的输出中对降级器代码的信息输入的保密性;
    用于基于输入串,通过应用分析机制生成降级器代码可操作来响应于收到输入串而输出的输出串的装置;
    用于从存储系统检索一个或多个非法串模式集合的装置,其中所述一个或多个非法串模式集合中的每一个与相应的部署环境相关联,并且其中非法串模式是降级器可操作来为了安全而在信息流中识别的串模式;
    用于基于一个或多个非法串模式集合和输出串,通过应用分析机制确定降级器代码是否与目标部署环境相兼容的装置;及
    用于通过应用分析机制产生指示所述确定的结果的输出的装置。

    22.  如权利要求21所述的设备,其中用于确定降级器代码是否与部署环境相兼容的装置还包括:
    用于识别降级器代码被部署在其中或者将要被部署在其中的目标部署环境的装置;及
    用于基于一个或多个非法串模式集合、输出串以及目标部署环境的识别,确定降级器代码是否与部署环境相兼容的装置。

    23.  如权利要求22所述的设备,其中用于识别目标部署环境的装置还包括:
    用于接收目标部署环境的用户规范的装置。

    24.  如权利要求22或权利要求23所述的设备,其中用于识别目标部署环境的装置还包括:
    用于基于对由数据处理系统维护的配置信息的分析,自动地确定目标部署环境的装置。

    25.  如权利要求21-24中任一项所述的设备,其中用于确定降 级器代码是否与目标部署环境相兼容的装置还包括:
    用于比较降级器代码的输出串和一个或多个非法串模式集合的装置;及
    用于识别与降级器代码的输出串匹配的和一个或多个非法串模式集合相关联的非法串模式的装置。

    26.  如权利要求25所述的设备,其中用于确定降级器代码是否与目标部署环境相兼容的装置包括:
    用于识别和与降级器代码的输出串匹配的非法串模式相关联的相应部署环境的装置;
    用于确定相应部署环境是否与目标部署环境匹配的装置;
    用于响应于相应部署环境与目标部署环境匹配,确定降级器代码与目标部署环境相兼容的装置;及
    用于响应于相应部署环境与目标部署环境不匹配,确定降级器代码与目标部署环境不兼容的装置。

    27.  如权利要求25或权利要求26所述的设备,还包括:
    用于确定与降级器代码的输出串匹配的非法串模式的强度的装置;
    用于确定对于目标部署环境是否存在与一个或多个非法串模式集合相关联的较高强度的非法串模式的装置;及
    用于响应于确定存在较高强度的非法串模式,产生关于如何改善降级器代码的操作以使得降级器代码的输出串将与较高强度的非法串模式匹配的建议的装置。

    28.  如权利要求27所述的设备,其中输出包括发送到用户的通知,其中所述通知可操作来识别降级器代码是否与目标部署环境相兼容并且可操作来识别建议。

    29.  如权利要求21-28中任一项所述的设备,还包括:
    用于存储多个非法串模式的装置,其中与多个非法串模式相关联的每个非法串模式集合与一种类型的降级器代码相关联;及
    用于基于在应用代码中识别的降级器代码的类型对一个或多个非法串模式集合进行检索的装置。

    说明书

    说明书信息流降级器中缺陷和不兼容问题的自动检测
    技术领域
    本申请一般而言涉及改进的数据处理装置和方法,更具体地涉及在信息流降级器中缺陷和不兼容问题的自动检测机制,其中信息流降级器也称作安全降级器或简单地称作降级器。
    背景技术
    信息流安全性原则确立了在程序中不允许信息的“非法流动”。如果流动允许不可信信息在可信的计算中使用(完整性违犯(integrity violation))或者它允许私密信息完全地或者部分地暴露给非授权用户(保密性违犯(confidentiality violation)),那么流动就是非法的。通过简单地申明不应该存在任何从“高”到“低”的信息流,完整性和保密性可以被看作是双重问题,其中“高”在完整性中意指“不可信的”且在保密性中意指的“私密的”,而“低”在完整性中意指“可信的”且在保密性中意指“公开的”。
    信息可以用信息流标签来标记。通常地,信息流标签形成部分排序的集合或点阵(lattice)。如果信息流安全性被严格执行并且没有非法信息流被允许,那么大部分程序将不工作。为成为“信息流安全”,程序将必须被“分区”使得用某个标签“X”标记的信息仅能流动到已用高于或等于“X”的标签标记的程序点。
    具有这些限制的程序是不太可能有用的。例如,从完整性角度来看,Web应用应该会接受来自潜在不可信用户的输入并且在可信的计算中使用那些输入。例如,网上银行程序接受用户的帐号和密码(潜在地不可信的或恶意的信息)作为输入,并把它们传递给后端数据库系统,在那里它们被使用在可信任的设置中。在另一个例子中,网上书店接受客户的用户号和密码以及客户想购买的书名(所有潜在 地不可信的或恶意的信息)作为输入,并且用它们完成交易,等等。
    从保密性的角度来看,Web应用经常发布基于私密信息计算出的数据并且因此,它们应该同样被看作是私密的。例如,银行应用会向出纳员暴露任何用户的社会安全号的最后四位,并且网上书店会向店员暴露任何客户的信用卡号的最后四位数字等。已知所有这些程序都展示了允许“高”信息流向“低”程序点的流动,如果简单地强制实行信息流安全,那么所有这些程序将会被拒绝。为了允许这些程序工作,“高”信息能够被“降级”并且变的足够“低”以便在“低”程序点中被使用。
    降级在完整性中自身翻译为“认可”并且在保密性中翻译为“解密”。例如,一旦程序已经验证用户提供给Web应用的输入是正确格式的串,那么程序就可以认可现在变得足够可信的输入在可信的计算中被使用。类似地,一旦程序已经验证从私密中提取的信息不足以暴露私密本身,那么程序就可以解密提取的信息,其中提取的信息现在可以变得足够公开来暴露给公共接收者。
    程序可以实现多种不同类型的降级器。也就是说,用这些降级器是因为程序不应该接受到“低”函数的任何“高”输入,除非该“高”输入之前已经被降级。特定降级器为“低”函数集合的特定的特殊子集运行并且因此,程序会被要求实现多种不同类型的降级器。
    例如,接受串形式输入的完整性“低”函数把该串连接成结构化查询语言(SQL)查询,并且然后把它提交给数据库。在这里例子中,该函数将要求它的输入不包含分号和撇号,因为这样的字符会被数据库解释为SQL命令。因此,任何给该“低”函数的输入应该经过消毒(即,通过删除/替换非法输入的可疑部分对非法输入进行转换)或认可来确保那里没有这种非法字符。只有当可信的消毒器已经验证这种非法字符不存在,最初不可信的串才被接受可以在SQL查询中使用。
    但是,如果“低”函数不负责执行SQL查询,而是负责把其串输入值级联成超文本标记语言(HTML)代码,那么不同的消毒就是 必要的。这里的问题不再是防止SQL注入,而是防止被称作跨站脚本执行(XSS)的攻击。在这种情况下,消毒函数必须检查不存在特殊的JavaScript(Java和所有基于Java的商标和标记都是Oracle和/或其附属公司的商标或注册商标)标签,诸如<script>和</scripts>。
    降级器经??梢源涌庵械玫?,并且基于相应的“低”函数的规范被分类。但是,Web应用经常实现它们自己的降级函数。这使得Web应用的安全性静态分析非常复杂。实际上,对信息流安全性的静态分析应该接收降级函数的签名以及把降级函数映射到相应“低”函数的规则作为输入。在这一点上,除非“低”函数的输入已经被正确地降级了,否则在没有任何通向“低”函数的路径的情况下,静态分析可以验证到“低”函数的输入是否始终经过正确的降级。不幸的是,当Web应用实现它们自己的降级器时,检测那些降级器并把它们以用于信息流安全性的静态分析可以随后解释它们的方式归类是非常困难的。
    Web应用由于它们提供了用户输入并且通常地可由大量的用户访问,所以特别容易受到安全攻击。据网络应用安全联盟(WASC)所称,在2008年发现并修复了大约有10万个安全性漏洞,其中52,587个是紧急的或严重的。这说明?;eb应用以防止恶意输入的重要性。这种?;ねǔ5厥褂靡陨锨懊婷枋龅娜峡?降级器机制实现,这种机制或者对用户的输入消毒(即通过删除/替换输入的可疑部分来转换输入),或者对用户的输入验证(即如果判断用户的输入是非法的那么就拒绝该用户输入)。
    消毒器和验证器可以被认作对攻击的最后的(并且最特定于应用的)防御线。这些机制通常包含精细的推理,其应在各种各样的上下文中对合法和非法输入进行区分。而且,这些机制本身是安全专家和应用程序开发人员之间的接口。正确地写它们并不是标准的编码任务,因为需要对安全威胁(以已知安全攻击的长目录的形式)有深入了解。关于如何创建消毒和验证机制的最佳实践,准则和指导方针通 ??梢栽诎踩牡抵姓业?。具有挑战性的是检查Web应用的代码是否遵循了这些准则。目前还没有自动化的机制来执行这项检查。
    此外,由于降级器通常地是由软件工程师编写的,他们的专长在于开发软件而不是了解他们的设计和工程选择的安全含义,所以由于不正确输入降级导致的攻击数量高得惊人。最常见的,涉及删除非法字符或字符序列的某些极端的情况在降级器的实现中被排除在外或者错误地解决。但是,也存在其中正确的降级对服务器端组件的具体实现敏感的情况。例如,防止SQL注入(SQLi)攻击的降级器应该对每种类型的数据库服务器应用不同的转换,因为这些数据库服务器在解析SQL命令时使用不同的元字符,例如,MS SQL server把两个连字符(--)解释为注释的开始,而另一台数据库服务器可能会把井号(#)解释为注释的开始。
    攻击者可以容易地以及有效地识别出其中通过采用模糊技术将不正确的消毒应用到应用的实例。这使得事情变得更糟,因为在攻击者得出程序的?;げ阋驯黄苹档慕崧鄣耐?,攻击者同时地得知在代码中的安全性敏感区域中使用了哪些输入,这使得攻击的随后步骤更容易。这样,当确定降级器是否与它想要?;さ南低臣嫒菔?,就会出现另外的挑战。
    发明内容
    在一个说明性的实施例中,提供了在数据处理系统中关于目标部署环境评估应用代码中的降级器代码的方法。该方法包括通过数据处理系统的应用分析机制在应用代码中识别降级器代码。降级器代码是应用代码中代码的一部分,其对应用代码的信息流操作以确保在降级器代码的输出中输入到降级器代码的信息的机密性。此方法还包括基于输入串,通过应用分析机制生成降级器代码响应于接收输入串而输出的输出串。此方法也包括从与数据处理系统相关联的存储系统中检索一个或多个非法串模式集合。一个或多个非法串模式集合中的每一个都与相应的部署环境相关联。非法串模式是为安全起见降级器在信 息流中识别的串模式。此外,该方法包括,基于该一个或多个非法串模式集合以及输出串,通过应用分析机制确定降级器代码是否与目标部署环境相兼容。此外,该方法包括通过应用分析机制生成指示确定的结果的输出。
    在其它说明性的实施例中,提供了包括带有计算机可读程序的计算机可用或可读介质的计算机程序产品。当在计算设备上执行时,该计算机可读程序使计算设备执行以上关于该方法的说明性实施例概述的各种操作及其组合。
    在还有另一个说明性实施例中,提供了一种系统/装置。该系统/装置可以包括一个或多个处理器以及耦合到该一个或多个处理器上的存储器。存储器可以包含指令,当这些指令被该一个或多个处理器执行时,使该一个或多个处理器执行以上关于该方法的说明性实施例概述的各种操作及其组合。
    将描述本发明的这些和其它特征与优点,或者根据以下本发明示例实施例的具体描述,这些和其它特征与优点将对那些本领域普通技术人员变得显而易见。
    附图说明
    通过结合附图参考以下说明性实施例的具体描述,优选实施例及优选使用方式及其优点将得到最好的理解,其中:
    图1绘出了其中可以实现说明性实施例各方面的示例分布式数据处理系统的图形表示;
    图2是其中可以实现说明性实施例各方面的示例数据处理系统的示例框图;
    图3是根据一个说明性实施例的应用分析机制的主要操作元件的示例框图;
    图4是说明性实施例的机制可以利用来产生上下文无关语法的传感器的示例图;
    图5是说明根据一个说明性实施例的静态串分析的示例图;
    图6是根据一个说明性实施例的示例程序的调用图;
    图7是说明性地描述根据一个说明性实施例的用于静态检测以及分类信息流降级器的系统和方法的示例框/流程图;
    图8是概括根据一个说明性实施例的自动应用分析机制的示例操作的流程图;及
    图9是概括根据一个说明性实施例的用于评估降级器的兼容性和强度的示例操作的流程图。
    具体实施方式
    说明性实施例通过利用信息流降级器的质量和一致性的形式分析,提供了用于静态实施Web应用安全准则的机制。尤其,说明性实施例提供了自动化的机制用于检查在诸如Web应用(即,可以通过万维网或因特网访问的应用)的应用代码中的降级器,并且确保应用代码遵循关于实现信息流降级器的准则?;诟眉觳?,可以生成关于Web应用是否与准则相符或是否包含安全违犯的输出。
    说明性实施例使用串分析机制。串分析是技术和机制的集合,其目的是近似串变量可以假设的运行时的值的集合。美国专利申请12/575,647;12/825,293;和12/627,351描述了串分析技术对Web应用安全问题的示例应用。特别地,美国专利申请12/575,647描述了关于信息流降级器使用串分析进行自动检测的技术。
    本发明说明性实施例的机制与涉及如何在应用代码中找到诸如消毒器和验证器的降级器的申请12/575,647中的机制互不相关地运行。作为替代,本发明说明性实施例的机制是针对确定降级器是如何构造的以及确定该构造是否满足确立的准则。该说明性实施例的机制脱离降级器的实现细节进行抽象并把降级器表示为降级器输入上的操作序列。这种抽象通过对内置串操作以及其它感兴趣的指令进行建模来完成。例如,可以用一元二阶逻辑模型对内置串操作建模。然后,结果产生的串操作的高层抽象表示可以根据准则集合来检查和打分。量化应用?;げ?,即应用的信息流降级器,的质量可以作为自动化过程来 执行。
    根据确立的准则评估降级器的自动化机制可以被用作应用开发人员与安全专家之间重要的桥梁,因为该机制允许安全专家验证降级器的代码实现并且通过正式的机制与应用开发人员交流评估。说明性实施例的自动化机制还能够识别那些分数特别低,以至于它们可能会是业务逻辑错误的原因的降级器,例如,如果降级器的低分数是由于它们消除输入字符而不是拒绝在业务逻辑中导致意外行为的输入的事实。
    正如本领域技术人员将理解的,本发明可以体现为系统、方法或计算机程序产品。相应地,本发明各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或者结合硬件与软件方面的实施例的形式,所有这些方面会在本文中一般性称作“电路”,“??椤被颉跋低场?。而且,本发明各方面可以采取体现在其上包含计算机可用程序代码的任何一种或多种计算机可读介质的计算机程序产品的形式。
    可以使用一种或多种计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质可以是例如,但不限于,电、磁、光、电磁、红外线或者半导体系统、装置、设备或者以上所述的任意合适组合。计算机可读存储介质的更具体例子(非穷尽列表)将包括以下:具有一条或多条电线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或者闪存)、光纤、便携式光盘只读存储器(CDROM)、光学存储设备、磁性存储设备或者以上所述的任意合适组合。在本文档的背景下,计算机可读存储介质可以是可以包含或者存储由指令执行系统、装置或设备使用或者与其联合使用的程序的任何有形介质。
    计算机可读信号介质可以包括其中,例如,在基带中或者作为载波的一部分,体现计算机可读程序代码的传播数据信号。这种传播信 号可以采取多种形式中的任何一种,包括但不限于电磁、光或者其任意合适组合。计算机可读信号介质可以是非计算机可读存储介质而且可以传送、传播或者运输由指令执行系统、装置或设备使用或者与其联合使用的程序的任何计算机可读介质。
    体现在计算机可读介质上的计算机代码可以利用任何适当的介质发送,包括但不限于无线电、有线线路、光纤电缆、射频(RF)等,或者其任意合适组合。
    用于执行本发明各方面的操作的计算机程序代码可以用一种或多种编程语言的任意组合来写,其中编程语言包括面向对象的编程语言,例如JavaTM、SmalltalkTM、C++等,及传统的过程编程语言,例如“C”编程语言或者类似的编程语言。程序代码可以完全在用户的计算机上、部分地在用户的计算机上、作为独立的软件包、部分在用户的计算机上而且部分在远端计算机上或者完全在远端计算机或服务器上执行。在后一种场景下,远端计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部的计算机(例如,通过利用互联网服务提供商的互联网)。
    以下参考根据本发明说明性实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或框图来描述本发明的各方面。将理解,所述流程图说明和/或框图的每一块及所述流程图说明和/或框图中块的组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或者其它可编程数据处理装置的处理器,来产生一种机器,使得当所述指令经计算机或者其它可编程数据处理装置的处理器执行时,产生用于实现在所述流程图和/或框图中的一个或多个块中所指定的功能/动作的装置。
    这些计算机程序指令还可以存储在计算机可读介质中,所述指令可以指示计算机、其它可编程数据处理装置或者其它设备以特定的方式起作用,使得存储在计算机可读介质中的指令产生一种制造物品,该物品包括实现在所述流程图和/或框图中的一个或多个块中所 指定的功能/动作的指令。
    所述计算机程序指令还可以加载到计算机、其它可编程数据处理装置或者其它设备上,使得一系列操作步骤在计算机、其它可编程装置或者其它设备上执行,产生一种计算机实现的过程,使得在所述计算机或者其它可编程装置上执行的指令提供用于实现在所述流程图和/或框图块中所指定的功能/动作的过程。
    附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个???、程序段或者代码的一部分,所述???、程序段或代码的一部分包含一个或多个用于实现规定逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续示出的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依赖所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框以及框图和/或流程图中方框的组合可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
    说明性实施例可以在包括分布式数据处理环境,单一数据处理设备等的许多不同类型的数据处理环境中使用。为了给说明性实施例的特定元素以及功能的描述提供上下文,下文提供了图1和图2作为可以实现说明性实施例各方面的示例环境。应当认识到,图1-2仅仅是示例,而不是要声称或暗示对其中可以实现本发明的实施例或各方面的环境作任何限制。在不背离本发明主旨与范围的情况下,可以对所述环境进行许多修改。
    现在参考附图,图1绘出了其中可以实现说明性实施例各方面的示例分布式数据处理系统的图形表示。分布式数据处理系统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)等等。如上所述,图1是以示例为目的,而不是作为对本发明的不同实施例的结构限制,并且因此,图1中所示的特定元素不应当被认为是要限制关于本发明可以在其中实现说明性实施例的环境。
    现在参考图2,其示出了可以在其中实现说明性实施例各方面的示例数据处理系统的框图。数据处理系统200是诸如图1中的客户端110的计算机的示例,其中实现本发明说明性实施例的过程的计算机可用代码或指令可以位于其中。
    在所绘示例中,数据处理系统200采用集线器架构,包括北桥接器和存储控制器集线器(NB/MCH)202以及南桥接器和输入/输出(I/O)控制器集线器(SB/ICH)204。处理单元206、主存储器208以及图形处理器210连接到NB/MCH202。图形处理器210可以通过加速图形端口(AGP)连接到NB/MCH202。
    在所绘示例中,局域网(LAN)适配器212连接到SB/ICH204。音频适配器216、键盘与鼠标适配器220、调制解调器 222、只读存储器(ROM)224、硬盘驱动器(HDD)226、CD-ROM驱动器230、通用串行总线(USB)端口与其它通信端口232以及PCI/PCIe设备234通过总线238和总线240连接到SB/ICH204。PCI/PCIe设备可以包括,例如,用于笔记本计算机的以太网适配器、附加(add-in)卡和PC卡。PCI使用卡总线控制器,而PCIe不用。ROM224可以是例如基本输入输出系统(BIOS)的闪存。
    HDD226和CD-ROM驱动器230通过总线240连接到SB/ICH204。HDD226和CD-ROM驱动器230可以使用例如集成驱动电路(IDE)或串行先进技术附件(SATA)接口。超级输入/输出(SIO)设备236可以连接到SB/ICH204。
    处理单元206上运行操作系统。在图2的数据处理系统200中该操作系统协调并提供对各种组件的控制。作为客户端,操作系统可以是市场上可买到的诸如7(Microsoft和Windows是Microsoft公司在美国、其它国家或这两者的商标)的操作系统。诸如JavaTM编程系统的面向对象的编程系统可以和操作系统一道运行,并且提供从在数据处理系统200上运行的JavaTM程序或应用到操作系统的调用(Java是Oracal和/或其附属公司在美国、其它国家或这两者的商标)。
    作为服务器,数据处理系统200可以是,例如,运行高级交互执行操作系统或操作系统的eServerTM计算机系统(IBM、eServer、System p和AIX是国际商用机器公司在美国、其它国家或这两者的商标,而LINUX是Linus Torvalds在美国、其它国家或这两者的商标)。数据处理系统200可以是在处理单元206中包含多个处理器的对称多处理器(SMP)系统。作为替换地,可以采用单处理器系统。
    用于该操作系统、面向对象编程系统以及应用或程序的指令位于诸如HDD226的存储设备上,并且可以被加载到主存储器208以供处理单元206执行。用于本发明说明性实施例的过程可以通过处理 单元206使用计算机可用程序代码来执行,其中计算机可用程序代码可以位于存储器中,例如,诸如主存储器208、ROM224或一个或多个外围设备226与230中。
    诸如图2中所示的总线238或总线240的总线系统可以包含一条或多条总线。当然,总线系统可以使用任何类型的通信架构或体系结构来实现,其中通信架构或体系结构在加入到架构或体系结构的不同组件或设备之间提供数据传输。诸如图2中的调制解调器222或网络适配器212的通信单元可以包含一个或多个用来发送和接收数据的设备。存储器可以是例如主存储器208、ROM224或诸如图2中NB/MCH202中找到的高速缓存。
    那些本领域普通技术人员将会理解在图1-2中的硬件根据实现是可以不同的。诸如闪存、等效的非易失存储器或光盘驱动器等的其它内部的硬件或外围设备,可以被用来加入或代替图1-2中所绘的硬件。同样,在不背离本发明主旨和范围的情况下,除前面提到的SMP系统以外,说明性实施例的过程也可以应用到多处理器数据处理系统中。
    而且,数据处理系统200可以采取许多不同的数据处理系统的任何形式,其中不同的数据处理系统包括客户端计算设备、服务器端计算设备、平板电脑、笔记本计算机、电话或其它通信设备、个人数字助理(PDA),等等。例如,在一些说明性示例中,数据处理系统200可以是便携式计算设备,该便携式计算设备配置有闪存存储器来提供用于存储操作系统文件或/和用户产生的数据的非易失性存储器。本质上,数据处理系统200可以是任何已知的或将来开发的数据处理系统而没有体系结构的限制。
    图1和2中计算设备的一个或多个可以被用来实现说明性实施例的各方面。例如,诸如图1中服务器104的服务器端计算设备可以用来实现Web应用,该应用可以由诸如客户端110、112和114的一个或多个客户端计算设备访问。在部署Web应用之前,或者在通过服务器104实现Web应用之后,该说明性实施例的机制可以被采用来 执行Web应用的分析以确定由Web应用实现的或与Web应用一起实现的降级器是否遵守安全准则。用于执行Web应用分析的机制可以在服务器端计算设备上实现,例如,诸如Web应用将要部署在其中或已经在其上实现的服务器104、客户端计算设备110、112或114、另外的计算设备、多个计算设备,等等。
    图3是根据一个说明性实施例的应用分析机制的主要操作元素的示例框图。图3中所示的元素可以用软件、硬件或软硬件的任何组合来实现。在一个说明性实施例中,图3中的元素以软件指令实现,其中该软件指令通过一个或多个计算设备的一个或多个处理器执行。
    如图3所示,应用分析机制300包含控制器310、输入/输出接口320、降级器检测引擎330、降级器抽象引擎340、降级器评估引擎350、安全准则引擎360、降级器缺陷/不兼容检测引擎370和合法/非法串模式数据库380。降级器缺陷/不兼容检测引擎370可以进一步地对环境上下文规范390操作,其中环境上下文规范390可以与应用分析机制300一起存储或者可以作为到应用分析机制300的输入从外部源提供。对元素310-390中的任何一个同样也是如此,因为,不是如图3中所绘的单一机制,而是这些元素中任何一个可以分布在多个计算设备上,而且因此,任何一个在某种程度上对应用分析机制300可以是“外部的”,但与包含应用分析机制300的其它元素结合起来时仍然工作。
    控制器310控制应用分析机制300的总体操作并且编排其它元素320-390中每一个的操作和使用。输入/输出接口320操作来接收输入,诸如用于分析的Web应用代码、用于配置应用分析机制300操作的用户输入(如果有的话),等等。输入/输出接口320操作来进一步产生用于向开发人员、安全人员或者其他用户提供通知的输出,来通知他们Web应用的降级器是否满足确立的安全准则,而且如果不满足的话,会存在什么违犯。而且,基于由降级器缺陷/不兼容检测引擎370执行的分析,输入/输出接口320可以操作来进一步产生用于向开发人员、安全人员或者其它用户提供通知的输出,来通知他 们降级器和降级器想要?;さ幕肪持涞娜魏稳毕莺?或不兼容,如下文将要更具体描述的。
    降级器检测引擎330分析应用代码来检测应用代码中降级器代码会在哪里出现。在一个说明性实施例中,降级器检测引擎330可以使用以诸如美国专利申请12/575,647(下文以‘647申请指代)中所描述的方式的串分析在应用代码中定位降级器代码。当然,在不背离说明性实施例主旨和范围的情况下,也可以使用其它已知的,或将来开发的用于在应用代码中检测降级器代码的机制。
    为了提供一个如何在应用代码中识别降级器代码的示例,假定利用了‘647申请的串分析。在这样的串分析中,利用诸如Yasuhiko Minamide,“Static Approximation of Dynamically Generated Web Pages,”,Proceedings of the14th International Conference on World Wide Web(WWW’05),2005中描述的方式的串操作,应用代码首先被转换成上下文无关语法(CFG)。然后,通过在对应于源应用代码中的串操作的CFG上应用近似的串操作函数,串操作从上下文无关语法中删除来产生产品规则。这些产品规则通常地由N->X1...Xn的形式表示,其中N是一个变量,而X1...Xn是变量或者字符并且构成上下文无关语法。接近串操作函数是把CFG转换成另一个CFG的函数,例如,带有输出标志的有限状态自动机的转换器。迭代近似串操作的应用直到产品规则中没有串操作。该结果是包含产品规则而没有串操作的上下文无关语法。
    也就是说,代码表现为上下文无关的语法,其中起始变量对应于你感兴趣近似的串。例如,假设该串是在“v=v1.concat(v2);”中的v。计算v的抽象值需要知道v1和v2的抽象值,并且,一旦知道v1和v2的值,需要通过对“concat”操作在v1和v2上的效果建模而从语法中删除“concat”操作。这就是以上申明迭代近似串操作的应用直到在产品规则中没有更多串操作的含义。
    假定也已知v依赖于v1和v2,所以近似可以考虑v1和v2递归地(每个轮换的)作为起始变量。对获得这些串的抽象值,原来的产 品规则不是必须的(除非如下面进一步讨论的存在循环的定义)。一旦执行了v1和v2的该递归考虑(recursive consideration),操作返回到用于v的语法,并且应用转换器近似“concat”的效果。这生成了简化的语法,其中“concat”操作不再出现,并且实际上,该规则简单地赋一个值给v。处理循环定义,需要固定点迭代,而不是上述的递归,例如,如果级联是在循环中完成:第i次迭代时v的值取决于它在第(i-1)次迭代中的值。作为进一步示例,考虑下面的JavaTM程序,其中在用串值“a”初始化后,三次把“a”附加到赋于变量的串上。

    如产品规则中,下面CFG通过把每个应用变量v转换成非终结串变量Sv并且把“=”转换成→获得,其中通过+的串级联被认为是在CFG上的串级联。
    Sa→a
    Sa→Saa
    Sr→Sa
    例如,带起始标志Sa的CFG表示赋予应用变量a的可能的串值集合,其生成串集合{”a”,”aa'',”aaa”,”aaaa”,Λ}。同样,标志Sr表示赋予程序变量r的可能的串值集合。它包含永远不会赋给变量a和r的串,因为串分析完全地忽略“for”语句的条件。
    当应用代码使用预定义的串操作时,诸如在下面应用代码部分所示的String.substring,对每一个串操作使用了合理的近似把应用代 码转换成CFG。例如,考虑下面代码部分中的预定义的串操作:
    Stringa="xxa";
    for(inti=0;i<3;i++)a=a+"a";
    Stringr=a.substring(2);
    近似串操作的合理性意思是通过近似串操作而计算生成的CFG包含通过对应于该近似串操作的预定义串操作计算的所有实际上的串。近似预定义串操作的其中一个方法是使用转换器,该转换器是具有输出的自动机。
    合理性可以形式上如下定义;对于串操作f是合理的近似,其中S′=(s′|s′=f(s),s∈S)。近似预定义串操作的其中一个方法是使用转换器,该转换器是带有输出的自动机。众所周知,转换器的映象也是一个CFG。其它方法在(∑,+)上是同态的,其中∑是字符集合并且+表示始终返回同样的产出由相应的预定义串操作返回的所有可能串的CFG的级联函数等。下面具有近似串操作substring(_,2)的产品规则是使用合理的近似从上面应用代码的示例部分获得的。
    Sa→xxa
    Sa→Saa
    Sr→substring(Sa,2)
    现在参考图4,说明性地绘出了转换器400。近似串操作substring(_,2)由转换器400定义并且对该串操作substring(_,2)是合理的近似。通过把所绘转换器400应用到包含以上产品规则的语法,可以获得下面的CFG,其表示集合{”a,””aa”,”aaa”,”aaaa”,Λ}。
    S′a→a
    S′a→S′aa
    Sr→S′a
    图4中的标号A表示任意字符,而A/ε表示任意一个字符到空串的转换,其意思是删除该字符。使用“合理的”转换器,结果产生的抽象值是从运行时操作可以产生的串的安全近似。这样,对于“′(_,2)”,该表达简单地删除了该串中的头两个字符,如标签A/ε(本质上删除字符A)所指示的。这就获得了新的CFG,它是通过把转换器应用到原来的语法上的结果。
    在对应用代码迭代地应用上述机制之后,就获得了表示该应用但没有串操作出现的产品规则集合。
    因此,串分析的成果就是包含所产生的产品规则的上下文无关语法。
    参考图5,现在将描述根据说明性实施例的用于实现静态串分析的一个说明性实施例。该描述提供了具有过程内部串分析的处理,并且然后解释了如何把它扩展到过程间的串分析。展示的实现细节假定串分析已经在静态分析框架上实现了。采用的静态分析框架可以是任何已知的框架并且可以包括,例如,用于分析的Watson库(WALA),该库可以从wala.sourceforge.net作为开源产品得到。
    为描述该过程内部的串分析,考虑下述JavaTM中的nappend方法:

    在块502中,把程序转换到静态单一赋值(SSA)的形式,其中对指令使用了伪标号。如下说明性地示出了转换的一个例子:

    图6中绘出了该程序的调用图。在上面程序中对指令使用的伪标号包括v=val,用于给变量或域v赋值val、v=obj.func(v1,…,vn),用于带参数v1,…,vn的方法调用、goto N,用于无条件跳转到标号N、goto N if v,用于通过条件v有条件地跳转到标号N。另外,该SSA转换引入了新的变量和通过phi(v1,v2)表示φ-函数,来生成对每个变量只有一个赋值的程序。SSA形式的该特点适于找出数据依赖。
    在块504中,同上述(参见上面图1)的方式一样,除了用于有条件的和无条件的跳转,SSA形式中的赋值转换成具有串操作506的产品规则集合。特别的,v=phi(v1,v2)转换成两个产品规则Sv→SV1和Sv→SV2,以便使它表示分别赋给v1和v2的两个串集合的联合。根据该转换,就能够从nappend方法的伪SSA形式中获得下面的产品规则。
    Sv1→SxSy
    Sr1&RightArrow;nappend(Sv1,Sy,n-1)]]>
    Sr2→Sx
    Sr→Sr1
    Sr→Sr2
    对于过程间的串分析,可以用由WALA构建的调用图信息来扩展过程内串分析,其中可以通过已知的方法灵活地控制WALA的上下文敏感性。SSA程序中的每一个变量用调用图节点注释出。所有的产品规则都是在删除从诸如的方法调用转换的产品规则之后组合的。介绍了表示参数与被调用方法的返回值以及调用方法的变量之间依赖性的产品规则。例如,如果如图6中所示的上下文非敏感调用图600出现,那么就引入下面的产品规则,其中每个非终结符的上角标表示相应的调用图节点。该产品规则是:
    Sx2&RightArrow;Sa1Sx2&RightArrow;Sv12Sy2&RightArrow;Sb1Sy2&RightArrow;Sy2Sr1&RightArrow;Sr2Sr12&RightArrow;Sr2]]>
    从程序中获得的具有串操作506的产品规则的完整集合包括:
    Sa1&RightArrow;aSx2&RightArrow;Sa1Sb1&RightArrow;bSy2&RightArrow;Sb1Sv12&RightArrow;Sx2Sy2Sr1&RightArrow;Sr2Sr22&RightArrow;Sx2Sx2&RightArrow;Sv12Sr2&RightArrow;Sr12Sy2&RightArrow;Sv12Sr2&RightArrow;Sr22Sr12&RightArrow;Sr2]]>
    可以执行可选的指针分析其帮助串分析器或解决器308来识别方法之间常量串是如何流到变量的,并且识别相同对象是否在潜在的不同方法中赋给了不同的变量,即使那些对象是动态创建的。在块510中,获得了下面的CFG,其预测在主方法中赋给变量r的可能的串,其中起始标志为
    Sr1&RightArrow;a|Sr1b]]>
    参考图7,框/流程图说明性地绘出了根据说明性实施例的用于信息流降级器的静态检测及分类的系统和方法。图7中所示的系统和方法可以在图3中的降级器检测引擎330中实现,例如,用于在应用代码中检测与降级器对应的代码部分。
    如图7中所示,在块702中,可能已经经过图3中的输入/输出接口320从分离设备提供的存储在存储器设备中的程序,例如,被静态分析程序变量转换来产生对指令集中的每一个变量的单一赋值。这包括通过对代码变量赋值采用伪标记来转换应用代码。
    例如,在块图704中,指令集转换为具有上述方式的串操作的产 品规则。在块图706中,正如本领域一般所知道的,在带有串操作的产品规则上可选地执行指针分析来提高精确度。
    在块708中,从产品规则中产生上下文无关语法。在块710中,通过对照一个或多个函数规范检查上下文无关语法来识别出信息流降级器函数。该一个或多个函数规范包含诸如正则表达式的串模式。该串模式通过分析工具或用户供给,并且它表示可以(或不可以)在安全性敏感的操作中使用的串集合。例如,串“<”和“>”被认为是不安全的串,因为XSS(跨站脚本执行)攻击通常使用这些字符。因此,正则表达式“.*[<>].*”(即,申明“<”和“>”串是不安全的)可以是用于信息流降级器的规范的一部分,该信息流降级器被用于避免XSS攻击。
    该一个或多个函数优选地在应用代码中包括安全性敏感函数。这可以包括基于降级器函数的意图检测和分类降级器函数。
    在块图712中,上下文无关语法优选地与信息流降级器的规范比较,使得如果语法满足规范,那么就可以认为输入正确地降级了。上下文无关语法和正则表达式规范之间的比较可以例如通过CFL可达性算法完成,如Thomas Reps在1998年8月在威斯康星大学的论文“Program Analysis via Graph Reachablity”中所描述的。
    例如,利用一个或多个函数规范来分类降级器函数,使其成为用于一个或多个安全漏洞的正确的降级器。假定存在多个串模式(正则表达式),其中每一个对应于诸如跨站脚本执行(XSS)和HTTP响应分裂(HRS)的安全漏洞。例如,当存在关于XSS和HRS的串模式时,就把所获得的上下文无关语法与那两个串模式进行比较。如果上下文无关语法与XSS模式的交集不为空,那么就检测到相应的函数作为对XSS正确的信息流降级器,其中交集可以通过例如上面提到的CFL可达性算法计算。同样,如果上下文无关语法与HRS模式的交集不为空,那么就检测到相应的函数作为对HRS正确的信息流降级器。应当指出的是,在这个例子中,函数可以检测为对XSS和HRS都正确的信息流降级器。当然,本发明不限于XSS和HRS,而 是可以用于任何已知或将来开发的安全漏洞。
    可以采用的另一种并且在本发明说明性实施例中使用的串分析使用降级器的一元二阶抽象来执行串分析。再次参考图3,在应用代码中以诸如上述方式的某种方式识别出了一个或多个降级器之后,降级器抽象引擎340被使用来建造降级器的抽象表示。也就是说,降级器抽象引擎340可以被应用到在应用代码中识别的每个降级器以便产生降级器的分离的抽象表示来为降级器建模。
    在一个说明性实施例中,降级器抽象引擎340可以在降级器中的串上实现一元二阶逻辑,其中降级器代码在一元二阶逻辑中表示为公式。应用到串的一元二阶逻辑的示例实现在Elgaard等人所写的“MONA1.x:New Techniques for WS1S and WS2S”中描述,该文献可以从www.brics.dk/mona/papers/mona1x-new-technique-ws1s-ws2s/article.pdf得到,该文献在此引入作为参考。
    使用该一元二阶逻辑,在降级器代码中不操作对降级器代码的输入的指令如果可能或者被忽略,或者以反映降级器结果上指令的影响的方式表示。例如,形式“if(input.contains(“xyz”)){...}”的测试通过断言在条件的主体中,输入中包含串“xyz”来表示。
    再次参考图3,使用由降级器抽象引擎340产生的抽象表示,降级器评估引擎350评估降级器在应用代码中处理到降级器代码的输入的方式,例如,评估消毒器操作来转换或删除/代替输入的可疑部分的方式或者检验器判断输入是否合法并且确定是否拒绝输入的方式。该评估包括对照规范来比较降级器对输入的处理,其中规范是诸如规定降级器应该如何操作的正式的安全准则集合。例如,安全准则引擎360可以提供预先确立的安全准则,为了避免用应用代码操作的任何安全问题,该准则阐述了要求降级器在其下操作的规则和条件集合。这些预先确立的安全准则可以通过安全人员定义并且在数据库中或与安全准则引擎360关联的其它数据结构中阐述。该安全准则引擎360可以提供一个或多个用户接口,安全人员或其他用户通过其可以在数据库或数据结构中定义和存储这种安全准则。
    例如,假定为降级器预先确立的安全准则是给降级器的输入必须或者被接受或者被拒绝(例如,诸如由验证器所做的),但不被降级器转变(例如,如消毒器所做的)。该安全准则偏向或有利于验证器多于消毒器。功能上,验证器和消毒器都可以同样正确地确保应用的安全,但是,消毒器可能会比较难地推理(例如,需要考虑由消毒器执行的替换操作的副作用)并且就用户期望而言更有问题的(例如,消毒器执行的改变可以使输入的某个逻辑方面失效)。
    考虑由降级器抽象引擎340产生的降级器的抽象表示,降级器评估引擎350的静态分析机制352解释了降级器对其输入执行的操作的效果并且确定是否是该输入被转变这种情况,例如,降级器实现了消毒器。如果是这样,并且安全准则规则准备就绪并且由指示给降级器的输入没有被转变的安全准则引擎360提供,那么降级器评估引擎350可以产生指示在被评估的降级器中出现了安全准则违犯的输出。该输出可以是发送到指定联系地址的通知消息、在客户端计算设备的输出设备上产生的输出,该输出设备是一个显示设备、打印机等或者类似的。例如,通知消息可以指示应用,违反的安全准则,以及检测到安全准则违犯的应用代码中的位置,即,什么降级器违反了安全准则。
    而且,降级器评估引擎350可以包括用于识别违犯以及检查与降级器评估引擎350相关联的知识库354来确定对修改降级器代码使降级器与确立的安全准则相符合的建议的逻辑。例如,如果确定降级器更改了输入来产生从降级器经过消毒的输出,并且上述安全准则准备就绪,那么降级器评估引擎350可以基于检测到的违犯以及可以使用静态分析机制提取的关于降级器代码结构的其它信息,检查知识库354,并且建议将降级器代码修改成在不改变输入的情况下用或者接受或者拒绝输入的代码部分替换降级器代码的改变该输入的消毒元素。
    在某些说明性实施例中,降级器评估引擎350还可以包含降级器打分逻辑356。降级器打分逻辑356操作来识别降级器从由安全准则 引擎360提供的确立的安全准则偏离的程度,并且量化该偏离程度来为降级器产生分数。例如,分数可以简单地是对多个被降级器代码所违犯的安全准则的计数、多个被违犯的安全准则的加权计数,其中权重与特定被违犯的安全准则相关联来因此指示安全准则的优先级,等等。
    例如,一旦基于其相对于已确立的安全准则的偏离以上述方式计算出来,降级器的分数可以与一个或多个确立的阀值比较来获得指示,根据该指示降级器被认为表示对应用而言为轻微的、中等的或重要的安全威胁?;诮导镀鞯桨踩布侗鸬恼飧龇掷?,可以执行各种处理。例如,可以简单地识别出表示轻微安全威胁的降级器并且给合适的用户发送通知来通知他们与降级器关联的潜在的安全问题。对表示中等及重要的安全威胁的降级器可以产生具有较高优先级的通知并且发送到一个或多个用户并且可以进一步包含关于对该降级器代码所建议的修改以使降级器符合已确立的安全准则的信息。
    在某些说明性实施例中,降级器评估引擎350可以基于降级器关于已确立的安全准则的评估自动地修改降级器代码,使得降级器处于符合安全准则的位置或者至少减轻降级器所带来的安全威胁。例如,在一个说明性实施例中,如果确定降级器是消毒器并且确定该降级器是重要的安全威胁,那么降级器评估引擎350可以自动地修改降级器代码把它变成验证器来因此减少安全威胁。然后该修改的代码可以提供给合适的用户使其之后可以在部署到计算设备之前被重新编译。
    这样,说明性实施例的机制不仅提供了用于在应用代码中识别降级器代码的机制,而且提供了用于抽象该降级器代码使得降级器过程可以根据已确立的安全准则进行评估的机制。以这种方式,就提供了用来确保降级器提供了由安全准则定义的关于应用的最小安全等级的自动化机制。说明性实施例的机制能够使用串分析以递归地捕捉具体操作语义并且得出降级器是否自动满足最小安全准则的结论的方式对降级器的操作建模。
    图8是概括根据一个说明性实施例的自动应用分析机制的示例操 作的流程图。如图8中所示,操作以收到要分析的应用代码开始(步骤810)。静态分析机制被应用到应用代码来在应用代码中识别降级器代码(步骤820)。对于在步骤820中识别的下一个降级器,产生降级器的抽象表示(步骤830)。然后根据已确立的安全准则使用降级器的抽象表示评估降级器过程(步骤840)?;诟闷拦?,做出关于是否存在任何检测到的安全准则违犯的确定(步骤850)。如果有违犯,那么就可选地,量化违犯的程度或者降级器过程与安全准则的偏差以便为降级器产生分数(步骤860)。然后该分数可以与一个或多个阀值进行比较来由此对降级器的安全准则违犯的严重性进行归类(步骤870)。此外,可选地,可以访问知识库来识别对安全准则违犯的推荐的解决方案使得降级器符合安全准则(步骤880)。
    基于违犯的检测,以及可选地,分数和/或从知识库获得的信息,可以创建和输出关于该安全准则违犯的通知消息(步骤890)。此后,做出关于应用代码中是否有其它降级器要处理的确定(步骤895)。如果有,操作返回到步骤830;否则操作终止。
    应当指出的是,虽然上述说明性实施例描述了用于在诸如Web应用的应用代码中识别降级器的一个机制,但是说明性实施例并不限于这一个机制。相反,在不背离本说明性实施例主旨和范围的情况下,可以使用用于在应用代码中定位与降级器函数相应的或执行降级器函数的代码部分的任何机制。而且,尽管说明性实施例被描述为应用到Web应用并且信息流与Web应用相关联,但是它们并不局限于此。相反,说明性实施例可以与在应用代码中实现降级器或与应用代码相关联的任何应用代码一起使用。
    再次参考图3,除了上述用于寻找降级器和并且根据已确立的安全准则评估它们的机制外,说明性实施例还提供了诸如降级器缺陷/不兼容检测引擎370的机制,用于检测降级器中的缺陷以及降级器对于它们想要?;さ南低车牟患嫒菸侍?,即使该安全降级器满足以上讨论的已确立的安全准则。也就是说,尽管前面描述的机制能够确定降级器是否在执行降级器想要执行的关于安全准则的安全操作类型,但 是下文中所描述的说明性实施例的进一步机制包括用于确保在特定环境中降级器的特定实现在正确地执行那些安全操作的逻辑,即,对于降级器的实现以及部署降级器的环境不存在缺陷或不兼容问题。
    此外,说明性实施例也可以处理有关降级器的超出与部署环境兼容性问题的正确性问题。也就是说,如果降级器代码相反地与部署环境兼容,但是降级器代码本身没有正确地工作,即,没有匹配所有的它应该确保与其相关联的系统的安全的非法模式,那么说明性实施例的匹配机制将会在降级器的操作中检测这些缺陷。这些被称作降级器未能正确地处理的“极端情况”。关于与部署环境的兼容性问题被称作“水平的”问题而关于降级器处理极端情况的问题被称作“垂直的”问题。
    说明性实施例提供了使用静态分析技术,用于自动地识别降级器是否不完整、不正确或者与后端软件/硬件,即其期望?;さ幕肪?,不兼容的机制。这是使用三个基本组件来完成的。第一个组件是串分析机制,它基于对降级器可能输入的串的规范计算如果降级器正确地操作其可能输出的串集合的安全近似。
    第二个组件是“非法模式”集合,它关于降级器的验证器或消毒器的正确性形成部分排序的集合。非法模式是串集合的紧凑表示法,例如,正则表达式或上下文无关语法),它不会被验证器/消毒器过程返回/接受。也就是说,非法模式是正则表达式e,使得为了使验证器V对于表达式e被认为是安全的,如果它与表达式e匹配,验证器V必须拒绝输入串,并且为了使消毒器S对于表达式e被认为是安全的,通过消毒器S返回的任何串必须与表达式e不匹配。
    为了说明非法模式是什么意思,考虑A和B两个模式,其中模式(A)是另一个模式(B)的严格子集。如果降级器的验证器对于模式B操作正确,那么就可以得出验证器总体上,即,对于模式A操作正确的结论。但是,如果验证器仅对于模式A操作正确,而对于模式B不正确,那么验证器在其操作中只部分地正确,因为在模式B中有串,而在模式A中没有,验证器可以返回/接受但是不安 全。例如,用于跨站脚本执行(XSS)攻击的可能的非法模式是例如一个模式,其断言串不包含“<”或“>”,即,包含“<”或“>”的串可能指示XSS攻击。更限制性的非法模式也会要求该串不包含子串“javascript:”。因此,非法模式集合表示在不违背后端软件/硬件系统安全性的情况下,不能被降级器的验证器/消毒器返回/接受的串集合。该部分排序,即,受限制的、更受限制的等等的非法串集合,提供了一种机制,其允许深入分析哪些极端情况没有被处理,并且因此,该分析可以用于指示应该如何补救或修改降级器,如下文所讨论的。
    第三个组件是降级器期望?;さ幕肪成舷挛牡墓娣?,即,降级器要操作的软件的,以及在某些情况下硬件的描述。例如,环境上下文可以规定降级器准备或者已经部署在其中的服务器的类型(例如,处理器的型号和数量,存储器的数量等),服务器上运行的数据库服务器软件,诸如微软(MS)结构化查询语言(SQL)服务器,DB2等。
    环境上下文信息还可以规定部署数据库应用的应用容器的类型,例如,Tomcat,JBoss,WebSphere等等,因为不同的容器根据请求的解析和处理会表现不同,其中可能规定所使用的不同降级器(例如,Tomcat从参数值中删除“\r\n”模式使这些值是安全的以防止HTTP响应分裂(HTTPRS)攻击,但是在WebSphere的情况下,不一定是这种情况)。
    再次参考图3,环境上下文390,即,上面提到的“第三个组件”,可以是用户通过经输入/输出接口320接收到一个或多个图形用户接口等的输入规定的。作为替代地,环境上下文390可以从由该环境所在系统维护的配置信息中自动地发现或者推断出来。例如,对于数据库系统,定义数据库系统类型的环境上下文规范390可以通过分析用于数据库系统的配置信息,检查数据库软件的部署等发现或推断出来。在诸如带有涉及处理跨站脚本执行(XSS)攻击等的降级器的其它实例中,可以使用HTML上下文信息。在这种情况下,可以 对流进降级器的数据执行静态数据流分析来确定哪一个HTML呈现语句是依赖降级器输出的数据流并且然后串分析可以在该信息呈现的点建立HTML上下文。这样的静态分析技术在12/825,293中描述。
    对特定降级器而言,由降级器匹配,即,识别为非法的非法模式集合的定义由用户提供或者否则的话从降级器代码的分析确定。也就是说,对各种不同的环境,降级器可以匹配不同的非法模式。例如,特定降级器匹配的特定非法模式可以由用户规定并且存储在合法/非法串模式数据库380中,或者否则的话与特定降级器关联。但是,在其它说明性实施例中,降级器代码可以通过降级器缺陷/不兼容检测引擎370或者其它工具(未示出)来分析以识别特定降级器寻找和匹配的特定模式,并且或者是对输入拒绝的指示(在验证器的情况下)或者是对输入修改的基?。ㄔ谙酒鞯那榭鱿拢?。
    还有,可以为各种类型的降级器在合法/非法串模式数据库380中存储多个非法模式集合,例如,针对XSS攻击,SQLi攻击等的降级器。非法模式集合可以包含用于多个相同类型的不同降级器以及用于多个不同的在其中可以实现这些降级器的环境的非法模式。例如,基于被评估的降级器类型,非法模式的特定集合可以因此被识别。例如,降级器缺陷/不兼容检测引擎370可以确定被分析的降级器类型并且从合法/非法串模式数据库380中检索相应的非法串模式集合。降级器类型可以从应用的上下文中,根据降级器应该禁止的易受攻击的信息流确定。例如,如果存在调停从XSS接收器到XSS源的信息流的降级器调用,那么说明性实施例将通过XSS规范(包括非法模式)验证那个调用?;诒坏饔梅椒ǖ那┟ɡ?,String->String用于消毒器而String->Boolean用于验证器),可以启发式地解决对于易受攻击的信息流中哪个调用是候选降级器调用的确定。
    例如,针对检测和处理SQL注入(SQLi)攻击的降级器可以与诸如如下所示的非法串模式集合相关联:
    “*(‘\\x22|\\#|%|=|;|\\+|[cC][hH][aA][rR]\\s*\\(s*\\d+\\s*\\).*”//SQL注入(使用#注释字符)
    “.*(‘|\\x22|--||%|=|;|\\+|[cC][hH][aA][rR]\\s*\\(||s*\\d+\\s*\\)).*”//SQL注入(使用--注释字符)
    “.*(‘|||x22|∧\*|\\*/|%|=|;|\\+|[cC][hH][aA][rR]\\s*\\(\\s*\\d+\\s*\\)).*”//SQL注入(使用/**/注释字符)
    这些示例非法串模式的结构如下。模式以.*开始(和结束)意味着该模式在降级器的输入串中寻找匹配(见下文)。然后该模式包含开始圆括号(来预示认为是非法模式的集合的开始。然后该模式包含由管道字符|分隔的非法模式列表。该模式用结束圆括号)关闭非法模式集合并且该模式以.*结束。
    例如,在上面定义的SQLi非法串模式中,存在想要被匹配的以下非法串集合:

    “(通过\\x22定义)
    注释字符。取决于使用的SQL语法,为#、--或/**/其中之一。
    =
    ;
    +
    char(\d+)这本质上是“char”SQL函数后面跟着一系列一个或多个数字。注意[Cc]的使用允许对单词“char”做大小写不敏感的匹配。这给出了匹配大小写敏感或大小写不敏感的能力。
    除了一个小但是重要的部分,这3个非法模式中的每一个都是一样的;其中小但是重要的部分是被匹配的注释字符的类型。在第一个模式中#单行注释分隔符被匹配,在第二个模式中--单行字符被匹配,以及在第三个/**/中多行注释符被匹配。每个模式的其它部分保持不变。
    不同的SQL语言使用了不同风格的注释。例如,Oracle数据库中用的PL/SQL以及微软数据库中用的T-SQL使用--单行和/**/多行注释,而MySQL把#单行注释加入到合法注释语法的列表中。
    以上阐述的非法模式中的每一个都与降级器可以在其中实现的不 同的环境相关联(例如,诸如T-SQL或PL/SQL的SQL语支)。当识别对应于SQLi攻击的输入串时,降级器可以匹配这些非法模式中的一个。本质上,如果在降级器中接收到输入串并且该输入串,或者该输入串的一部分与这些模式中对应的一个相匹配,那么降级器检测输入串作为潜在的威胁并且或者拒绝输入(验证器)或者修改输入串来删除或修改与非法串模式匹配的输入串的部分(消毒器)。
    降级器缺陷/不兼容检测引擎370使用环境上下文信息390来确定哪个串模式应该被特定的降级器匹配,即,对于特定环境的上下文,通过降级器的验证器/消毒器识别作为非法串模式。也就是说,可以使用环境上下文规范390来确定非法串模式集合中哪一个非法串模式应该在与环境上下文规范390对应的特定环境中被降级器的实现匹配。如下文所述,可以确定降级器是否实际上与它应该匹配的非法模式匹配并且如果不是,那么可以产生降级器与部署其的环境不兼容的指示。
    例如,对于MS SQL server,以SQL注入(SQLi)攻击为目标的降级器将对特定的输入集合产生特定的输出集合。由此,降级器缺陷/不兼容检测引擎370的串分析机制计算降级器可以返回/接受的串集合的安全近似,即,如果该降级器正确地工作并且与在其中实现降级器的环境相兼容,那么在给定输入串集合后,降级器有效输出的串集合。安全近似的意思是对降级器的分析计算返回的值的集合包含当程序具体运行时可能返回的返回值的集合。这意味着该分析具有单方面错误:它能把正确的降级器归为不正确的(由此遭受假阳性),但反之不成立。
    例如,如果降级器是消毒器,那么降级器接受串并且修改它使其可以被一个或多个后续的安全性敏感操作安全地使用并且因此,被修改的串是通过降级器返回的安全串。如果降级器是验证器,那么验证器返回布尔值指出该串是否有效的,这就是术语“接受”或“拒绝”串的含义。因此,利用验证器,可以通过降级器缺陷/不兼容检测引擎370计算出被降级器接受的串集合的安全近似。
    因此,如果在特定环境中实现的特定类型的降级器正确地工作并且与特定的环境相兼容的话,那么降级器缺陷/不兼容检测引擎370可以确定对输入串模式S,该降级器将产生特定的有效输出O。对感兴趣的每一个输入串模式S,以及降级器类型与部署环境的任何组合都可以这样做。对于降级器类型与环境的各种组合,结果产生的合法串模式集合可以存储在合法/非法串模式数据库380中。作为示例,假定降级器接受串S,并且-如果串最长为5-用5’$’(空格)字符序列填充串。降级器可以使用下面的近似用于返回值:S->S($)*。也就是说,返回串可以是输入串S其后跟有0个或多个$字符序列。这里描述了可以通过降级器返回的串的严格超集的串集合。
    使用降级器的类型、环境上下文规范390以及合法/非法串模式数据库380中的合法/非法串模式,降级器缺陷/不兼容检测引擎370可以确定特定降级器是否有缺陷或者要不然与它部署在其中或将要部署在其中的环境不兼容。然后降级器缺陷/不兼容检测引擎370生成关于降级器任何缺陷/不兼容的通知并且经I/O接口320发送到合适人员的计算设备上以便通知他们该缺陷/不兼容以及有必要修改该降级器来校正缺陷或不兼容。
    如上概述的,降级器的正确性通常不是绝对的判断而是依赖于降级器服务的上下文,即,降级器部署在其中或者想要部署在其中的环境,的相对判断。例如,可以把环境上下文规范390与验证和规范390相关联的特定降级器操作的请求一起提交给降级器缺陷/不兼容检测引擎370。例如,该环境上下文规范390可以规定降级器部署环境的特定的软件配置、硬件配置,等等?;诨肪成舷挛墓娣?90及要验证的降级器,降级器缺陷/不兼容检测引擎370可以确定降级器的类型以及环境的类型?;诮导镀骼嘈秃突肪车睦嘈?,可以从合法/非法串模式数据库380中检索到对应的合法和非法串模式集合。
    在一个说明性实施例中,不是把合法串模式集合存储在合法/非法串模式数据库380中,而是基于要提交给降级器的特定输入串和降级器类型以及环境类型可以动态地确定合法串模式集合。也就是说, 基于降级器类型和环境类型,降级器缺陷/不兼容检测引擎370可以确定合法/非法串模式数据库380中的什么非法串模式应该被降级器匹配。根据这个信息,如果降级器正确地工作并且与环境的类型相兼容,那么降级器缺陷/不兼容检测引擎370可以确定给定特定的输入串,特定类型环境中的特定类型降级器应该产生特定的安全或有效的输出。
    然后可以比较降级器的输出与合法串模式集合来确定是否存在不匹配,即,对于特定的输入串,输出串包含不在合法串模式集合中的串。如果是这样,那么可以做出关于在降级器输出中包含的串模式是否包含在非法串模式集合中的确定。根据以上所述,可以确定降级器在匹配的是哪些非法串模式并且然后可以确定被降级器匹配的非法串模式对降级器要部署在其中或者已经部署在其中的环境是否是正确的模式,即,降级器是否与部署环境相兼容或者不兼容。因为降级器代码通常包含许多条件分支和循环,很难精确地跟踪,所以不能简单地查看降级器代码来确定降级器在匹配的非法串模式。因此,说明性实施例提供了在不必要执行对降级器代码本身彻底的、复杂的以及易犯错误的分析的情况下,用来确定什么非法串模式被降级器匹配的机制。
    上面提到的比较,是通过计算正则表达式完成的,其中正则表达式(i)在消毒器的情况下,充当消毒器返回值的安全近似,或者(ii)在验证器的情况下,充当降级器接受的串集合的安全近似。然后,使用标准的用于在正则表达式之间进行比较的技术,分析根据降级器的准则规范对其分类。例如,如果降级器的近似是正则表达式R,并且对于DB2而言R是正则表达式的子集,但是对其他数据库服务器而言不是,那么该降级器对使用DB2的环境来说是正确的。然后关于部署环境的信息被用来确定是否存在兼容性问题,即,部署环境与该正则表达式对其有效的环境相匹配,例如,如果正则表达式对DB2是有效的并且部署环境是DB2,那么就不存在兼容性问题,但是如果部署环境是不同的环境,那么就存在兼容性问题。
    基于上述关于兼容性或不兼容的确定,可以给合适用户的计算设备发送通知指示该兼容性或者不兼容。例如,发起降级器分析的用户可以拥有经他们的计算设备返回给他们的分析的结果。包含在通知中的分析结果不仅可以包含降级器是否兼容或不兼容的指示,也可以确定适当的修改建议并且可以让用户参考关于问题的更多信息。该修改建议和其它信息可以存储在知识库(未示出)中,它是说明性实施例的应用分析机制300的部分或者与机制300相关联。例如,如果说明性实施例执行的分析确定某些极端情况没有被正确地处理,那么就关于该极端情况的修改咨询数据库。
    例如,考虑前面提到的例子中的SQLi攻击以及非法串模式的示例集合。利用说明性实施例的机制,基于环境上下文规范390(即,数据库服务器类型),说明性实施例的机制确定了哪些串模式应该被目标降级器匹配,即,上述非法串模式集合。降级器缺陷/不兼容检测引擎370执行串分析来计算目标降级器可以返回/接受的串模式集合的安全近似。串模式集合的安全近似与非法串模式集合比较来确定哪些非法串模式被该安全近似所匹配。然后,与匹配的非法串模式相关联的对应的部署环境与部署环境,或者想要部署的环境(如通过环境上下文规范390定义的)比较,使目标降级器确定目标降级器是否与环境上下文规范390中识别的环境相兼容。
    例如,如果在环境上下文规范390中规定的数据库服务器是微软的SQL server,并且第一个非法串模式,即,“.*(|\\x22|\\#|%|=|;|\\+|[cC][hH][aA][rR]\\s*\\(\\s*\\d+\\s*\\)).*”,被匹配,而不是第二个模式,即,“.*(‘|\\x22|--||%|=|;|\\+|[cC][hH][aA][rR]\\s*\\(\\s*\\d+\\s*\\)).*”;,它是对微软SQL server环境来说用于被降级器匹配的正确的非法串模式,然后降级器缺陷/不兼容检测引擎370识别指示降级器正在基于使用了不同类型的数据库服务器的假设下运行的不兼容问题。降级器缺陷/不兼容检测引擎370还可以确定用于校正所识别的不兼容的建议。该信息,同对用于解决该不兼容性问题的其它信息源的引用一样,在通 知中经一个或多个计算设备发送给合适的用户。
    除了识别降级器与降级器部署在其中的部署环境的不兼容问题,降级器缺陷/不兼容检测引擎370还可以检测降级器的有效性,其中降级器可能被确定为与它们所部署的环境相兼容并且没有缺陷。与部署环境相兼容并且没有缺陷的降级器的有效性检测可以与上述降级器不兼容性问题的识别一起或者分开地执行。也就是说,降级器不兼容问题的识别不需要作为降级器有效性检测的前任来执行。
    降级器的有效性可以通过识别非法串模式的各种强度级别来确定,其中如通过环境上下文规范390所规定的,降级器可以正确地在识别的部署环境中匹配非法串模式。非法串模式的强度可以是关于非法串模式降级器操作完成了多少的度量,其中强非法串模式可能是完成降级器操作的指示,而弱非法模式是部分地完成降级器操作的指示。各种完成的水平,或者强度可以这样被定义并且使用该说明性实施例的机制被识别。
    例如,与每种部署环境类型以及每种降级器类型相联系,合法/非法串模式数据库380可以存储可以被降级器匹配的多个非法串模式的集合,每一个非法串模式具有一个关联的强度值。例如,假定对特定的部署环境,例如MS SQL server,用于该部署环境的SQLi降级器可以匹配下面三个非法串模式中的任何一个:
    “.*(|\\22|\\#|%|=|;|\\+|[cC][hH][aA][rR]\\s*\\(\\s*\\d+\\s*\\)).*//强
    “.*(‘|\\x22|\\#|%|=|;|\\+).*”//较弱
    “.*(\\$|%|=|;|\\+).*//最弱
    降级器缺陷/不兼容检测引擎370可以确定目标降级器是否只输出满足第一个非法串模式需求的串。如果是,那么该降级器与部署环境不兼容并且也实现了对SQLi攻击的强实施。然而,如果降级器输出的串与上面第二个非法串模式相一致,但不与第一个非法串模式相一致的,即,降级器输出串包括在第一个非法串模式中而不在第二个非法串模式中的串模式,那么可以确定降级器的有效性相对地比它应该的要弱。降级器缺陷/不兼容检测引擎370可以在诸如确定目标降 级器是否是有缺陷/与部署环境不兼容之后产生的通知中,返回给用户关于降级器针对其?;ず蠖讼低车墓セ鞯慕导镀髑慷鹊闹甘?。降级器缺陷/不兼容检测引擎370还可以确定对在由降级器提供的?;ぶ屑觳獾降娜醯阃萍鼋饩龇桨?。例如,如果确定降级器只与第二个非法串模式匹配,那么该推荐可以是修改降级器来实现与第一个非法串模式匹配。而且,通过使降级器在更多的部署环境中正确地工作可以加强降级器,例如,如果降级器仅对一个部署环境正确地工作,那么应该扩展降级器本身来支持更多的部署环境,例如,更多的数据库服务器类型。
    因此,说明性实施例可以确定降级器是否有缺陷或者是否与其部署在其中或将要部署在其中的部署环境不兼容,并且还可以确定由与部署环境相兼容,或者甚至不兼容的降级器提供的?;さ那慷?。这些可以分开地或相互之间一起完成。例如,降级器对部署环境来说可能在多于一个方面是不正确的。例如,SQLi降级器可能与后端数据库服务器不兼容但是也可以被确定为仅与相对较弱的非法串模式符合。说明性实施例的机制可以沿两个“轴”,即,兼容性轴与强度轴,检测降级器的不正确性。
    图9是概括根据一个说明性实施例的用于确定降级器缺陷/不兼容性的示例操作的流程图。例如,图9中概括的操作可以通过,例如,图3中的应用分析机制300来实现。
    如图9中所示,操作以接收应用代码开始(步骤910)并且在应用代码中识别降级器代码(步骤920)。例如,这些操作可以通过,例如,图3中的降级器检测引擎330执行。剩下的操作可以通过,例如,图3中的降级器缺陷/不兼容检测引擎370执行。收到/确定用于识别的降级器代码的环境上下文规范(步骤930)。如上所述,环境上下文规范可以是用户规定的或者可以是通过检查识别的降级器代码部署在其中或想要部署在其中的部署环境确定的。
    在下文中,对识别的降级器代码中的下一个降级器,获得对于一个或多个输入串的集合的有效降级器输出串模式集合的安全近似(步 骤940)。该有效降级器输出串模式集合可以基于特定的输入串输入而动态地确定或者可以从为要评估的特定类型降级器存储合法(有效)降级器串模式的存储设备/系统中检索。用于被评估的特定降级器的非法串模式集合也从非法串模式存储设备/系统中检索(步骤950)。比较有效输出串模式的安全集合、非法串模式集合以及环境上下文规范(步骤960)。确定关于降级器与部署环境的兼容性以及由降级器提供的?;さ南喽郧慷鹊娜范ǎú街?70)?;诟萌范?,产生适当的通知输出给被授权的用户(步骤980)。然后,作出关于是否有更多要被评估的降级器的确定(步骤990)。如果有,操作返回步骤940;否则操作终止。
    因而,说明性实施例提供了用于在应用代码中识别降级器以及对于降级器评估它们是否有缺陷或者是否与降级器部署在其中或将要部署在其中的部署环境不兼容的机制。而且,说明性实施例提供了用于确定由降级器提供的?;さ南喽郧慷鹊幕???梢圆庑┢拦澜峁耐ㄖ?,该通知可以可选地包含关于如何使降级器与部署环境相兼容和/或如何提高由降级器提供的?;さ那慷鹊慕ㄒ?。作为结果,通知用户降级器不兼容以及如何校正该不兼容性以确保降级器对于其部署环境的最优实现。
    如以上所指出的,应当认识到,说明性实施例可以采取完全硬件实施例、完全软件实施例或者结合硬件与软件元素的实施例的形式。在一种例子实施例中,说明性实施例的机制是在软件或程序代码中实现的,包括但不限于固件、驻留软件、微代码等。
    适于存储和/或执行程序代码的数据处理系统将包括直接或者通过系统总线间接耦合到存储器元件的至少一个处理器。存储器元件可以包括在程序代码真正执行过程中所采用的本地存储器、大容量储存器和高速缓存存储器,其中高速缓存存储器提供至少一些程序代码的临时存储,以便减少在执行过程中必须从大容量储存器检索代码的次数。
    输入/输出或者I/O设备(包括但不限于键盘、显示器、定点设 备等)可以直接地或者通过中间I/O控制器耦合到系统。网络适配器也可以耦合到系统,使数据处理系统能够通过中间的专用或公共网络变得耦合到其它数据处理系统或者远端打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅仅是当前可以获得的网络适配器的几种类型。
    本发明的描述是为了说明和描述的目的而给出的,而不是详尽的或者要把本发明限定到所公开的形式。对本领域的普通技术人员来说,许多修改与变体都是显而易见的。实施例的选择与描述是为了最好地解释本发明的原理、实践应用,并且使本领域的其他普通技术人员能够理解本发明具有适于预期特定用途的各种修改的各种实施例。

    关于本文
    本文标题:信息流降级器中缺陷和不兼容问题的自动检测.pdf
    链接地址://www.4mum.com.cn/p-6147301.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 排三组选投资 500元 倍投方案 稳赚 上海快三怎样能稳赚 双色球中奖秘籍100% 五分彩骗局套路 pk10在线精准计划包赢 百盈金团是骗局吗 内蒙古时时计划软件下载 4887王中王鉄算盘开奖结果有 北京pk10玩法技巧攻略 黄金pk10全能计划软件下载 中国教育双色球直播 3d组六最大遗漏统计 有个买彩票稳赚的方法 pk10官网开奖直播现场 北京塞车走势图大全