CN102609279B - 在受限应用执行环境中的应用执行 - Google Patents

在受限应用执行环境中的应用执行 Download PDF

Info

Publication number
CN102609279B
CN102609279B CN201110442192.8A CN201110442192A CN102609279B CN 102609279 B CN102609279 B CN 102609279B CN 201110442192 A CN201110442192 A CN 201110442192A CN 102609279 B CN102609279 B CN 102609279B
Authority
CN
China
Prior art keywords
api calls
execution environment
limited applications
applications execution
api
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
CN201110442192.8A
Other languages
English (en)
Other versions
CN102609279A (zh
Inventor
K·H·雷厄森
A·M·安德森
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN102609279A publication Critical patent/CN102609279A/zh
Application granted granted Critical
Publication of CN102609279B publication Critical patent/CN102609279B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

本申请涉及在受限应用执行环境中的应用执行。在运行时中截取由应用做出的应用编程接口(API)调用。做出每个被截取的API调用是否被受限应用执行环境所允许或被阻挡的确定。由受限应用执行环境所阻挡的每个API调用被修改,使得该API调用是可被允许的,诸如例如,修改该API调用以在影子资源上执行。也可在运行时中执行修复代码,以对API调用进行重新格式化,使得其被允许在受限应用执行环境中执行。

Description

在受限应用执行环境中的应用执行
技术领域
本申请涉及在受限应用执行环境中的应用执行。
背景技术
目前,存在前所未有的对安全操作系统的更大需求。一种较新的计算机操作系统通过对应用程序如何执行强加以更大的限制而提供了更大的安全性。例如,操作系统可不允许被编程为在操作系统的旧有版本上使用的应用程序访问特定的操作系统提供的应用编程接口(API)。由此,当在操作系统的较新的版本上被执行时,传统应用(即,被编程为在操作系统的旧有版本上使用的应用程序)会停止工作,或会不正常工作。
为了使传统应用程序能与强加更繁重的安全限制的较新的操作系统一起工作,可能需要修改应用程序。然而,对传统应用程序的修改不会是一直可行的,因为源代码可能无法获得,应用程序的原开发商可能无法获得,金融资源可能无法负担修改的经费,或者底层技术可能太难以被理解。对期望在较新的操作系统上执行传统应用的个人或组织而言这也证明是令人挫败的。
此处所做出的本公开正是对于这些和其他考虑事项而提出的。
发明内容
在此描述了用于在受限的应用执行环境中执行应用的诸个技术。如在此所用的,术语“受限应用执行环境”被用于指代对应用程序的执行强加安全限制的用于执行应用程序的环境。例如,限制对传统操作系统提供的API进行访问的操作系统是一种受限应用执行环境。在此描述的概念和技术允许传统应用访问由受限应用执行环境提供的API,在其他方式下这些传统应用不被允许使用这些API。
根据在此所述的一个方面,使用学习模式来识别由应用所做出的受限应用执行环境所不允许的API调用。为了识别这些API调用,执行应用,并且截取由该应用做出的API调用。对于每个被截取的API调用,做出受限应用执行环境是否将允许执行该API调用的确定。在一个实施例中,咨询安全规则数据库以做出该确定。安全规则数据库存储有指示API调用是否由受限应用执行环境所允许的数据。
对于不能在受限应用执行环境中被执行的每个API调用,将数据存储在识别API调用的数据库(在此称为:运行时修复数据库)中。关于API调用的附加状态信息也可被存储在运行时修复数据库中,诸如:识别API的调用者的数据、调用堆栈、指示如何调用API的数据、调用参数、以及其他数据。
运行时修复数据库的内容可在运行时被用于识别被阻挡的API调用,并修改这些API调用使得受限应用执行环境将允许这些调用。特别是,截取在运行时中由应用做出的API调用。对于每个被截取的API调用,做出该API调用是否由受限应用执行环境所允许的确定。运行时修复数据库的内容可被用于识别不被允许的调用。
由受限应用执行环境所阻挡的每个API调用被修改,使得该API调用是可被允许的。例如,在一个示例中,用于访问安全资源(诸如注册表或大容量存储设备上的文件)的API调用可被修改使得其在影子资源上执行。影子资源是一在受限应用执行环境中对API是可访问的安全资源版本。在另一个示例中,程序代码(在此称为:修复代码)可被执行以对API调用重新格式化,使得API调用可被允许在受限应用执行环境中执行。修改后的或重新格式化后的API调用可随后在受限应用执行环境中被执行。
本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在将本概述用来限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本发明的任一部分中提及的任何或所有缺点的实现。
附图说明
图1是示出用于此处公开的诸个实施例的一个说明性操作环境的软件体系结构图;
图2是示出被用于此处公开的一个实施例以识别被受限应用执行环境所阻挡的API调用的操作的学习模式的诸个方面的软件体系结构图;
图3是根据此处提供的一个实施例,示出图2所示的操作的学习模式的操作的诸个方面的流程图;
图4是根据此处描述的一个实施例,示出用于在受限应用执行环境中执行应用的此处所述的机制的诸个方面的软件体系结构图;
图5是根据此处提供的一个实施例,示出用于在受限应用执行环境中执行应用的此处所述的一个说明性过程的诸个方面的流程图;以及
图6是示出用于能够实现本文所提出的各种实施例的计算系统的说明性计算机硬件和软件体系结构的计算机体系结构图。
具体实施方式
以下的详细描述针对用于在受限应用执行环境中执行应用的技术。如以上所简要讨论的,由应用做出的API调用在运行时中被截取。随后做出每个被截取的API调用是否被受限应用执行环境所允许的确定。由受限应用执行环境所阻挡的每个API调用被修改,使得该API调用是可被允许的,诸如例如,修改该API调用以在影子资源上执行。也可在运行时中执行修复代码,以对API调用进行重新格式化,使得其被允许在受限应用执行环境中执行。关于这些和其他特征的附加细节将在以下提供。
尽管在结合计算机系统上的操作系统和应用程序的执行而执行的程序模块的一般上下文中呈现了此处描述的主题,但是本领域技术人员将认识到,其他实现可以结合其他类型的程序模块来执行。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其它类型的结构。此外,本领域技术人员将明白,可以利用其他计算机系统配置来实施此处描述的主题,这些计算机系统配置包括手持式设备、多处理器系统、基于微处理器的或可编程消费电子产品、小型计算机、大型计算机等等。
在下面的详细描述中,将参考构成本发明的一部分的附图,并且在附图中作为说明示出了各具体实施例或示例。现在参考附图,其中全部若干附图中相同的标号表示相同的元素,将描述用于在受限应用执行环境中执行应用的计算系统和方法的诸个方面。
图1是示出用于此处揭示的各个实施例的一个说明性操作环境的软件和网络体系结构图。特别是,在图1中示出的说明性操作环境包括受限应用执行环境100。如以上所简要讨论的,受限应用执行环境100是对应用程序的执行强加安全限制的用于执行应用程序的环境。例如,在图1所示的受限应用执行环境100中,操作系统102暴露出API 106。当应用104调用API 106时,操作系统102咨询安全监视器110以确定该对API 106的调用是否是被允许的。
响应于从操作系统102接收到请求,安全监视器110可执行多种处理来确定该由应用104对API 106的调用是否是被允许的。例如,应用104可做出对API106的调用以访问已经被操作系统102的较新版本所拒绝(deprecate)的安全资源112。安全监视器110可将该调用识别为不被允许的,并使得操作系统102拒绝应用104对API 106的访问。应用104可包括回调(callback)API 108,通过该回调API 108,操作系统102可将该情况发送给应用104。
如果安全监视器110确定该对API 106的调用是可允许的,安全监视器110和操作系统102将允许该对API 106的调用被执行。例如,在以上所述的示例中,当API 106是用于访问安全资源112时,安全监视器110将允许应用104访问安全资源112。应该理解到,安全资源112可以是文件、命名对象或事件、用户界面消息泵、内核对象、注册表、网路设备、或以安全方式被管理的其他类型的计算机资源。
也应该理解到,安全监视器110可因与上述不同的理由而拒绝对API 106的访问。例如,安全监视器110可确定应用104还没有按照适当方式被数字签名、使用对隐藏API或未授权API的调用、还没有使用授权的开发环境来编程、或其他理由。将在下文中详细描述的,在此提供的诸个实施例提供了用于允许应用104以安全方式在如图1所示的受限应用执行环境100中被执行的功能。
可以进一步认识到,图1所示的受限应用执行环境100可由标准桌面计算机或膝上型计算机、服务器计算机、平板计算设备、无线电话、或事实上任何其他类型的计算设备来提供。也可认识到,图1所示的受限应用执行环境100仅仅是示例性的,并且在此提供的诸个实施例可使用其他类型的对应用程序104的执行做出限制的环境。
图2是示出被用于此处公开的一个实施例以识别在受限应用执行环境100中不被允许的API调用的操作的学习模式的诸个方面的软件体系结构图。如图2所示,操作系统102暴露用于由应用程序所使用的API 106。同样如以上参考图1所讨论的,安全监视器110结合操作系统102一起使用,安全监视器110仲裁对安全资源112的访问。如将在下文中详细描述的,在图2中示出了操作的学习模式,用于识别被操作系统102和安全监视器110所阻挡的由应用104做出的API调用202。如将在下文所讨论的,一旦已经识别了由应用104做出的API调用,就可利用诸个机制来修改或重新配置这些API调用使得它们可在运行时中被允许。
在图2所示的操作的学习模式中,应用程序104被执行。引用监视器204截取由应用104做出的API调用202。引用监视器204被配置为截取API调用202,并且响应于此,确定API调用202是否被允许在受限应用执行环境100中执行。
根据一个实施方式,引用监视器204通过咨询安全规则数据库206来确定API调用202是否被允许执行。在一个实施例中,安全规则数据库206包括指示API调用是否被允许在受限应用执行环境100中执行的数据。例如,安全规则数据库206可包括受限应用执行环境100中的安全资源112的列表。如果引用监视器204确定应用104已经做出了对安全资源112的API调用202,则API调用202将被视为是不可被受限应用执行环境100所允许的。
如果引用监视器204识别将被受限应用执行环境100所阻挡的API调用202,引用监视器204则将关于该API调用202的数据发送给报告引擎208。响应于接收到来自引用监视器204的数据,报告引擎208被配置为确定API调用202是否是可修复的。也就是说,在一个实施例中报告引擎208被配置为确定API调用202是否可被修改为在受限应用执行环境100中执行。
如果报告引擎208确定API调用202是不可修复的,则报告引擎208将向应用104的开发商或作者提供指示。以此方式,应用104的作者可采取措施来修改应用104,使得API调用202是在受限应用执行环境100中可允许的。
如果报告引擎208确定API调用202是可修复的,则报告引擎208将识别API调用202的数据存储在运行时修复数据库210中。报告引擎208也可存储关于API调用202的附加状态信息,诸如:识别API的调用方的数据、调用堆栈、指示API如何被调用的数据、调用参数、以及其他数据。如将在下文中详细描述的,这些信息可被用在应用104的运行时中,以使得API调用202能被执行。
根据一个实施方式,报告引擎208也包括报告UI 212。报告UI 212提供用于允许应用104的开发商访问运行时修复数据库210的内容的功能。报告UI 212也可向应用104的开发商提供UI,用于指示API调用202是不可修复的。该UI可提供关于API调用202的细节,诸如以上描述的状态信息。报告UI 212也可提供其他类型的用户接口,以向应用104的作者提供其他类型的信息。
图3是根据此处提供的一个实施例,示出图2所示的操作的学习模式的操作的诸个方面的流程图。应该了解,这里参考图3和其他图形所描述的逻辑操作是(1)作为计算机实现的动作或在计算系统上运行的程序模块的序列和/或(2)计算系统内的互连机器逻辑电路或电路模块来实现的。取决于计算系统的性能及其他要求,可以选择各种的实现。因此,此处所描述的逻辑操作被不同地称为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可用软件、固件、专用数字逻辑,及其任何组合来实现。还应该明白,可以执行比附图中示出并在此处描述的操作更多或更少的操作。这些操作还可以按与此处所描述的操作不同的次序来执行。
例程300在操作302开始,其中引用监视器204截取API调用202。响应于此,引用监视器204咨询安全规则数据库206以确定被截取的调用是否是可被允许的调用。如果API调用202是可允许的,例程300进行到操作302,如上所述在此可由引用监视器204截取另一个API调用202。如果API调用202是不可允许的,则例程300从操作306行进至操作308。
在操作308,引用监视器204将关于API调用202的数据发送给报告引擎208。如以上描述的,报告引擎208将描述API调用202的数据存储在运行时修复数据库210中。在操作310中,报告UI 212被执行,以使得应用104的作者能访问运行时修复数据库210的内容。如上所述,例程300从操作310行进至操作302。
应该理解到,在图2和3中所示的并且在以上描述的操作的学习模式使用了安全规则数据库206以确定由应用104做出的API调用在受限应用执行环境100中是否是可允许的。然而,应该理解到,可对应用104执行其他类型的静态分析,以确定由应用104做出的API调用在环境100中是否是可允许的。
图4是根据此处提供的一个实施例,示出用于在受限应用执行环境中执行应用的此处所述的机制的诸个方面的软件体系结构图。特别是,图4示出了应用104的运行时。在运行时中,应用104可做出API调用202。如在学习模式中那样,引用监视器204截取API调用202。然而,在运行时中,引用监视器204咨询运行时修复数据库210以确定API调用202是否被受限应用执行环境100所允许。
如上所述的,运行时修复数据库210包含有在一个实施例中识别可修复的那些API调用202的数据。如果API调用没有在运行时修复数据库210中被识别,则引用监视器204可推断该API调用202不经过修改就是可允许的,并允许API调用202继续下去。如果引用监视器204确定API调用202被受限应用执行环境100所阻挡,则引用监视器204在一个实施例中被配置为修改API调用202使得API调用202可在受限应用执行环境中被执行。
在一个实施例中,引用监视器204虚拟化API调用202,以允许API调用202在环境100中被执行。例如,当API调用202是访问安全资源112的请求时,引用监视器204可创建影子资源402。影子资源402是一在环境100中对API调用202是可访问的安全资源112的版本。一旦已经创建了影子资源402,引用监视器204可修改API调用202使其可在影子资源402上执行。在该方式中,API调用202(诸如对API 404的API调用)可被修改以在受限应用执行环境100中执行。
根据另一个实施方式,修复代码406可被执行以对API调用202进行重新格式化,或进行其他功能,使得API调用202被允许在受限应用执行环境100中执行。例如,API调用202可以是对要求使用安全网络连接的API 404的调用。如果调用202被格式化为使用非安全网络连接,则修复代码406可对调用202进行重新格式化使得其利用安全网络连接。修复代码406可随后使对API 404的重新格式化的API调用在环境100中被执行。应该理解到,引用监视器204可执行其他类型的功能,这些功能用于修改、重新格式化、或以其他方式改变API调用202,使得API调用在受限应用执行环境100中是可允许的。
图5是根据此处提供的一个实施例,示出用于在受限应用执行环境100中执行应用的此处所述的一个示例性过程的诸个方面的流程图。特别是,图5示出例程500,例示了在图4所示的以及在上文中描述的操作的运行时模式中所执行的诸个操作。例程500在操作502开始,其中引用监视器204截取API调用202。响应于此,引用监视器204咨询运行时修复数据库210以确定是否在其中识别了API调用202。
在操作506,引用监视器204确定在运行时修复数据库210中是否识别了API调用202。如果没有,则例程500从操作506行进到操作508,在操作508中引用监视器204允许API调用202正常地继续下去。例如,如果API调用202是对由操作系统102所暴露的API 404的调用,则引用监视器204可允许对API404的API调用202被执行。
如果,在操作506,引用监视器204确定在运行时修复数据库210中识别了调用202,则例程500从操作506行进到操作510或到操作516。操作510-514是用于对由API调用202所识别的安全资源112进行虚拟化。操作516-518是用于执行修复代码406,所述修复代码用于修改API调用202使得其是可允许的。每一个这些操作都会在以下详细描述。应该理解到,用于对安全资源112进行虚拟化的操作以及用于执行修复代码406的操作是可替换执行的。在另一个实施例中,用于对安全资源112进行虚拟化的操作和用于执行修复代码406的操作可以互相结合执行。同样如以上所讨论的,可执行其他类型的操作以允许API调用202被修改使得其可在环境100中执行。
为了对安全资源112进行虚拟化,在操作510创建影子资源402。如以上所简要讨论的,影子资源402是一在环境100中对API调用202是可访问的安全资源112的副本。一旦在操作510已经创建了影子资源402,例程500就行进到512,在512中引用监视器204使得API调用202被重定向到影子资源402。在操作514中,API调用202随后在影子资源402上被执行。例程500从操作514行进至操作502,如以上所述的,在操作502中可截取其他API调用,并按照上述的方式进行处理。
为了执行修复代码406,例程500从操作506行进至操作516,在操作516中,引用监视器204使得修复代码406被执行。如以上所讨论的,修复代码406对API调用202重新格式化,使得其被允许在环境100中执行。一旦API调用202已经被重新格式化,例程500就行进至操作518,在操作518中修复代码406使得重新格式化后的API调用202在安全资源112上执行。例程500从操作518行进至操作502,如以上所述的,在操作502中截取其他API调用,并按照上述的方式进行处理。
应该理解到,根据其他实现方式,在此描述的技术的诸个方面可作为服务来提供。例如,在一个实现方式中,供应商可提供运行时修复数据库210和安全规则数据库206。供应商也可处理以如上描述的学习模式执行应用的请求。响应于此,供应商可提供为应用所定制的安全规则数据库206。以此方式,该服务的客户可无须执行学习模式操作。
图6是示出用于能够实现本文所提出的各种实施例的计算系统的说明性计算机硬件和软件体系结构的计算机体系结构图。图6示出的计算机体系结构说明了传统台式计算机、膝上计算机,或服务器计算机,并可被用来执行此处描述的各种软件组件。
图6所示的计算机体系结构包括中央处理单元602(“CPU”)、包括随机存取存储器614(“RAM”)和只读存储器(“ROM”)616的系统存储器608、以及将存储器耦合至CPU 602的系统总线604。包含诸如在启动时有助于在计算机600内的元件之间传输信息的基本例程的基本输入/输出系统(“BIOS”)被存储在ROM 616中。计算机600还包括用于存储操作系统618、应用程序和其他程序模块的大容量存储设备610,这将在以下更为详细地描述。
大容量存储设备610通过连接至总线604的大容量存储控制器(未示出)连接到CPU 602。大容量存储设备610及其相关联的计算机可读存储介质为计算机600提供非易失性的存储。虽然对此处包含的计算机可读介质的描述引用了诸如硬盘或CD-ROM驱动器等大容量存储设备,但本领域的技术人员应当理解,计算机可读介质可以是可由计算机600访问的任何可用计算机存储介质。
作为示例而非限制,计算机可读存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机可读存储介质包括,但并不限于,RAM、ROM、EPROM、EEPROM、闪存或其他固态存储器技术,CD-ROM、数字多功能盘(“DVD”)、HD-DVD、蓝光或其他光学存储,磁带盒、磁带、磁盘存储器或其他磁存储设备,或可以用来存储所需信息并可由计算机600访问的任何其他非瞬态介质。
可以理解,此处的计算机可读介质也包括通信介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来具体化计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。术语“已调制数据信号”是指其一个或多个特征以在信号中对信息进行编码的方式来设置或改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述中任一组合也应包括在计算机可读介质的范围之内。计算机可读存储介质不包括通信介质。
根据各实施例,计算机600可以使用通过诸如网络620之类的网络到远程计算机的逻辑连接来在联网环境中操作。计算机600可通过连接至总线604的网络接口单元606来连接到网络620。应当理解,网络接口单元606还可以被用来连接到其他类型的网络和远程计算机系统。计算机600还可包括用于接收和处理来自多个其他设备的输入的输入/输出控制器612,这些设备包括键盘、鼠标或者电子指示笔(未在图6中示出)。类似地,输入/输出控制器可以提供至显示屏、打印机或其他类型的输出设备(也未在图6中示出)的输出。
如前简述的那样,多个程序模块和数据文件可以存储在计算机600的大容量存储设备610和RAM 614内,包括适于控制联网的台式计算机、膝上型计算机或服务器计算机的操作的操作系统618。大容量存储设备610和RAM 614还可存储一个或多个程序模块。具体而言,大容量存储设备610和RAM 614可存储引用监视器204、安全监视器110、报告引擎208和/或上述的其他软件组件。大容量存储设备610和RAM 614也可存储其他程序模块和数据,诸如安全规则数据库206和运行时修复数据库210。
一般而言,在被加载到CPU 602中并被执行时,软件应用或模块可将CPU602和整个计算机600从通用计算系统变换成被定制成执行此处所呈现功能的专用计算系统。CPU 602可以用任意数量的晶体管或其他分立的电路元件(它们可以分别地或共同地呈现任意数量的状态)构建。更具体地说,CPU 602可以响应软件或模块内包含的可执行的指令,作为一个或多个有限状态机来操作。这些计算机可执行的指令可以通过指定CPU 602如何在多个状态之间转换来转换CPU 602,从而在物理上转换构成CPU 602的晶体管或其他分立的硬件元件。
通过将软件或模块编码到大容量存储设备上,还可变换大容量存储设备或相关联的计算机可读存储介质的物理结构。在本说明书的不同实现中,物理结构的具体变换可取决于各种因素。这些因素的示例包括但不限于:用来实现计算机可读存储介质的技术、计算机可读存储介质是被表征为主存储还是次级存储等。例如,如果计算机可读存储介质是作为基于半导体的存储器实现的,则当软件被编码到其中时,软件或模块可以转换半导体存储器的物理状态。例如,软件可以转换构成半导体存储器的晶体管、电容器或其他分立的电路元件的状态。
作为另一个示例,计算机可读存储介质可以使用磁性或光学技术来实现。在这样的实现方式中,当软件被编码到其中时,软件或模块可以转换磁性或光学介质的物理状态。这些变换可以包括改变给定磁性介质内的特定位置的磁性。这些变换还可以包括改变给定光学介质内的特定位置的物理特征或特性,以改变这些位置的光学特性。在没有偏离本说明书的范围和精神的情况下,物理介质的其他转换也是可以的,前面提供的示例只是为了便于此讨论。
基于上述描述,应该理解到,在此已经提供了用于在受限应用执行环境中执行应用的诸个技术。虽然以计算机结构特征、方法动作、以及计算机可读介质专用的语言描述了本文呈现的主题,但是应该理解,在所附权利要求书中所限定的本发明不一定仅限于本文描述的具体特征、动作、或介质。相反,这些具体特征、动作和介质是作为实现权利要求的示例形式来公开的。
上述主题仅作为说明提供,并且不应被解释为限制。可对此处所述的主题作出各种修改和改变,而不必遵循所示和所述的示例实施例和应用,且不背离所附权利要求书中所述的本发明的真正精神和范围。

Claims (7)

1.一种用于在受限应用执行环境中的应用执行的计算机实现的方法,其特征在于,所述计算机实现的方法包括执行用于以下的计算机实现的操作:
在由在受限应用执行环境(100)外部的应用(104)所做出的应用编程接口API调用(202)在所述受限应用执行环境内执行之前,截取所述API调用,其中所述API调用是针对安全资源的;
确定所截取的API调用(202)是否被所述受限应用执行环境(100)所阻挡;
响应于确定所截取的API调用(202)被所述受限应用执行环境(100)所阻挡,在所阻挡的API调用(202)在所述受限应用执行环境(100)中被执行之前修改所阻挡的API调用;
在所述受限应用执行环境内创建影子资源;以及
使所修改的API调用在所述受限应用执行环境内在所述影子资源上执行,其中所述影子资源包括所述安全资源的一版本。
2.如权利要求1所述的计算机实现的方法,其特征在于,其中在所阻挡的API调用在所述受限应用执行环境中被执行之前修改所阻挡的API调用还包括:
执行修复代码以对所述API调用重新格式化,使得其在所述受限应用执行环境中执行;以及
在所述受限应用执行环境中执行重新格式化后的API调用。
3.如权利要求1所述的计算机实现的方法,其特征在于,确定所截取的API调用是否被所述受限应用执行环境所阻挡还包括:确定在运行时修复数据库中是否描述了所截取的API调用。
4.如权利要求3所述的计算机实现的方法,其特征在于,所述运行时修复数据库包括:数据库,存储有识别被所述受限应用执行环境所阻挡的API调用的数据。
5.如权利要求4所述的计算机实现的方法,其特征在于,所述运行时修复数据库操作是由下述步骤生成的:
在由所述外部应用做出的API调用在所述受限应用执行环境内执行之前,截取所述API调用;
确定所述由外部应用做出的API调用是否被阻挡在所述受限应用执行环境中执行;以及
对于被阻挡在所述受限应用执行环境中执行的每个API调用,将识别所阻挡的API调用的数据存储在所述运行时修复数据库中。
6.一种用于在受限应用执行环境中的应用执行的计算机实现的方法,其特征在于,所述计算机实现的方法包括:
提供操作的学习模式,其中在由受限应用执行环境外部的应用(104)做出的应用编程接口(API)调用(202)在所述受限应用执行环境中被执行之前所述API调用被截取,并且其中用于每个被截取的API调用(202)的数据被存储在数据库(210)中,其中所述API调用是针对安全资源的;以及
在所述外部应用的运行时中,在由所述外部应用(104)做出的API调用(202)在所述受限应用执行环境中执行之前截取所述API调用,使用所述数据库(210)来确定所述API调用(202)是否被所述受限应用执行环境(100)所阻挡,响应于确定所截取的API调用(202)被所述受限应用执行环境(100)所阻挡,在所阻挡的API调用(202)在所述受限应用执行环境(100)中被执行之前修改所阻挡的API调用,创建影子资源,影子资源包括在所述受限应用执行环境中对所修改的API调用可访问的安全资源的版本;以及使所修改的API调用在所述影子资源上执行。
7.如权利要求6所述的方法,其特征在于,其中在所阻挡的API调用在所述受限应用执行环境中被执行之前修改所阻挡的API调用还包括:
执行修复代码以对所阻挡的API调用重新格式化,以便在所述受限应用执行环境中执行;以及
执行被重新格式化后的API调用。
CN201110442192.8A 2010-12-27 2011-12-26 在受限应用执行环境中的应用执行 Active CN102609279B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/978,664 2010-12-27
US12/978,664 US8789138B2 (en) 2010-12-27 2010-12-27 Application execution in a restricted application execution environment

Publications (2)

Publication Number Publication Date
CN102609279A CN102609279A (zh) 2012-07-25
CN102609279B true CN102609279B (zh) 2015-06-17

Family

ID=46318664

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110442192.8A Active CN102609279B (zh) 2010-12-27 2011-12-26 在受限应用执行环境中的应用执行

Country Status (6)

Country Link
US (3) US8789138B2 (zh)
EP (1) EP2659421B1 (zh)
CN (1) CN102609279B (zh)
HK (1) HK1173790A1 (zh)
TW (1) TWI533204B (zh)
WO (1) WO2012092111A2 (zh)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2450792B1 (en) * 2010-10-22 2020-01-15 Orange Method for allowing distributed running of an application and related pre-processing unit
EP2450794B1 (en) 2010-10-22 2018-08-29 Orange Method for allowing distributed running of an application and related device and inference engine
US8789138B2 (en) 2010-12-27 2014-07-22 Microsoft Corporation Application execution in a restricted application execution environment
GB2508174B (en) * 2012-11-22 2015-04-08 F Secure Corp Detecting application behavior
US9521040B2 (en) 2013-04-03 2016-12-13 Salesforce.Com, Inc. System and method for generic configuration management system application programming interface
US9547689B2 (en) 2013-10-24 2017-01-17 Salesforce.Com, Inc. Security descriptors for record access queries
US9519466B2 (en) * 2013-12-20 2016-12-13 Oracle International Corporation Executable code for constrained computing environments
US9710316B1 (en) 2014-12-18 2017-07-18 Amazon Technologies, Inc. Flexible scripting platform for troubleshooting
US9785489B1 (en) * 2014-12-18 2017-10-10 Amazon Technologies, Inc. Secure script execution using sandboxed environments
WO2016122623A1 (en) * 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Secure api communication
US10834054B2 (en) 2015-05-27 2020-11-10 Ping Identity Corporation Systems and methods for API routing and security
US11403099B2 (en) * 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US10235219B2 (en) 2015-07-27 2019-03-19 Sony Interactive Entertainment America Llc Backward compatibility by algorithm matching, disabling features, or throttling performance
US10419401B2 (en) * 2016-01-08 2019-09-17 Capital One Services, Llc Methods and systems for securing data in the public cloud
US10382491B2 (en) 2016-02-11 2019-08-13 CYBRIC, Inc. Continuous security delivery fabric
US10540498B2 (en) * 2016-08-12 2020-01-21 Intel Corporation Technologies for hardware assisted native malware detection
US10681012B2 (en) 2016-10-26 2020-06-09 Ping Identity Corporation Methods and systems for deep learning based API traffic security
US11443033B2 (en) 2017-01-24 2022-09-13 Microsoft Technology Licensing, Llc Abstract enclave identity
US11023292B1 (en) * 2017-08-02 2021-06-01 Styra, Inc. Method and apparatus for using a single storage structure to authorize APIs
US11681568B1 (en) 2017-08-02 2023-06-20 Styra, Inc. Method and apparatus to reduce the window for policy violations with minimal consistency assumptions
EP3471007B1 (en) 2017-10-13 2022-02-23 Ping Identity Corporation Methods and apparatus for analyzing sequences of application programming interface traffic to identify potential malicious actions
US10747587B2 (en) * 2017-10-30 2020-08-18 Microsoft Technology Licensing, Llc Dynamic rule-based transformation of API calls
US10452454B1 (en) 2018-06-07 2019-10-22 International Business Machines Corporation Instructing the use of application programming interface commands in a runtime environment
US11853463B1 (en) 2018-08-23 2023-12-26 Styra, Inc. Leveraging standard protocols to interface unmodified applications and services
US10719373B1 (en) 2018-08-23 2020-07-21 Styra, Inc. Validating policies and data in API authorization system
US11080410B1 (en) 2018-08-24 2021-08-03 Styra, Inc. Partial policy evaluation
US11080416B2 (en) * 2018-10-08 2021-08-03 Microsoft Technology Licensing, Llc Protecting selected disks on a computer system
US11477239B1 (en) 2018-10-16 2022-10-18 Styra, Inc. Simulating policies for authorizing an API
EP3678348A1 (en) 2019-01-04 2020-07-08 Ping Identity Corporation Methods and systems for data traffic based adpative security
US20220129542A1 (en) * 2019-03-05 2022-04-28 Intel Corporation Deterministic trusted execution container through managed runtime language metadata
US11593525B1 (en) 2019-05-10 2023-02-28 Styra, Inc. Portable policy execution using embedded machines
US11502992B1 (en) 2020-01-27 2022-11-15 Styra, Inc. Local controller and local agent for local API authorization
US11645423B1 (en) 2020-03-02 2023-05-09 Styra, Inc. Method and apparatus for distributing policies for authorizing APIs
WO2021236083A1 (en) * 2020-05-21 2021-11-25 Hewlett-Packard Development Company, L.P. Call modification based on policies
US12003543B1 (en) 2020-07-24 2024-06-04 Styra, Inc. Method and system for modifying and validating API requests
US11513778B1 (en) 2020-08-14 2022-11-29 Styra, Inc. Graphical user interface and system for defining and maintaining code-based policies
EP4204972A4 (en) * 2020-08-31 2024-03-06 Seraphic Algorithms Ltd. METHOD AND SYSTEM FOR EXPLOIT PREVENTION AND MALICIOUS CODE NEUTRALIZATION FOR JAVASCRIPT ENABLED APPLICATIONS
US11593363B1 (en) 2020-09-23 2023-02-28 Styra, Inc. Comprehension indexing feature
US11520579B1 (en) 2020-11-30 2022-12-06 Styra, Inc. Automated asymptotic analysis

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101458630A (zh) * 2008-12-30 2009-06-17 中国科学院软件研究所 一种基于硬件模拟器的自修改代码识别方法

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
US7017188B1 (en) 1998-11-16 2006-03-21 Softricity, Inc. Method and apparatus for secure content delivery over broadband access networks
US7225264B2 (en) 1998-11-16 2007-05-29 Softricity, Inc. Systems and methods for delivering content over a computer network
US6763370B1 (en) 1998-11-16 2004-07-13 Softricity, Inc. Method and apparatus for content protection in a secure content delivery system
US7370071B2 (en) 2000-03-17 2008-05-06 Microsoft Corporation Method for serving third party software applications from servers to client computers
US6938096B1 (en) 1999-04-12 2005-08-30 Softricity, Inc. Method and system for remote networking using port proxying by detecting if the designated port on a client computer is blocked, then encapsulating the communications in a different format and redirecting to an open port
US7200632B1 (en) 1999-04-12 2007-04-03 Softricity, Inc. Method and system for serving software applications to client computers
US7730169B1 (en) 1999-04-12 2010-06-01 Softricity, Inc. Business method and system for serving third party software applications
US6745385B1 (en) 1999-09-01 2004-06-01 Microsoft Corporation Fixing incompatible applications by providing stubs for APIs
US7032213B1 (en) 1999-09-01 2006-04-18 Microsoft Corporation Fixing incompatible applications using a light debugger
US7398532B1 (en) * 2000-03-02 2008-07-08 Hewlett-Packard Development Company, L.P. System and method for establishing a secure execution environment for a software process
GB0011020D0 (en) * 2000-05-09 2000-06-28 Ibm Intercepting system API calls
US6721809B1 (en) 2000-08-21 2004-04-13 Oracle International Corporation Method and apparatus for configuring extensible application programming interfaces
US7107587B1 (en) 2000-09-18 2006-09-12 Microsoft Corporation Access redirector and entry reflector
US7055146B1 (en) * 2001-03-08 2006-05-30 Microsoft Corporation Method and system for dynamically inserting modifications for identified programs
US7028305B2 (en) 2001-05-16 2006-04-11 Softricity, Inc. Operating system abstraction and protection layer
US20040083465A1 (en) 2002-10-28 2004-04-29 Weijia Zhang Method and system for connecting to an application programming interface
US20040267778A1 (en) * 2003-06-27 2004-12-30 Microsoft Corporation Media foundation topology application programming interface
US7590743B2 (en) 2003-12-23 2009-09-15 Softricity, Inc. Method and system for associating a process on a multi-user device with a host address unique to a user session associated with the process
US7376970B2 (en) * 2004-02-20 2008-05-20 Microsoft Corporation System and method for proactive computer virus protection
WO2006020094A2 (en) 2004-07-20 2006-02-23 Softricity, Inc. Method and system for minimizing loss in a computer application
US7984192B2 (en) * 2004-09-27 2011-07-19 Citrix Systems, Inc. System and method for assigning unique identifiers to each remote display protocol session established via an intermediary device
US7831995B2 (en) * 2004-10-29 2010-11-09 CORE, SDI, Inc. Establishing and enforcing security and privacy policies in web-based applications
WO2006101549A2 (en) * 2004-12-03 2006-09-28 Whitecell Software, Inc. Secure system for allowing the execution of authorized computer program code
US8549149B2 (en) * 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US7587724B2 (en) * 2005-07-13 2009-09-08 Symantec Corporation Kernel validation layer
US20070094496A1 (en) * 2005-10-25 2007-04-26 Michael Burtscher System and method for kernel-level pestware management
US7941813B1 (en) * 2006-02-17 2011-05-10 Parallels Holdings, Ltd. System and method for using virtual machine for driver installation sandbox
US7765307B1 (en) * 2006-02-28 2010-07-27 Symantec Operating Corporation Bulk network transmissions using multiple connections primed to optimize transfer parameters
US8181244B2 (en) * 2006-04-20 2012-05-15 Webroot Inc. Backward researching time stamped events to find an origin of pestware
US7877806B2 (en) * 2006-07-28 2011-01-25 Symantec Corporation Real time malicious software detection
US8392996B2 (en) * 2006-08-08 2013-03-05 Symantec Corporation Malicious software detection
US8769674B2 (en) * 2006-09-07 2014-07-01 Symantec Corporation Instant message scanning
US7761485B2 (en) * 2006-10-25 2010-07-20 Zeugma Systems Inc. Distributed database
US9396328B2 (en) * 2007-01-11 2016-07-19 Symantec Corporation Determining a contributing entity for a window
AU2008202532A1 (en) * 2007-06-18 2009-01-08 Pc Tools Technology Pty Ltd Method of detecting and blocking malicious activity
US8272041B2 (en) 2007-06-21 2012-09-18 International Business Machines Corporation Firewall control via process interrogation
JP5065805B2 (ja) * 2007-08-10 2012-11-07 京セラドキュメントソリューションズ株式会社 電子機器、サービス提供方法及びプログラム
US8245289B2 (en) * 2007-11-09 2012-08-14 International Business Machines Corporation Methods and systems for preventing security breaches
US8438542B2 (en) * 2007-12-17 2013-05-07 Microsoft Corporation Generating a management pack at program build time
US20100175104A1 (en) * 2008-03-03 2010-07-08 Khalid Atm Shafiqul Safe and secure program execution framework with guest application space
US8805995B1 (en) * 2008-05-23 2014-08-12 Symantec Corporation Capturing data relating to a threat
US20090319674A1 (en) 2008-06-24 2009-12-24 Microsoft Corporation Techniques to manage communications between relay servers
US8473941B2 (en) * 2008-07-08 2013-06-25 Sandisk Il Ltd. Dynamic file system restriction for portable storage devices
US8448255B2 (en) * 2008-07-14 2013-05-21 Apple Inc. Secure file processing
US8286197B2 (en) * 2008-07-17 2012-10-09 Sharp Laboratories Of America, Inc. Method and system for comprehensive socket application programming interface loopback processing
US8935789B2 (en) * 2008-07-21 2015-01-13 Jayant Shukla Fixing computer files infected by virus and other malware
US8775333B1 (en) * 2008-08-20 2014-07-08 Symantec Corporation Systems and methods for generating a threat classifier to determine a malicious process
GB2475011B (en) * 2008-09-09 2013-06-26 Kace Networks Inc Deployment and management of virtual containers
US8032742B2 (en) * 2008-12-05 2011-10-04 Unisys Corporation Dynamic updating of trusted certificates and certificate revocation lists in a computing system
US8407787B1 (en) * 2009-01-22 2013-03-26 Trend Micro Incorporated Computer apparatus and method for non-intrusive inspection of program behavior
US8510838B1 (en) * 2009-04-08 2013-08-13 Trend Micro, Inc. Malware protection using file input/output virtualization
US8224796B1 (en) * 2009-09-11 2012-07-17 Symantec Corporation Systems and methods for preventing data loss on external devices
US8479286B2 (en) * 2009-12-15 2013-07-02 Mcafee, Inc. Systems and methods for behavioral sandboxing
US8578487B2 (en) * 2010-11-04 2013-11-05 Cylance Inc. System and method for internet security
US8438640B1 (en) * 2010-12-21 2013-05-07 Adobe Systems Incorporated Method and apparatus for reverse patching of application programming interface calls in a sandbox environment
US8789138B2 (en) 2010-12-27 2014-07-22 Microsoft Corporation Application execution in a restricted application execution environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101458630A (zh) * 2008-12-30 2009-06-17 中国科学院软件研究所 一种基于硬件模拟器的自修改代码识别方法

Also Published As

Publication number Publication date
HK1173790A1 (zh) 2013-05-24
US8789138B2 (en) 2014-07-22
TW201227502A (en) 2012-07-01
US9443080B2 (en) 2016-09-13
WO2012092111A3 (en) 2013-01-17
US20140250494A1 (en) 2014-09-04
US20140304771A1 (en) 2014-10-09
TWI533204B (zh) 2016-05-11
EP2659421A4 (en) 2015-04-29
WO2012092111A2 (en) 2012-07-05
US20120167121A1 (en) 2012-06-28
EP2659421A2 (en) 2013-11-06
US9443079B2 (en) 2016-09-13
CN102609279A (zh) 2012-07-25
EP2659421B1 (en) 2019-11-06

Similar Documents

Publication Publication Date Title
CN102609279B (zh) 在受限应用执行环境中的应用执行
US8694981B2 (en) Shared resource dependencies
US8918448B2 (en) Application component decomposition and deployment
US9383983B2 (en) Method and system to impose enterprise security mechanisms throughout a mobile application lifecycle
US8887154B2 (en) Systems and methods for partitioning computing applications to optimize deployment resources
CN110199271B (zh) 用于现场可编程门阵列虚拟化的方法和设备
CN102592077B (zh) 提供安全边界的方法
US8813051B2 (en) Running multiple copies of native code in a Java Virtual Machine
US11263033B2 (en) Usage checks for code running within a secure sub-environment of a virtual machine
US9871800B2 (en) System and method for providing application security in a cloud computing environment
US20130167112A1 (en) Cross-platform virtual machine and method
US10719488B2 (en) Configurable provider for layered repository
CN102591710A (zh) 共享对象表示
US20220188126A1 (en) Systems and methods for running applications associated with browser-based user interfaces within multi-developer computing platforms
US8738773B2 (en) Securing event flow in a user interface hierarchy
US10169007B1 (en) Service provider network integrated compilation service and runtime system
US11520866B2 (en) Controlling processor instruction execution
JP2021197180A (ja) クラス分散およびシーケンシャルメモリ格納を利用したファイル保護方法およびシステム
US7631341B2 (en) Extensible security architecture for an interpretive environment
US20240236108A1 (en) Network of networks
US20240184550A1 (en) Dynamically applying profile-guided optimization to a dbms
US20230195905A1 (en) Multi-tenant cryptography implementation compliance
CN118132131A (zh) 应用打包方法、装置、存储介质及电子装置
WO2024148371A1 (en) Network of networks
CN118227216A (zh) 一种基于Java注解的动态配置接口权限控制的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1173790

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150717

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150717

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1173790

Country of ref document: HK