首页> 中国专利> 标识与软件产品相关联的隐含假设

标识与软件产品相关联的隐含假设

摘要

本文描述了一种用于标识与SDK及其伴随的文档资料(如开发者指南)相关联的隐含假设的框架。隐含假设是在文档资料中未被明确表述但在构建应用时在辅助应用开发者方面有用的信息。该框架还描述了一种基于标识出的隐含假设标识一个或多个弱点模式的系统性方法。应用开发者可对正被开发的应用运行测试,以确保它不具有匹配某一弱点模式的任何缺陷。

著录项

  • 公开/公告号CN105264491A

    专利类型发明专利

  • 公开/公告日2016-01-20

    原文格式PDF

  • 申请/专利权人 微软技术许可有限责任公司;

    申请/专利号CN201480012437.5

  • 申请日2014-03-04

  • 分类号G06F9/44(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人陈斌

  • 地址 美国华盛顿州

  • 入库时间 2023-12-18 13:43:06

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-07-02

    授权

    授权

  • 2016-02-17

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20140304

    实质审查的生效

  • 2016-01-20

    公开

    公开

说明书

背景

应用开发者可构建依赖于软件开发工具包(SDK)的应用。应用开发者在 构建应用时查阅开发者指南(本文简称“指南”)。该指南提供了关于对SDK的 推荐用法的信息。该指南通常以特设的方式被产生,例如基于对应用开发者的 信息需求的非正式评价。

应用开发者可在他或她无法遵循指南中提供的指示时产生有错误的应用。 这是可以预料的。在其他情况中,开发者可能精确地遵循指南的指示,却仍然 产生有错误的应用。

概述

本文描述了一种包括分析模块和测试套件产生模块的软件开发环境。分析 模块分析软件产品(如SDK)连同描述该软件产品的推荐用法的文档资料(如 开发者指南)。该分析可被用于标识与该软件产品和该文档资料相关联的至少 一个隐含假设。隐含假设对应于这样的信息:(a)将在构建满足声称的目标的 应用时对应用开发者有用;以及(b)在文档资料中未被明确表述。在一个情 况中,声称的目标是与执行认证和/或授权操作的软件产品相关联的与安全性有 关的目标。

测试套件产生模块产生由一个或多个弱点模式组成的测试套件。每个弱点 模式对应于由所述分析模块标识出的一个隐含假设。应用开发者可对照每个弱 点模式来测试他的或她的应用。这将揭露出应用是否遭受到与该弱点模式相关 联的弱点。应用开发者然后可用合适的方式修改该应用来去除该弱点(如果认 为合适)。

总而言之,本文所述的功能提供了一种标识开发者指南和/或SDK的实现 中所缺少的有用信息的合理且结构化的方式。这促进了设计过程以及产生了更 为稳健的应用。

上面的方法可以显现在各种类型的系统、组件,方法、计算机可读存储介 质、数据结构、制品等等中。

提供本概述以便以简化形式介绍一些概念;这些概念将在以下的详细描述 中进一步描述。本概述并不旨在标识所要求保护主题的关键特征或必要特征, 也不旨在用于限制所要求保护主题的范围。

附图简述

图1示出软件产品(如SDK)和可伴随该软件产品的文档资料(如开发者 指南)。

图2示出应用可在其中被运行的说明性环境。这些应用中的至少一些可依 赖于远程服务器提供的服务。

图3提供了可能由于应用开发者缺乏关于与SDK相关联的隐含假设的知 识而引起的弱点的示例。

图4示出用于分析SDK及其伴随的指南的SDK开发环境。该图还示出用 于在开发应用的过程中使用SDK开发环境提供的结果的应用开发环境。

图5是提供图4中所描绘的功能的概览的过程。

图6示出了分析模块的一个实现。该分析模块是图4的SDK开发环境的 组件。

图7示出SDK可在其中被使用的说明性环境。(图6的)分析模块对可 将图7中所示的实体考虑在内的模型起作用。

图8以高级形式示出图6的分析模块的一个实现。

图9是描述图6的分析模块的操作的一个方式的过程。

图10是描述图6的分析模块的操作的进一步说明性细节的过程。

图11是描述图6的分析模块的操作的进一步说明性细节的过程。

图12示出由图4的应用开发环境提供的测试工具的一个实现。

图13是描述图4的应用开发环境的操作的一个方式的过程。

图14示出了可以被用来实现前面的附图中所示出的特征的任何方面的说 明性计算功能。

贯穿本公开和各附图,相同的编号被用于引用相同的组件和特征。100系 列的标号指的是最初在图1中所找到的特征,200系列的标号指的是最初在图 2中找到的特征,300系列的标号指的是最初在图3中找到的特征,依此类推。

详细描述

本公开是按如下方式来组织的。章节A提供了用于标识和作用于与软件开 发工具包(SDK)相关联的隐含假设的功能的概览。所述功能包括SDK开发环 境和应用开发环境。章节B提供了关于SDK开发环境的附加细节。章节C提 供了关于应用开发环境的附加细节。章节D描述了可被用来实现前述各章节所 描述的特征的任何方面的说明性计算功能。

一些附图在一个或多个物理组件(被不同地称为组件、功能、模块、特征、 元件、机制等)的上下文中描述概念。实际实现可以任何方式组织附图中所示 的物理组件。例如,在一个情况中,在附图中所示的组件与实际物理机制之间 可能存在一对一的对应关系。替代地或附加地,附图中所例示出的任何单个组 件都可以通过多个物理机制来实现。替代地或附加地,附图中的任何两个或更 多单独的组件可反映由单一实际物理机制所执行的不同功能。

其他附图以流程图形式描述了概念。以此形式,某些操作被描述为构成以 某一顺序执行的不同的框。这些实现是说明性的而非限制性的。此处描述的某 些框可被分组在一起并在单个操作中被执行,某些框可被分成多个组件框,并 且某些框可以按与此处所例示出的不同的次序来被执行(包括执行这些框的并 行方式)。

各种组件和流程框可由任何物理和有形机制以任何方式来实现,例如通过 运行和/或存储任何种类的软件指令的物理机制、通过硬件组件(如芯片实现的 逻辑功能)等、和/或它们的任何组合。进而要描述的图14提供了关于附图中 示出的组件的一个说明性物理实现的附加细节。

至于术语,短语“被配置成”包含任何种类的物理和有形功能可以被构造来 执行所标识的操作的任何方式。术语“逻辑”包含用于执行某一任务的任何物理 和有形功能。例如,流程图中例示出的每一个操作都对应于用于执行该操作的 一逻辑组件。在由计算系统实现时,逻辑组件表示作为计算系统的物理部分的、 不管用何种方式实现的电子组件。

权利要求中的短语“用于…的装置”(如果被使用)旨在援引35U.S.C.§112 第六段的规定。除了本特定短语之外,没有其他语言旨在援引该法条的该部分 的规定。

下列的阐述可以将一个或多个特征标识为“可任选的”。这种类型的陈述 不应该被解读为可以被视为可任选的特征的穷尽指示;也就是说,其他特征也 可以被视为可任选的,虽然在文本中没有明确地标识出。最后,术语“示例性” 或“说明性”指的是可能的许多实现中的一个实现。

A.概览

图1提供了软件产品102的高级描绘。软件产品102可对应于任何机器可 执行的内容,诸如以任一语言或多种语言(包括标记语言)的组合、参数、设 置等表达的计算机指令。此外,软件产品102可以任何方式来组织其内容。例 如,软件产品102可将其指令组织成一个或多个模块。在一些情况中,软件产 品102可表示软件开发工具包(SDK)。为了便于阐述,本说明将在下文将软 件产品102称为SDK。

应用开发者可构建以任何方式依赖于SDK的应用。例如,但非限制,应 用可使用SDK来提供具有任何性质的一个或多个功能。在一更具体的情况中, 应用可使用SDK来与提供一个或多个功能的一独立系统交互。在该非限制性 情形中,SDK可对应于(例如)一个或多个应用编程接口(API)。

应用开发者可接收伴有文档资料104的SDK,文档资料在本文中称为开发 者指南(或为了简洁起见简称为“指南”)。指南提供了辅助应用开发者使用SDK 的信息。例如,指南可包括以自然语言表达的解释SDK所执行的操作的指示, 以及应用开发者可将SDK集成于正被开发的应用的方式。替代地或另外地, 指南可包括解释SDK的操作和用法的代码示例。在一个情况中,产生SDK的 实体(本文中称为SDK开发者)也产生指南。SDK开发者可以任一形式或多 种形式(诸如印刷材料、电子内容等)的组合来表达该指南。

指南可被概念化成包含明确表述的信息106。进一步,SDK和指南可与零 个、一个或多个隐含假设108相关联。如名字所暗示的那样,明确表述的信息 106提供了表面上清晰且明确的指示。相反,每个隐含假设对应于这样的信息: (a)在指南中未被明确表述;以及(b)对应用开发者正确使用SDK来说有用 (或必要)。在一些情况中,指南不会给予应用开发者关于隐含假设108的存 在的清晰的表述或指示。这可能造成许多应用开发者“漏掉”隐含假设。在其他 情况中,熟练的应用开发者可能能够基于指南中提供的信息以及他的或她的先 前经验和知识来推断出隐含假设。但是,无法期待所有应用开发者都将作出这 些种类的复杂推断。

更正式地说,隐含假设并非只是任何缺失的或隐藏的信息,而是应用开发 者所依赖来实现一个或多个目标的信息。某一声称的目的可能必须产生具有某 些特性的某种应用。例如,应用开发者可能希望使用SDK来执行认证操作和/ 或授权操作。在此,应用开发者将希望获得隐含假设的知识以便产生安全应用。 否则,所产生的应用可能会受到来自恶意实体的攻击(下文中更详细地描述)。

指南中隐含假设108的存在(如果有的话)可随着一个或多个因素而发生。 例如,SDK开发者可能完全意图将某些细节放入指南中,但可能忘记这样做。 替代地或另外地,SDK开发者可能对SDK的目标受众判断错误,导致未能将 足够的细节放入指南中,和/或未能以适合于目标受众的形式来表达该细节。替 代地或另外地,SDK开发者可能没有充分将应用开发者意图在其中使用应用的 上下文设置考虑在内。如下文将详细描述的,上下文设置引起大量问题,这些 问题影响使用SDK构造的应用的完整性。更一般地来说,SDK开发者可能未 能产生足够详细的指南,因为他或她依赖于一种用于开发指南的非正式且特设 的方式。

无论什么原因,未能明确阐明隐含假设108的指南不是好的东西;它妨碍 了依赖该指南来构建他的或她的应用的应用开发者,且可能导致产生有错误的 应用。就SDK而言,该问题尤其有害,因为许多应用是基于SDK构造的,而 并非仅仅单个应用。

为了解决该问题,本文描述了一种用于确定SDK和指南是否与任何隐含 假设108相关联的框架。该框架还结合了用于应对任何检测出的隐含假设108 的存在的各种工具和手段。这些工具和手段的目的是:(a)消除或减少隐含假 设108的存在;和/或(b)检测应用中随着隐含假设108而发生的弱点的存在。

本章节提供了该框架的概览,而后面的章节提供了该框架的个体部件的附 加细节。

首先,图2阐明了具有不同实体的环境202。这些实体在此处提出的运行 的说明性示例中起作用;在该示例中,所考虑的应用使用SDK来执行认证操 作和/或授权操作。在认证操作中,该应用建立用户或其他实体的身份。在授权 操作中,该应用被授予代表用户或其他实体的许可。许可可由ID提供者(下 文描述)来授予。

图2中所示的实体使用通信机制204(例如广域网(诸如因特网))而耦 合在一起。实体包括代表性的客户机设备206,以及一个或多个其他客户机设 备208。每个客户机设备可以任何方式来被构造,诸如个人计算机、膝上型计 算机、游戏控制台设备、机顶盒设备、平板型计算机、智能电话、电子媒体消 费设备等等。实体还包括代表性的服务器210,以及一个或多个其他服务器212。 每个服务器可以任何方式来被构造,例如通过任选地结合一个或多个数据存储 的服务器类型的计算机。实体还包括标识(ID)提供者214。ID提供者214向 应用提供认证和/或授权相关服务。ID提供者214可以任何方式来被实现,例 如通过一个或多个服务器,连同一个或多个数据存储。

每个客户机设备可存储一个或多个应用。例如,代表性的客户机设备206 存储许多应用216。这些应用216中的每一个可使用客户机设备206提供的客 户机运行时218来执行其功能。例如,客户机运行时218可对应于超文本标记 语言(HTML)渲染器功能以及JavaScript引擎。

每个服务器可主控一个或多个服务。例如,服务器210主控许多服务220。 这些服务220中的每一个可使用服务器运行时222执行其功能。例如,服务器 运行时222可对应于PHP功能或ASP.NET功能。

运行在任何客户机设备上的任何应用可依赖于运行在任何服务器上的服 务所提供的功能。因此,与该应用相关联的功能可在客户机设备与相关联的服 务器之间拆分。仅引用一个示例,某一应用可依赖于远程服务来提供计算上太 密集而不能在客户机上执行的图像分析功能。这些种类的应用在此被称为依赖 服务的应用。在其他情况中,运行在某一客户机设备上的一些应用可能不依赖 于由任何远程服务器提供的任何服务。

环境202中的至少一些应用可依赖于一个或多个SDK。例如,运行在客户 机设备206上的某一应用可依赖于客户机SDK224。进一步假设该应用还依赖 于服务器210所提供的某一服务。该服务继而可依赖于服务SDK226来执行其 操作。服务SDK226可被视为客户机SDK224的服务器侧对应物。

在此处所提出的运行的示例中,至少一个应用依赖于SDK功能来与ID提 供者214交互。也就是说,应用与ID提供者214交互以认证用户或其他实体, 和/或获得授权来执行某一特定任务。这种应用也可以上述方式与一个或多个远 程服务交互。或者该应用可不与任何远程服务交互。

应用开发者可以上述方式产生图1中所示出的任何应用,例如通过参考指 南。如果SDK和指南遭受一个或多个隐含假设,则开发者可能产生具有不合 标准的性能的应用。如上所述,在认证/授权上下文中,不合标准的性能可能使 得应用暴露于一个或多个恶意实体的攻击。

为了举例说明以上一点,考虑图3中示出的情形。在此,受害人的客户机 设备302包括恶意应用(“坏应用”)304。在第一操作(1)中,应用304可通 过发送登陆请求与ID提供者306交互。凭借该请求,应用304向ID提供者306 请求令牌,该令牌将授予应用304对访问某些信息的有限授权。具体来说,假 设令牌授予应用304查看与某一个人(诸如受害人她自己)相关联的用户简档 的权利。并进一步假设受害人先前已授权ID提供者306将该限制信息提供给 任何接收方。作为响应,在操作(2)中,ID提供者306将所请求的令牌返回 给应用304。

接着,在操作(3)中,假设应用304将该令牌发送给由远程服务器310 实现的服务308。进一步假设应用304试图通过断言或暗示正在发送该令牌的 应用304是与该令牌所标识的实体相同的实体(这并非为真)来欺骗服务308。 在操作(4)中,服务308可使用该令牌来要求ID提供者306发送与该令牌所 标识的实体相关联的基本信息。在操作(5)中,ID提供者306提供该基本信 息。在操作(6)中,服务308注意到由该基本信息所标识的实体是受害人, 并不正确地假设令牌的发送者就是该受害人。作为该错误关联的结果,恶意应 用304可实现与服务308交互的能力,就好像它就是受害人他自己或她自己。 实际上,令牌旨在仅授予应用304有限授权来查看某些信息,而不建立任何实 体的身份。

上述问题可随着拙劣构造的应用而发生,而拙劣构造的应用继而可能是 SDK的指南中的一个或多个隐藏的假设的结果。在该情况中隐藏的假设可能是 这样一种规定,即图3中所示的操作要由单个实体而非以图3中所示的方式由 两个或更多个实体来执行。

更一般地,用于依赖服务的应用的SDK可尤其容易发生隐含假设。这是 因为对于SDK的开发者来说可能难以将某一依赖服务的应用的执行时所涉及 的所有“执行者”考虑在内。执行者包括但不限于运行在客户机设备和服务器两 者上的应用功能、运行在客户机设备和服务器两者上的SDK功能、运行在客 户机设备和服务器两者上的运行时功能等。例如,SDK开发者可将他的或她的 注意力聚焦在SDK功能本身的完整性上,但是底层的运行时系统(一个或多 个)还可能影响基于该SDK正被构建的应用的安全性。

图4示出包括用于分析SDK及其伴随的文档资料的SDK开发环境的框架 402。框架402还示出应用开发环境406,用于充分利用SDK开发环境404提 供的结果。

SDK开发环境404提供可被存储在数据存储408中的SDK以及可被存储 在数据存储410中的指南。SDK开发环境404还可标识与SDK在其中预期被 使用的目标环境有关的其他信息,下文将描述。分析模块412可分析SDK以 及指南来提供输出结果。输出结果可被用于确定是否存在与SDK(以及指南) 相关联的任何隐含假设。如将在下文中更详细描述的,分析模块412可通过执 行对一模型的静态分析来操作。该模型代表SDK以及SDK在其中预期被使用 的目标环境。静态分析继而通过确定与该模型相关联的各种断言是否被违反来 操作。

响应于标识出的隐含假设,SDK开发者可能决定修改SDK。如果成功, 这将具有消除与标识出的隐含假设相关联的弱点,以及从而消除隐含假设本身 的存在的效果。替代地或另外地,指南产生者(可能与SDK开发者是同一人) 可能决定修改指南。这将具有提供与隐含假设有关的明确指示,从而去除隐含 假设的效果。

替代地或另外的,SDK开发者可使用测试套件产生模块414来产生测试套 件。测试套件包括一个或多个弱点模式。每个弱点模式与分析模块412所标识 的某一隐含假设相关联。更为具体地,一弱点模式可表示某一假设的否定表达。 例如,一隐藏假设可指示出某一安全应用的产生取决于操作X、Y和Z由单个 实体执行。相应的弱点模式可提供描述这些操作没有被同一实体执行的情形的 信息。弱点模式还可指定当一隐藏假设被违反时将产生的具有任何性质的外部 可观察到的证据。

数据存储416可存储最终SDK、最终指南、以及测试套件。这包括信息包。 发布模块418可使得该包的任何部分以任何方式对应用开发者可用。例如,发 布模块418可将该包张贴到某一网页。应用开发者可访问该页面来选择并下载 该包的任一部分。在一个情形中,预期应用开发者将希望下载整个包。

现在参考应用开发环境406,应用开发者可使用一个或多个应用工具420 来产生应用。这样做时,应用开发者可依赖于指南中提供的信息。数据存储422 可存储该应用。

此外,应用开发者可任选地使用测试工具424来测试该应用。测试工具424 确定已被产生的该应用是否具有匹配测试套件所标识的弱点模式的任何弱点。 如果是,则应用开发者可选择修改该应用并重复该测试。应用开发者可重复这 些操作直到他或她产生了没有“错误”的应用。

图5是总结图4中所描绘的功能的过程502。在框504中,SDK开发者开 发SDK。在框506中,指南产生者撰写指南。在框508中,SDK开发者分析 SDK以及指南以确定是否存在与SDK(以及指南)相关联的任何隐含假设。在 框510中,SDK开发者可基于标识出的隐含假设生成测试套件。在框510中, SDK开发者可发布SDK、指南以及测试套件。

在框514中,应用开发者可接收SDK、指南以及测试套件。在框516中, 应用开发者可基于指南中提供的信息,使用SDK来产生应用。在框518中, 应用开发者可任选地使用测试套件来测试已被产生的应用。

B.说明性SDK开发环境

图6示出了图4中介绍的分析模块412的一个实现。分析模块412可被用 于分析任何种类的SDK。但是为了使得阐述更具体,假设分析模块412执行对 提供认证和/或授权功能的SDK的分析。在该上下文中,分析模块412力图确 定某一应用(是使用SDK和指南构建的)是否可能向一恶意实体暴露一个或 多个安全敏感(SS)项目。不作限制,SS项目可对应于秘密,诸如访问令牌、 协议定义的密码、刷新令牌、应用秘密、会话ID等等。SS项目还可对应于由 (图2的)ID提供者214提供的经签名的数据,诸如经签名的消息、认证令牌 等。

进一步,分析模块412通过检查客户机设备与服务器之间的个体会话(而 不是用户与客户机设备或用户与服务之间的关联性)来执行其安全性分析。也 就是说,客户机设备与服务器之间的认证/授权的最终结果是要知道该会话代表 谁以及该会话被允许做什么。该确定不会影响同一客户机设备与服务器之间的 任何其他会话。

分析模块412对一模型602起作用。模型602表示与SDK和应用(该应 用使用正被考虑的SDK)被预期要被部署于其中的上下文有关的信息。分析模 块412还包括用于符号化地调查模型602的静态分析工具604。这产生输出结 果,该输出结果继而可指示出存在零个、一个或多个隐含假设。

模型602通过在应用(该应用使用SDK)被部署于其预期的目标环境中时 将可在与应用交互中起作用的不同执行者考虑在内来表达应用被部署于其中 的上下文。图7示出了一个这样的说明性目标环境702。环境702是从可能遭 受来自其他实体的攻击的某一客户机设备的角度来构造的。该客户机设备在此 被称为客户机受害人设备704。被标识为受害人的某个人与该设备交互。客户 机受害人设备704运行非恶意客户机应用(好应用C)706,该应用被假设为要 根据指南来被构造且被所述受害人蓄意安装。在一个情况中,该非恶意客户机 应用(好应用C)706依赖于客户机SDK708以及客户机运行时710来执行其 功能。

该非恶意客户机应用(好应用C)706还依赖于由说明性的服务器714提 供的对应的非恶意服务应用(好应用S)712。该非恶意服务应用(好应用S) 继而依赖于服务SDK716和服务器运行时718来执行其功能。最终,客户机 SDK708和服务SDK716可代表该非恶意客户机应用(好应用C)706与ID提 供者功能720交互,但该非恶意客户机应用(好应用C)706不直接与ID提供 者功能720交互。

环境702还可表示一个或多个攻击实体(在此也被称为恶意实体),攻击 实体向受害人呈现出潜在威胁。例如,客户机受害人设备704可包括至少一个 恶意客户机应用(坏应用C)722,该应用具有未知来源与构造且因此被认为是 潜在恶意的。如上所述,非恶意客户机应用(好应用C)706被假设为是根据指 南中提供的指示被构造的。相反,恶意客户机应用(坏应用C)722可以任意方 式而不参考指南来被产生。然而,可预期恶意客户机应用(坏应用C)722符合 客户机运行时710所施加的任何约束。

环境702还可包括被部署在除了客户机受害人设备704之外的某一客户机 设备上的单独攻击者功能724。更为具体地,该单独攻击者功能724可总地表 示其他客户机设备连同该客户机设备与之交互的任何服务。

图7中示出的某些模块的构造在SDK正被分析时是已知的。这些已被构 造的模块被称为具体模块,且包括客户机SDK708、服务SDK716、客户机运 行时710、服务器运行时718、以及ID提供者功能720。更为具体地,客户机 运行时710、服务器运行时718以及ID提供者功能720是复杂的;因此尽管这 些模块是具体的,与这些模块相关联的功能可能不被SDK开发者完全知晓。 相反,客户机SDK708和服务SDK716通常是公开可获得的相对小的程序; 因此与这些模块相关联的功能可被认为是被SDK开发者完全知晓的。

剩余模块被认为是抽象的,因为它们的构成还未被确定。这些模块包括非 恶意客户机应用(好应用C)706、非恶意服务器应用(好应用S)、恶意客户 机应用(坏应用C)722、以及单独攻击者功能724。例如,在SDK被分析时, SDK开发者没有关于应用开发者将基于该SDK构建的应用的知识。并且在该 SDK被分析时,SDK开发者不具有关于什么恶意实体可能对非恶意客户机应用 构成威胁的知识,即使这些恶意实体可能早已实际存在。

现在返回图6,模型602可表达关于图7中所示的组件、或其子集、或其 任何变型的下列信息。

SDK的功能与底层系统环境。模型602可表示客户机SDK708和服务SDK 716执行的各种功能。此外,模型602可表示与应用将在其中被执行的底层系 统环境相关联的各种功能。系统环境包括客户机受害人设备704上所采用的客 户机运行时710以及服务器714所采用的服务器运行时718。底层系统环境还 可包含ID提供者功能720的某些方面。

如上所述,客户机SDK708和服务SDK716通常是小程序。因此,模型 602可穷举地表达与这些模块相关联的所有功能。另一方面,底层系统环境通 常是复杂的且包含各种各样的功能。模型602可因此选择性地捕捉系统环境中 与分析的目的有关的那些方面。在本章节的运行示例中,分析的目标与认证和 /或授权有关。模型602将因此聚焦于系统环境中与使用SDK的应用的安全性 有关系的那些方面。

例如,模型602可捕捉ID功能720与非恶意客户机应用(好应用C)706 交互的方式,如由各种应用设置所控制。例如,某一ID提供者可提供允许应 用开发者输入各种应用设置(诸如应用ID、应用秘密、服务网站域、返回URL 等)的接口。模型602可捕捉这些设置影响ID提供者功能720的行为的方式。 作为另一示例,模型602可捕捉客户机运行时710的同源策略。同源策略定义 了客户机运行时710区分源自不同源的内容的方式。作为另一示例,模型602 可捕捉服务器运行时718管理会话的方式。这些特征是通过示例而非限制来被 引用的;在其他实现中,模型602可表达底层系统环境的其他方面。

开发指南。如上所述,非恶意应用模块(好应用C706和好应用S712)是 抽象的模块,因为它们具有还未被确定的构造。因此,模型602不能以与具体 模块相同的方式来表示这些组件。然而,模型602可表达指南所指定的某些约 束,在它们影响非恶意客户机应用(好应用C)706和非恶意服务应用(好应用 S)712的范围内。也就是说,指南支配这些模块能调用哪些功能以及它们在作 出调用时可传递什么参数。指南进一步表达功能调用的预期顺序以及它们的自 变量值与返回值相关的方式。不遵循指南中的该次序以及自变量规则的调用被 认为是非符合调用。在某种意义上,指南构成了一构架,所有符合的应用都被 预期结合了该构架;应用可向该构架添加功能,但是它不能修改该构架。

攻击实体。恶意客户机应用(坏应用C)722和单独攻击者功能724也是 抽象的,意味着它们的构造在分析时是未知的。进一步,这些实体未被预期符 合指南的任一方面。但是模型602可指示出恶意实体中的任一个在作为功能调 用的结果接收到安全敏感(SS)项目时将把该SS项目存储在知识池中。因此, 知识池将反映这些实体所获取的SS项目的历史。模型602进一步指定这些恶 意实体中的任一个能够从知识池检索任一SS项目以及以(可适用于恶意实体 的任何环境特定约束)所允许的任何方式来使用该SS项目。

安全性断言。模型602还可定义构成对正被寻求的任何目标的违反的环境。 在运行的安全性相关的示例中,模型602可表达构成安全性违反的事件。

一个违反与认证有关。假设某一知识k要被恶意客户机应用(坏应用C) 722或单独攻击者功能724添加到知识池。进一步假设k足以使非恶意服务应 用(好应用S)712的认证逻辑相信知识持有者是受害人。这意味着恶意客户机 应用(坏应用C)722或单独攻击者功能724可作为受害人来认证,这就构成了 认证违反。

另一违反与授权有关。在一个情况中,假设k代表与受害人相关联的某一 SS项目,诸如受害人的访问令牌、会话ID(用于好应用C与好应用S之间的会 话)等。这意味着某一攻击实体已经获得了执行该会话被授权执行的任何操作 的许可。在其他情况中,该攻击实体可获得以与受害人相同的方式与ID提供 者功能720交互的许可。

另一违反与关联有关。正确的关联是在以下三段数据被正确绑定在一起时 建立的:用户的身份(表示认证的结果)、用户的许可(表示授权的结果)、 以及会话的身份(通常称为会话ID)。当某一恶意实体以任何方式被绑定到受 害人(例如通过将恶意实体绑定到受害人的许可、或通过将恶意实体的会话绑 定到受害人的身份等)时,绑定违反发生。

更为具体地,模型620可将其分析的安全性相关的目标表达为一组断言。 每个断言表达了在某一应用(该应用使用SDK)在某一运行时系统上运行时预 期要被满足的某一性质。模型620可在模型602中适当的接合点处添加那些断 言。例如,模型620可每当某一恶意实体尝试将一SS项目添加到知识池时添 加一断言。该断言可规定正被添加到知识池的知识k不是与受害人或非恶意应 用相关联的秘密。此外或替代地,一断言可规定知识k不能包含指示出受害人 的身份的任何字段(如在知识k是ID提供者功能720提供的一段经签名的数 据的情况中)。此外或替代地,一断言可规定ID提供者功能720上没有API 将k作为输入以及作为响应发回受害人的身份。这些种类的断言是通过示例而 非限制来被引用的。

模型602还可对每一绑定操作添加一断言,在该绑定操作中在用户身份、 许可以及会话ID,或这些数据项中的任一对之间作出关联。例如,断言可规定 如果用户ID或许可表示受害人,则会话同样被预期为与受害人相关联。另一 断言可规定如果某一操作将用户ID和许可绑定,则两者都或者两者都不被预 期表示受害人。

在实际实现方面,模型602可被形成为以任何语言表达的程序。断言可在 程序中与正被寻求的目标有关系的接合点处被添加到程序中的特定语句。

静态分析工具604分析上述模型602来提供输出结果,输出结果可指示出 隐含假设的存在(如果有的话)。静态分析工具604可使用任何静态分析技术 来执行该任务。一般来说,静态分析涉及在符号化域中分析程序的执行路径, 这与动态地执行程序相反。

图8以高级形式示出静态分析工具604的操作。测试用具80与上述抽象 模块相关联,包括非恶意客户机应用(好应用C)706、相应的非恶意服务应用 (好应用S712)、恶意客户机应用(坏应用C)722、以及单独攻击者功能724。 测试用具802执行影响要被测试的系统804的操作。系统804包括SDK层806 和底层系统层808,在此也被称为底层系统环境。SDK层806总地表示客户机 SDK708和服务SDK716。底层系统层808总地表示客户机运行时710、服务 器运行时718以及ID提供者功能720。

在一个实现中,测试用具802通过非确定性地调用其抽象模块来操作。调 用一抽象模块的动作可最终导致对正被测试的系统804作出调用。每当恶意客 户机应用(坏应用C)722被调用或每当单独攻击者功能724被调用时,测试用 具802可将知识k存储在知识池810中。静态分析工具604然后可确定该事件 是否将违反任何声明的断言。此外,静态分析工具604可确定任何被调用的功 能是否违反任何与绑定有关的断言。SDK开发者可检查这些违反(如果有任何 被检测出),以确定是否存在与SDK相关联的任何隐含假设。

图9是描述图6的分析模块412的操作的一个方式的过程902。在框904 中,SDK开发环境404提供诸如SDK之类的软件产品。在框906中,SDK开 发环境404提供描述SDK的推荐用法的文档资料(如开发者指南)。在框908, SDK开发环境404提供至少表示SDK、指南、以及系统环境(如运行时环境(一 个或多个)以及ID提供者功能等)的模型602。在框910中,分析模块412分 析模型602以确定模型是否遭受到(对例如安全性相关的断言的)任何违反, 这可指示出存在与SDK(以及指南)相关联的隐含假设。在框912中,分析模 块412可提供传达所述违反的输出。在框914中,SDK开发者可任选地修订 SDK,和/或指南产生者可任选地修改指南,目标皆为消除或减少标识出的隐含 假设。

图10是描述图6的分析模块412的操作的进一步说明性细节的过程,与 图9的框910相关联。在框1002中,分析模块412使用静态分析工具604来 确定:(a)恶意实体获取安全敏感(SS)项目的实例;以及(b)绑定操作在 用户身份、许可、以及会话,或它们的任一对之间执行的实例。在框1004中, 分析模块612基于框1002的结果确定定义的安全性性质被违反的实例。在框 1006中,SDK开发者或其他个体基于框1004的结果确定与SDK相关联的隐含 假设的存在。

图11是描述图6的分析模块412的操作的进一步说明性细节的过程1102。 在框1104,分析模块412将深度计数器初始化为0。在框1106,分析模块412 对抽象模块实现的三种功能之一作出非确定性调用,包括非恶意客户机应用 (好应用C)706执行的“好应用C运行”1108功能、恶意客户机应用(坏应用C) 722执行的“坏应用C作出调用”功能1110、以及单独攻击者功能724执行的“攻 击者作出调用”功能1112。图11中标记为“N-Det”的功能对应于对多个可能选 项之一的非确定性(如随机)选择。如果“坏应用C作出调用”功能1110或“攻 击者作出调用”功能1112被调用,则功能1114将把从该调用获得的任何知识存 储到知识池数据存储810中。

上述功能(1108、1110、1112)中每一个一旦被调用就可非确定性地选择 一子功能。图11指示出子功能包括:指示出客户机SDK708被调用的“好应用 C调用SDKC”功能1116;指示出非恶意服务应用(好应用S)712被调用的“调 用好应用S”功能1118;指示出ID提供者功能720被调用的“坏应用C调用IDP” 功能1120;指示出客户机运行时710被调用的“坏应用C调用运行时C”功能 1122、以及指示出ID提供者功能720被调用的“攻击者调用IDP”功能1124。

这些子功能中的每一个在被调用时能然后非确定性地调用底层系统层808 (图8中示出)中的某一功能。框1126指示出该系统层808中的具体模块(一 个或多个)在被调用时执行合适的功能。由于这些模块是具体的,因此框1126 内的操作对应于确定性的计算。

更为具体地,对于每个深度增量,分析模块712例如基于其在符号化域中 对模型602的执行来探索通过上述非确定性切换的所有路径。这可导致知识被 存储在知识池数据存储810中。在框1128,分析模块412递增深度计数器并例 如通过再次探索通过非确定性切换的所有路径以及将任何附加知识添加到知 识池数据存储810来重复上述分析。分析模块412重复该操作直到达到最终深 度阈值,例如但非限制,5次迭代。该过程1102因此定义了一种有界搜索。替 代地,分析模块412可使用定理证明程序以非有界方式执行分析,例如华盛顿 州微软公司提供的Z3定理提供器。

基于分析模块412的结果,根据正被考虑的SDK的性质、其对应的指南、 以及底层系统环境,SDK开发者可标识不同类型的隐含假设。仅引用一个示例, 分析模块412可分析依赖于某一服务的应用,其中该服务运行在某一服务器提 供的子域中。假设一恶意实体与同一服务器上的另一子域交互。鉴于可在该系 统环境内适用的某些同源策略,该情形可提供一攻击路径,通过该攻击路径该 恶意实体可将受害人的身份指派给其选择的会话ID。对于该情形的相关假设规 定恶意实体不能拥有子域。

最后,本章节中给出的运行示例对应于分析目标是要标识安全性相关的隐 含假设的情况。但更为一般地,分析模块412可就任一目标或目标组合来分析 SDK。例如,分析模块412可依赖于已经嵌入了与资源利用而非安全性有关的 断言的模型。SDK开发者可使用分析模块412来确定SDK是否与任何与消耗 有关的隐含假设相关联。例如,某一假设可指示出某一模块被预期要在某一服 务器上被采用以便避免高存储器使用率。

C.说明性应用开发环境

图12示出由图4的应用开发环境提供的测试工具424的一个实现。测试 工具424基于包括数据存储1202中存储的一个或多个弱点模式的测试套件来 执行测试。(图4的)测试套件产生模块414产生该测试套件。在一个情况中, 测试套件产生模块414对应于将每个隐含假设转换成一弱点模式的转换模块或 查找表。替代地或另外地,用户(如SDK开发者)可生成弱点模式。

在所例示的示例中,测试工具424基于弱点模式对应用执行动态分析。替 代地或另外地,测试工具424可执行对应用的静态分析。

测试工具424可包括在客户机侧的测试者设备1204、代理服务机制1206、 以及服务器1208之间展开的功能。测试者设备1204承担运行正被考虑的应用 的客户机设备的角色。服务器1208起运行应用可与之交互的服务的服务器的 作用。代理服务机制1206可模拟将在实际执行环境中产生的消息交换。代理 服务机制1206还模拟单独攻击功能724的操作。

在操作中,客户机侧测试者功能1210首先启动客户机应用(应用C)1212, 表示根据某一指南构造的非恶意应用。这可(或可不)需要与正被测试的相应 服务器应用(应用S)1214的交互。服务器侧测试者功能1216可对应于与测试 有关的API等,这些API允许客户机应用(应用C)1212与服务器应用(应用 S)1214交互。客户机应用(应用C)1212还可经SDK功能(未示出)与ID 提供者1218交互。在模拟了客户机应用(应用C)1212的操作之后,客户机侧 测试者功能1210可像(图7的)恶意客户机应用(坏应用C)那样表现。

图13是描述图4的应用开发环境406的操作的一个方式的过程1302。在 框1304中,应用开发环境406接收与某一SDK相关联的测试套件。在框1306 中,应用开发环境406建立测试环境,诸如图12中所示的配置。在框1308中, 应用开发环境406例如通过一次分析一个弱点来对测试套件中指定的每个弱点 模式运行测试。在框1310中,应用开发环境406基于框1310的结果标识应用 中的任何缺陷。在框1312中,应用开发者可选择修改该应用以解决框1310中 标识出的缺点。

D.代表性计算功能

图14阐述了可以被用来实现上文所描述的功能的任何方面的说明性计算 功能1400。例如,图14中所示类型的计算功能1400可被用于实现图2中所示 的任何客户机设备或任何服务器的任何方面。图14中所示类型的计算功能1400 还可被用于实现图4的SDK开发环境404的任何方面(诸如分析模块412)以 及应用开发环境406的任何方面(诸如测试工具424)。在一种情况下,计算 功能1400可对应于包括一个或多个处理设备的任何类型的计算设备。在所有 情形中,计算功能1400表示一个或多个物理且有形的处理机制。

计算功能1400可包括诸如RAM1402和ROM1404之类的易失性和非易 失性存储器,以及一个或多个处理设备1406(例如,一个或多个CPU,和/或 一个或多个GPU等等)。计算功能1400还可任选地包括诸如硬盘模块、光盘 模块等等之类的各种介质设备1408。当处理设备1406执行由存储器(例如, RAM1402、ROM1404或其他)维护的指令时,计算功能1400可以执行上文 所标识的各种操作。

更一般地,指令和其它信息可以被存储在任何计算机可读介质1410上, 计算机可读介质包括但不限于静态存储器存储设备、磁存储设备、光存储设备 等。术语计算机可读介质还涵盖多个存储设备。在多种情况下,计算机可读介 质1410表示某种形式的物理和有形的实体。术语计算机可读介质还包括传播 信号,例如经由物理管道和/或空气或其他无线介质等来传送或接收的。然而, 特定术语“计算可读存储介质”和“计算机可读介质设备”明确地排除传播信号本 身,但是包括所有其他形式的计算机可读介质。

计算功能1400还包括用于(通过输入设备1414)接收各种输入,以及用 于(通过输出设备)提供各种输出的输入/输出模块1412。例示性的输入设备 包括键盘设备、鼠标输入设备、触摸屏输入设备、姿势输入设备、语音识别机 制、平板或墙壁投影输入机制等。一种特定输出机制可包括呈现设备1416及 相关联的图形用户界面(GUI)1418。计算功能1400还可以包括用于通过一个 或多个通信管道1422与其他设备交换数据的一个或多个网络接口1420。一条 或多条通信总线1424将上述组件通信地耦合在一起。

通信管道(一个或多个)1422可以以任何方式来实现,例如,通过局域网、 广域网(例如,因特网)等等,或其任何组合。通信管道(一个或多个)1422 可包括可由任何协议或协议的组合管理的硬连线的链路、无线链路、路由器、 网关功能、名称服务器等等的任何组合。

作为替代或除此之外,前述各节中所述的任何功能可至少部分地由一个或 多个硬件逻辑组件来执行。作为示例而非限制,计算功能可使用以下的一个或 多个来实现:现场可编程门阵列(FPGA);专用集成电路(ASIC);专用标 准产品(ASSP);片上系统(SOC);复杂可编程逻辑器件(CPLD)等等。

最后,说明书在例示性挑战或问题的上下文中描述了各种概念。这种阐述 方式不构成其他人以此处所指定的方式理解和/或明确表达这些挑战或问题的 承认。此外,所要求保护的主题也不仅限于解决提到的挑战/问题中的任意或全 部的实现。

尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所 附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特 征和动作是作为实现权利要求的示例形式公开的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号