CN104700026B - 用于检测从基于字节码的沙箱环境逃逸的尝试的方法、设备和系统 - Google Patents
用于检测从基于字节码的沙箱环境逃逸的尝试的方法、设备和系统 Download PDFInfo
- Publication number
- CN104700026B CN104700026B CN201410619045.7A CN201410619045A CN104700026B CN 104700026 B CN104700026 B CN 104700026B CN 201410619045 A CN201410619045 A CN 201410619045A CN 104700026 B CN104700026 B CN 104700026B
- Authority
- CN
- China
- Prior art keywords
- instruction
- sandbox
- programmable device
- application
- sandbox environment
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/54—Monitoring 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 adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Catching Or Destruction (AREA)
- Alarm Systems (AREA)
- Emergency Alarm Devices (AREA)
Abstract
通过将字节码注入到沙箱环境的预定方法中,可以检测使用利用来尝试从沙箱环境逃逸的应用,而无需知晓应用或用于尝试从沙箱环境逃逸的利用。在指示应用从沙箱逃逸后,可以结束应用,或可以报告逃逸,允许进一步对应用进行监视。
Description
技术领域
此处所描述的实施例一般涉及计算机安全领域,具体而言,涉及用于检测从沙箱环境逃逸的应用的技术。
背景
沙箱是一种受限的环境,其中不受信任的软件可能以如下方式执行:限制不受信任的软件执行可能被恶意软件利用的动作的能力。沙箱可以被用作开发环境,限制可能会损坏未受保护环境的错误的影响。类似地,沙箱可以用于测试不受信任的软件,诸如从不受信任的源获取的软件。基本上,程序员必须编写只在沙箱内“活动”的代码,如同儿童被允许在现实沙箱的约束限制内做他们希望做的事情,但是不允许独立地从沙箱逃逸。
某些编程环境,诸如Oracle America公司所提供的平台,提供沙箱环境,作为它们的开发环境的一部分。(“JAVA”是Oracle America公司的注册商标)。在JAVA开发环境中,沙箱是建立规则集合的安全措施,例如,当创建在其作为网页的一部分发送时防止特定功能的小程序时,使用该组规则。当浏览器请求带有小程序的网页时,自动地发送小程序,一旦页面到达浏览器,小程序就可以执行。如果小程序被允许对存储器和操作系统资源进行无限的访问,则如果小程序是恶意软件,它会带来危害。沙箱创建一种环境,在该环境中,对小程序可以请求或访问哪些系统资源有严格的限制。除规则之外,JAVA语言还提供代码检测器以保证遵守沙箱的限制。
然而,如在每个安全性环境中,一旦被发现从沙箱逃逸并访问处于沙箱中的软件不应该能够访问的资源,安全性环境中的弱点或瑕疵可能会被利用。入侵预防系统尝试防止操作系统、应用或开发环境中的允许这样的利用(exploit)成功的漏洞。通常,这样的入侵预防系统使用定制沙箱或虚拟机来监视利用行为和对沙箱利用的基于签名的检测,类似于传统的防恶意软件的软件。然而,入侵预防系统常常不能检测利用,诸如还没有被分析的利用(常常被称为0日利用)。或者,某些常规方法产生假阳性指示,将不是利用的某种东西称为利用。更好的方法将有所帮助。
附图简述
图1是示出了根据一个实施例的提供沙箱环境的可编程设备的框图。
图2是示出了根据一个实施例的用于插桩(instrument)沙箱的技术的流程图。
图3是示出了根据一个实施例的用于插桩JAVA沙箱的技术的流程图。
图4是示出了根据一个实施例的用于插桩JAVA沙箱的技术的框图。
图5是示出了根据一个实施例的与本文所描述的技术一起使用的可编程设备的框图。
图6是示出了根据另一实施例的与本文所描述的技术一起使用的可编程设备的框图。
图7是其中可以实现本文所描述的技术的可编程设备的网络的框图。
具体实施方式
在下面的描述中,为了进行说明,阐述了很多具体细节以便提供对本发明的透彻理解。然而,对本领域技术人员将显而易见的是,本发明可以在没有这些具体细节的情况下实施。在其他情况下,以框图形式示出结构和设备,以便不至于使本发明变得模糊。对没有下标或后缀的标号的引用被理解为引用对应于所引用标号的全部下标和后缀实例。此外,本公开中所使用的语言主要用于可读性和指导目的,可能并非用于描绘或限定发明的主题,而是借助于确定发明主题所必需的权利要求。说明书中对“一个实施例”、“实施例”的引用意味着结合该实施例所描述的特定特征、结构或特性被包括本发明的至少一个实施例中,对“一个实施例”或“实施例”的多个引用不应该被理解为一定都引用同一个实施例。
如此处所使用的,术语“可编程设备”可以是指单个可编程设备或一起协作以执行描述为在可编程设备上执行或由可编程设备执行的功能的多个可编程设备。
虽然下面是就JAVA沙箱环境描述的,但是,下面所描述的技术不仅限于这样的实施例,而是可以用于任何沙箱环境中,其中通用沙箱可以在运行时被修改,以检测对操纵允许在该环境中从沙箱逃逸的某些沙箱功能的尝试。尽管下面的描述是就由JAVA沙箱所提供的JAVA SecurityManager()方法和EXEC()方法而言给出的,但是,也可以插桩可以被确定为可能被尝试从沙箱逃逸的利用所使用的其他方法,以提供对利用的附加检测。
下面的有关的利用是尝试逃逸由沙箱环境施加的限制的利用。还可以使用类似的技术来检测可能利用沙箱环境的其他弱点但是不尝试从沙箱逃逸的恶意软件,不管利用的本质如何,在该技术中,沙箱实现大多数这样的利用会使用的功能。然而,不管用于逃逸尝试的技术如何,寻求从沙箱逃逸的恶意软件都可能需要利用特许的方法来在沙箱之外运行代码。因此,下面所描述的技术插桩恶意软件所使用的方法,以获取由沙箱限制的特权,并被证明在检测并允许结束所有这样的逃逸尝试方面是有效的。
沙箱通常是用于保护在其上实现沙箱的系统的资源的规则集合。沙箱可以实现不同级别的保护,其中不同级别允许访问不同资源集合。最小的沙箱允许刚刚够程序运行的资源,而开放的沙箱可能允许访问主机系统通常可以访问的所有资源。典型的沙箱可能允许在沙箱中运行的程序访问处理器、其自己的存储器,并访问该程序加载而来的web服务器。
应用可以使用此处被称为利用(exploit)的技术,以获得或修改被给予应用的权限或特权,或者修改、关闭、或禁用其他安全控制。沙箱使用权限、特权以及安全控制来控制对资源的访问,并且通常限制对在沙箱中运行的应用可用的权限、特权以及安全控制。利用通常利用沙箱环境中的弱点或瑕疵。获得或修改权限、特权或安全控制是利用的一部分。从沙箱逃逸的尝试被定义为如下尝试:使用那些权限、特权或安全控制来执行被沙箱环境阻止的动作。当应用执行动作成功时,诸如在沙箱环境之外执行代码,实际的逃逸发生。下面所描述的技术提供了检测从沙箱环境逃逸的尝试的方式,允许沙箱环境防止那些动作被执行。
图1是示出了根据一个实施例的在移动设备100上运行的JAVA环境的框图,其中下面所描述的监视技术被用来检测和防止JAVA程序从沙箱逃逸。JAVA虚拟机(JVM)140提供运行时环境,其中可以执行JAVA字节码。JVM 140通常与JAVA类库一起分布,JAVA类库是实现JAVA应用编程接口(API)152的标准类库集合(以JAVA字节码表示)。这些库,与JVM 140绑定,形成JAVA运行时环境(JRE)150。
打算在JVM上运行的源代码文件110中的JAVA源代码程序,以标准化可移植二进制格式(通常采用.class文件的形式(JAVA类文件))被编译为Java字节码文件120。程序可以在不同的文件中包括许多类。为了更加容易分发大型程序,多个类文件可以以.jar文件(JAVA档案)封装在一起。然后,由JVM 140中的字节码验证器144,验证这些字节码文件120。虽然被示为实际文件,但是源代码文件和字节码文件中的任何一种或两种可以不是可编程设备100的文件系统的文件,而可以是作为输入提供到JAVA编译器或JVM 140的存储器中表示。
JVM 140通常包括执行无用单元收集(garbage collection)的存储器管理器142、字节码验证器144,以及解释器/即时(just-in-time,JIT)编译器146。JVM 140运行时执行.class或.jar文件120,通过解释JVM指令集或使用即时编译器(JIT)来模拟JVM指令集。当今,JIT编译(而非解释)用于大多数JVM 140中,以实现更快的速度。还有允许开发人员将类文件预编译为针对特定平台的本机代码的“提前”编译器。
由字节码验证器144验证字节码文件120,以确定字节码是安全的,以便没有在JVM140中运行的程序能使可编程设备100崩溃或以其它方式不适当地干扰可编程设备100上的其他操作。防止属于受信任代码的某些方法和数据结构被在同一个JVM 140内执行的不受信任代码访问或损坏。此外,还不允许常常会导致数据损坏或不可预测行为的常见程序员错误(诸如在阵列的末端之外访问或使用未初始化的指针)发生。
JVM验证器144在字节码被执行之前验证全部字节码。此验证主要包括三种类型的检查:(a)分支总是通向有效位置;(b)数据总是被初始化,引用总是是类型安全的;以及,(c)严格地控制对私有的或封装私有的数据和方法的访问。这些检查中的头两个主要在验证步骤过程中发生,验证步骤在加载类并使其适于使用时发生。第三个主要在一类数据项或方法首次被另一类访问时动态地执行。
验证器144只允许有效程序中的某些字节码序列,例如,跳跃(分支)指令只能指向同一个方法内的指令。
虽然在图1中示出了移动设备100,但是能够支持JVM 140的任何类型的可编程设备都可以支持此环境,包括,例如,个人计算机、服务器、大型机以及嵌入式设备。另外,虽然图1中的JRE 150在操作系统130下运行,但是也可以实现直接在硬件上运行而无需基础操作系统的JRE。虽然一般而言JRE 150运行最初以JAVA语言编写的程序,但是也可以将其他编程语言编译为用于在JVM 140上运行的字节码。
由JVM 140所创建的沙箱可以用于监视小程序(applet)(嵌入在网页中的JAVA程序)或独立JAVA应用的行为。如在下面的描述中所使用的,术语“应用”旨在包括小程序和独立应用两者。
图2是示出了根据一个实施例的用于动态地修改沙箱以检测从沙箱环境逃逸的尝试的一般技术200的流程图。在框210中,创建或实例化沙箱环境。在框220中,可以将监视代码注入到沙箱环境中。监视代码修改沙箱对象的一个或多个预定方法,插桩方法以检测从沙箱逃逸的尝试,而无需依赖于知晓尝试从沙箱逃逸的利用或逃逸后行为。如此,例如,监视代码不使用或依赖于利用的签名。在框230中,如果监视代码确定从沙箱逃逸的尝试已经被作出,则可以结束沙箱;可另选地,可以允许沙箱继续执行,但是结束该应用或在沙箱中运行的应用。在图2中未示出的再一个替代方案中,可以允许作出逃逸尝试的应用继续,但是可以报告或存储有关逃逸的信息,供以后分析。如果没有检测到逃逸尝试,则沙箱可以允许该应用的执行。
图3是示出了一般技术200的JAVA特定实施例的流程图。JAVA特定技术300插桩JAVA沙箱环境。在框310中,启动JVM 140,在JVM 140中创建沙箱环境,该沙箱环境限制在沙箱中运行的应用可以请求访问哪些系统资源,允许不受信任的可执行代码安全地运行。在某些实施例中,技术300使用在JVM 140被初始化之后但在启动JVM 140之前调用的premain方法来插桩JVM 140。在其他实施例中,技术300使用在启动JVM 140之后调用的agentmain方法或某种其他方法来插桩JVM 140。
在框320中,将利用检测代码注入到JVM中,插桩提供沙箱的JVM。可以以不同的方式插桩JVM的不同版本。例如,由Oracle公司所提供的JVM的版本1.7,一种比较常见的JVM,引入了可以被JVM的插桩使用的SecurityManager类,而不提供SecurityManager类的版本1.6和以前的版本可以使用涉及被称为EXEC的运行时方法的不同插桩技术。因此,在一个实施例中,在框330中,可以检查JVM的版本,并根据该检查,使用不同的处理技术。
在JVM版本1.7或更大的系统中,当应用在JVM 140内运行时,几乎每个应用都实例化SecurityManager类的SecurityManager对象。此对象被用来定义应用的安全策略:通常包括checkRead、checkWrite、checkConnect等等方法。每当危险的操作即将执行时,都由JAVA库中的代码咨询SecurityManager对象。由此,通过引发安全性异常,SecurityManager对象被给予防止操作完成的机会。
为了成功地在JAVA沙箱之外运行代码,利用必须在利用可以运行从JAVA沙箱逃逸所需的特许JAVA代码之前禁用SecurityManager对象。在一个实施例中,通过检测逻辑在java.lang.System类中挂钩(hook)System.getSecurityManager和System.setSecurityManager方法。框340和360中所示出的检测逻辑检查原始SecurityManager对象是否已经更改或禁用,在框340中,在沙箱的初始化时挂钩setSecurityManager方法以存储原始SecurityManager对象,然后,在框360中,利用getSecurityManager方法来检查SecurityManager对象是否为空或被禁用。如果SecurityManager对象已经被禁用或是空,则表明已经发生了逃逸尝试,可以结束尝试从沙箱逃逸的应用。
如上所述,JAVA环境的一些实施例,诸如JRE 1.6以及更早版本,不使用SecurityManager类或对象。在这样的实施例中,可以通过检测逻辑来挂钩Java.lang.Runtime类的EXEC方法。除SecurityManager检测逻辑之外或代替SecurityManager检测逻辑,此检测逻辑还可以用于使用SecurityManager类的JAVA环境的各实施例中。
JRE 1.6.x实施例的检测逻辑有点不同,因为攻击者无需禁用SecurityManager对象以在沙箱之外运行代码。相反,攻击者会只更改权限。如果JAVA应用试图调用诸如ClassLoader之类的特许方法,则应用将得到下列“权限被拒绝”的错误:
java.security.AccessControlException:access denied("java.lang.RuntimePermission""createClassLoader")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkCreateClassLoader(Unknown Source)
at java.lang.ClassLoader.checkCreateClassLoader(Unknown Source)
at java.lang.ClassLoader.<init>(Unknown Source)
…
在攻击应用能够回避JAVA沙箱之后,应用可以简单地调用类似于下列代码的代码,以获取完全权限:
URL localURL=new URL("file:///");
Certificate[]arrayOfCertificate=new Certificate[0];
Permissions localPermissions=new Permissions();
localPermissions.add(new AllPermission());
ProtectionDomainlocalProtectionDomain=new ProtectionDomain(new
CodeSource(localURL,arrayOfCertificate),localPermissions);
因此,在一个实施例中,JRE 1.6.x环境的检测逻辑可以挂钩总是在尝试在沙箱之外运行代码的JAVA利用中使用的某些方法,例如,Runtime.getRuntime().Exec()。在沙箱中运行的不包含尝试从沙箱逃逸的利用的应用一般不调用EXEC方法。通过将代码注入到JVM 140中以挂钩EXEC方法,每当在框350中调用EXEC方法时,都可以检查权限状态。通常,不认为JAVA应用在JAVA沙箱内具有完全权限。如果在框370中权限处于沙箱的合适级别,则可以允许执行由EXEC方法执行的代码;否则,可以结束看起来试图从沙箱逃逸的应用。虽然在图3中EXEC方法被标识为被挂钩,但是根据需要,代替EXEC或作为EXEC的补充,还可以挂钩其他方法。
任何预定的权限集合都可以被用作应用尝试使用利用来从沙箱逃逸的指示。尽管在很多情况下,利用可以将应用设置为具有完全权限,但是在某些情况下,利用只将应用设置为具有执行利用所试图的任何动作所需的权限。在某些实施例中,如果应用具有预定的特定权限,则应用可以被指示为尝试从沙箱逃逸。
在某些实施例中,代替只是结束看起来尝试从沙箱逃逸的应用,如果需要,可以结束整个沙箱或Java虚拟机140本身。可另选地,代替关闭应用、沙箱或JVM 140,检测逻辑可以简单地报告逃逸尝试。
在一个实施例中,为允许JVM 140的插桩,将代理部署为JAR文件。JAR文件manifest中的属性指定将被加载以启动代理的代理类。代理可以通过命令行界面,通过向命令行添加-javaagent:jarpath[=options]开关来加载,其中“jarpath”是到代理JAR文件的路径且“options”是代理选项。如果需要,可以在同一个命令行上多次使用javaagent开关,允许创建多个代理。可以有一个以上的代理使用同一个jarpath。可另选地,JVM 140可以实现使用动态加载来在JVM 140启动之后启动代理的机制,允许工具将代理附加于正在运行的JVM 140。
如图4所示,在初始化JVM之后,JVM组件410使用系统ClassLoader方法420来加载代理类430,该代理类430包含要被注入到JVM 140中的字节码。然后,JVM 140实例化插桩(Instrumentation)接口实现,并给出上下文,调用通过代理类430来实现的方法。代理类430注册ClassFileTransformer接口440,该接口440变换JVM 140的类文件,注入检测逻辑的字节码。
现在参考图5,框图示出了根据一个实施例的可以使用沙箱环境的可编程设备500。图5中所示出的可编程设备是包括第一处理元件570和第二处理元件580的多处理器可编程设备500。尽管示出了两个处理元件570和580,但是可编程设备500的实施例还可以只包括一个这样的处理元件。
可编程设备500被示为点对点互连系统,其中第一处理元件570和第二处理元件580通过点对点互连550耦合。图5中所示出的任何或全部互连都可以实现为多点分支总线,而并非点对点互连。
如图5所示,处理元件570和580中的每一个都可以是多核处理器,包括第一和第二处理器核(即,处理器核574a和574b和处理器核584a和584b)。这样的核574a、574b、584a、584b可以被配置成以类似于上文参考图1–3所讨论的方式执行指令代码。然而,根据需要,其他实施例可以使用是单核处理器的处理元件。在带有多个处理元件570、580的各实施例中,根据需要,每一处理元件都可以利用不同数量的核来实现。
每一处理元件570,580都可以包括至少一个共享高速缓存546。共享高速缓存546a,546b可以存储分别被处理元件的一个或多个组件(诸如核574a、574b以及584a,584b)使用的数据(例如,指令)。例如,共享高速缓存可以本地高速缓存存储在存储器532,534中的数据,用于被处理元件570,580的组件更快的访问。在一个或多个实施例中,共享高速缓存546a,546b可以包括一个或多个中级高速缓存,诸如2级(L2)、3级(L3)、4级(L4),或其他级别的高速缓存,末级高速缓存(LLC),或其组合。
尽管为清楚起见,图5示出了带有两个处理元件570,580的可编程设备,但是本发明的范围不如此受限,可以存在任意数量的处理元件。可另选地,处理元件570、580中的一个或多个可以是不同于处理器的元件,诸如图形处理单元(GPU)、数字信号处理(DSP)单元、现场可编程门阵列或任何其他可编程处理元件。处理元件580可以是与处理元件570异质的或非对称的。就包括架构、微架构、热,功耗特征等等的一系列优点的度量而言,在处理元件570,580之间可能会有各种差异。这些差异可能有效地将其本身表现为处理元件570,580之间的不对称性和异质性。在某些实施例中,各种处理元件570,580可以驻留在相同管芯封装中。
第一处理元件570还可以包括存储器控制器逻辑(MC)572和点对点(P–P)互连576和578。类似地,第二处理元件580可以包括MC 582和P–P互连586和588。如图5所示,MC 572和582将处理元件570,580耦合到相应的存储器,即,存储器532和存储器534,这些存储器可以是本地附接到相应的处理器的主存储器的部分。尽管MC逻辑572和582被示为集成到处理元件570,580中,但是在某些实施例中,MC逻辑可以是处理元件570,580之外的单独逻辑,而并非集成在其中。
处理元件570和处理元件580可以分别通过P–P互连576,586和584耦合到I/O子系统590。如图5所示,I/O子系统590包括P–P互连594和598。此外,I/O子系统590还包括将I/O子系统590与高性能图形引擎538耦合的接口592。在一个实施例中,总线549可以被用来将图形引擎538耦合到I/O子系统590。交替地,点对点互连539可以将这些组件耦合。
I/O子系统590又可以通过接口596耦合到第一链路516。在一个实施例中,第一链路516可以是外围组件互连(PCI)总线,或诸如PCI Express总线之类的总线,或另一I/O互连总线,但是本发明的范围不仅限于此。
如图5所示,各种I/O设备514可以与桥518一起耦合到第一链路516,桥518可以将第一链路516耦合到第二链路510。在一个实施例中,第二链路520可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二链路520,包括,例如,键盘/鼠标512、通信设备526(它们又可以与计算机网络503进行通信)以及数据存储单元528,诸如磁盘驱动器或可以包括代码530的其他大容量存储设备。代码530可以包括用于执行上文所描述的技术中的一个或多个的实施例的指令。进一步地,音频I/O 524可以耦合到第二总线520。
请注意,还可以构想其他实施例。例如,代替图5的点对点架构,系统可以实现多点分支总线或另一这样的通信拓朴。虽然链路516和520在图5中被示为总线,但是也可以使用任何所需类型的链路。此外,还可以使用比图5中所示出的多一些或少一些的集成芯片,来分区图5的元件。
现在参考图6,框图示出了根据另一实施例的可编程设备600。从图6中省略了图5的某些方面,以便避免模糊图6的其他方面。
图6示出了处理元件670,680可以分别包括集成存储器和I/O控制逻辑(“CL”)672和682。在某些实施例中,CL 672、682可以包括诸如上文参考图5所描述的存储器控制逻辑(MC)。另外,CL 672,682还可以包括I/O控制逻辑。图6示出了不仅可以将存储器632、634耦合到CL672,682,而且,还可以将该I/O设备614耦合到控制逻辑672,682。传统I/O设备615可以耦合到I/O子系统690。
在图5和6中所描绘的可编程设备是可以被用来实现此处所讨论的各实施例的可编程设备实施例的示意图。可以理解,图5和6中所描绘的可编程设备的各种组件可以组合在片上系统(SoC)架构中。
现在参考图7,示意地示出了示例基础结构700。基础结构700包含计算机网络702。计算机网络702可以包括当今可用的许多不同类型的计算机网络,诸如因特网、企业网络或局域网(LAN)。这些网络中的每一个都可以包含有线或无线设备,并使用任意数量的网络协议(例如,TCP/IP)来进行操作。网络702可以连接到网关和路由器(通过708来表示)、终端用户计算机706、以及计算机服务器704。基础结构700还包括与移动通信设备一起使用的蜂窝网络703。移动蜂窝网络支持移动电话以及许多其他类型的设备(例如,平板电脑,未示出)。基础结构700中的移动设备被示为移动电话710。
在基础结构(诸如图7中所示出的)中,使用沙箱环境的系统可以连接到各种网络702或703中的任何一种。这些系统可以包括任何类型的连网设备,包括移动设备710以及嵌入式可编程设备(未示出)。另外,非连网可编程设备也可以使用沙箱。如此,上文所描述的技术可以用于各种设备中。
通过修改沙箱环境以监视用于沙箱环境中的少量的预定方法,可以高效地并有效地检测允许应用从沙箱逃逸的利用,很少或没有假阳性,而无需依赖于基于签名的技术或监视利用后行为。如此,可以检测到未知的利用和不生成可疑行为的强指示的利用。
下列示例涉及进一步的实施例。
示例1是在其上存储了指令的机器可读介质,包括在由可编程设备执行时使可编程设备执行下列操作的指令:在所述可编程设备上实例化沙箱环境;以及将代码注入到所述沙箱环境中,所述代码包括指令,当由所述可编程设备执行时,所述指令插桩所述沙箱的方法以使所述可编程设备检测从所述沙箱环境逃逸的尝试,而无需依赖于知晓尝试从所述沙箱环境逃逸所使用的利用。
示例2包括示例1的主题,其中所述方法是提供对安全性管理器对象的引用的方法。
示例3包括示例2的主题,其中所述指令在被执行时插桩所述沙箱的方法以使所述可编程设备检测从所述沙箱环境逃逸的尝试而无需依赖于知晓尝试从所述沙箱环境逃逸所使用的利用,包括在被执行时使所述沙箱的方法执行下列各项的指令:响应于对所述方法的调用返回指示不存在安全性管理器对象的值,指示发生了逃逸尝试。
示例4包括示例2的主题,其中所述指令在被执行时插桩所述沙箱的方法以使所述可编程设备检测从所述沙箱环境逃逸的尝试而无需依赖于知晓尝试从所述沙箱环境逃逸所使用的利用,包括在被执行时使所述沙箱的方法执行下列各项的指令:如果对所述方法的调用返回指示所述安全性管理器对象已经被禁用的值,则指示发生了逃逸尝试。
示例5包括示例1的主题,其中所述方法是在所述可编程设备上的单独进程中执行指定命令的方法。
示例6包括示例5的主题,其中所述指令在被执行时插桩所述沙箱的方法以使所述可编程设备检测从所述沙箱环境逃逸的尝试而无需依赖于知晓尝试从所述沙箱环境逃逸所使用的利用,包括在被执行时使所述沙箱的方法执行下列各项的指令:检查调用方法的应用的权限状态;以及,响应于所述应用具有预定的权限集合,指示逃逸尝试。
示例7包括示例5的主题,其中所述指令在被执行时插桩所述沙箱的方法以使所述可编程设备检测从所述沙箱环境逃逸的尝试而无需依赖于知晓尝试从所述沙箱环境逃逸所使用的利用,包括在被执行时使所述沙箱的方法执行下列各项的指令:检查调用方法的应用的权限状态;以及,响应于所述应用具有一个或多个预定权限,指示逃逸尝试。
示例8包括示例5的主题,其中所述指令在被执行时插桩所述沙箱的方法以使所述可编程设备检测从所述沙箱环境逃逸的尝试而无需依赖于知晓尝试从所述沙箱环境逃逸所使用的利用,包括在被执行时使所述沙箱的方法执行下列各项的指令:检查调用方法的应用的权限状态;以及,响应于所述应用具有预定的权限,指示逃逸尝试。
示例9包括示例1–8中的任何一个的主题,其中在由所述可编程设备执行时使所述可编程设备将代码注入到所述沙箱环境中的所述指令包括在执行时使所述可编程设备在所述沙箱环境启动之后将代码注入到所述沙箱环境的指令。
示例10包括示例1–8中的任何一个的主题,其中所述指令还包括在执行时使所述可编程设备结束尝试从所述沙箱环境逃逸的应用的指令。
示例11包括示例1–8中的任何一个的主题,其中所述指令还包括在执行时使所述可编程设备报告尝试从所述沙箱环境逃逸的应用的指令。
示例12包括示例1–8中的任何一个的主题,其中所述指令还包括在执行时使所述可编程设备结束或报告尝试从所述沙箱环境逃逸的应用的指令。
示例13是一种检测从可编程设备的基于字节码的沙箱环境逃逸的尝试的方法,包括:在所述可编程设备上实例化所述沙箱环境;将字节码注入到所述沙箱环境的预定方法;在由应用调用所述方法时,执行所述预定方法中的所述字节码;以及,指示所述应用从所述沙箱逃逸的尝试,而无需依赖于知晓所述应用尝试从所述沙箱逃逸所使用的利用。
示例14包括示例13的主题,其中所述沙箱环境的所述预定方法是提供对安全性管理器对象的引用的方法。
示例15包括示例14的主题,其中指示由所述应用从所述沙箱逃逸的尝试包括:响应于所述方法指示不存在安全性管理器对象,指示从所述沙箱逃逸的尝试。
示例16包括示例13的主题,其中所述沙箱环境的所述预定方法是允许所述应用在所述可编程设备上的单独进程中执行命令的方法。
示例17包括示例16的主题,其中在所述预定方法中执行所述字节码包括:检查所述应用的权限状态;以及,其中指示逃逸尝试包括:响应于所述应用具有预定的权限状态,指示从所述沙箱逃逸的尝试。
示例18包括示例13的主题,其中所述沙箱环境的所述预定方法是提供对安全性管理器对象的引用的方法;以及,其中指示由所述应用从所述沙箱逃逸的尝试包括:响应于所述方法指示不存在安全性管理器对象或所述安全性管理器对象已经被禁用,指示从所述沙箱逃逸的尝试。
示例19包括示例13的主题,其中所述沙箱环境的所述预定方法是允许所述应用在所述可编程设备上的单独进程中执行命令的方法;以及,其中执行所述预定方法中的所述字节码包括:检查所述应用的权限状态;以及,其中指示逃逸尝试包括:响应于所述应用具有预定的权限状态,指示从所述沙箱逃逸的尝试。
示例20是包括执行在示例13–19中的任何一个中阐述的方法的装置的设备。
示例21是一种用于允许应用在沙箱环境中运行的系统,包括:可编程设备;用于所述可编程设备的操作系统;被配置成在所述操作系统下执行的虚拟机环境,所述虚拟机环境在由所述可编程设备执行时创建沙箱环境;检测逻辑,所述检测逻辑插桩所述沙箱环境的方法以检测在所述沙箱环境中执行的应用尝试从所述沙箱环境逃逸,而无需依赖于知晓尝试从所述沙箱环境逃逸所使用的利用,其中所述虚拟机环境包括:代理类对象;以及,被配置成在所述虚拟机环境的初始化时加载所述代理类对象的所述虚拟机环境的类加载器方法,以及,其中所述代理类对象被配置成将所述检测逻辑注入到所述沙箱环境的预定方法中。
示例22包括示例21的主题,其中所述检测逻辑包括字节码。
示例23包括示例21的主题,其中所述预定方法是提供对安全性管理器对象的引用的方法。
示例24包括示例23的主题,其中所述检测逻辑当被所述代理类对象注入到所述沙箱环境的预定方法中时被配置成使所述预定方法:响应于对所述方法的调用返回指示不存在安全性管理器对象的值,指示发生了逃逸尝试。
示例25包括示例21的主题,其中所述沙箱环境的所述预定方法是提供对安全性管理器对象的引用的方法;以及,其中指示由所述应用从所述沙箱逃逸的尝试包括:响应于所述方法指示不存在安全性管理器对象或所述安全性管理器对象已经被禁用,指示从所述沙箱逃逸的尝试。
示例26包括示例21的主题,其中所述沙箱环境的所述预定方法是允许所述应用在所述可编程设备上的单独进程中执行命令的方法;以及,其中执行所述预定方法中的所述字节码包括:检查所述应用的权限状态;以及,其中指示逃逸尝试包括:响应于所述应用具有预定的权限状态,指示从所述沙箱逃逸的尝试。
示例27包括示例21的主题,其中所述预定方法是在执行时使命令在所述可编程设备上作为单独的进程来执行的方法。
示例28包括示例27的主题,其中所述检测逻辑当被所述代理类对象注入到所述沙箱环境的所述预定方法中时被配置成使所述预定方法:检查所述应用的权限状态;以及,响应于所述应用具有预定的权限集合,指示发生了逃逸尝试。
示例29包括示例27的主题,其中所述检测逻辑当被所述代理类对象注入到所述沙箱环境的所述预定方法中时被配置成使所述预定方法:检查所述应用的权限状态;以及,响应于所述应用具有预定的权限,指示发生了逃逸尝试。
示例30包括示例21–29中的任何一个的主题,其中所述检测逻辑被配置成结束尝试从所述沙箱逃逸的所述应用。
示例31包括示例21–29中的任何一个的主题,其中代理类对象被配置成在所述沙箱环境启动之后将所述检测逻辑注入到所述沙箱环境的所述预定方法中。
示例32是可编程设备,包括:处理元件,其被配置成提供沙箱环境;存储器,耦合到所述处理元件,在其上存储了指令,所述指令在由所述处理元件执行时使所述处理元件:在所述可编程设备上实例化所述沙箱环境;以及,将代码注入到所述沙箱环境中,所述代码包括指令,所述指令在由所述处理元件执行时插桩所述沙箱的方法以使所述处理元件独立于应用检测所述应用从所述沙箱环境逃逸的尝试。
示例33包括示例32的主题,其中所述方法是提供对安全性管理器对象的引用的方法。
示例34包括示例33的主题,其中所述指令在被执行时插桩所述沙箱的方法以使所述可编程设备独立于应用检测应用从所述沙箱环境逃逸的尝试,包括在被执行时使所述沙箱的所述方法执行下列各项的指令:响应于对所述方法的调用返回指示不存在安全性管理器对象的值,指示发生了逃逸尝试。
示例35包括示例33的主题,其中所述指令在被执行时插桩所述沙箱的方法以使所述可编程设备独立于应用检测应用从所述沙箱环境逃逸的尝试,包括在被执行时使所述沙箱的所述方法执行下列各项的指令:如果对所述方法的调用返回指示所述安全性管理器对象已经被禁用的值,则指示发生了逃逸尝试。
示例36包括示例32的主题,其中所述方法是在所述可编程设备上的单独进程中执行指定命令的方法。
示例37包括示例36的主题,其中所述指令在被执行时插桩所述沙箱的方法以使所述可编程设备独立于应用检测应用从所述沙箱环境逃逸的尝试,包括在被执行时使所述沙箱的所述方法执行下列各项的指令:检查所述应用的权限状态;以及,响应于所述应用具有预定的权限集合,指示逃逸尝试。
示例38包括示例36的主题,其中所述指令在被执行时插桩所述沙箱的方法以使所述可编程设备独立于应用检测应用从所述沙箱环境逃逸的尝试,包括在被执行时使所述沙箱的所述方法执行下列各项的指令:检查所述应用的权限状态;以及,响应于所述应用具有预定的权限,指示逃逸尝试。
示例39包括示例32–38中的任何一个的主题,其中在由所述可编程设备执行时使所述可编程设备将代码注入到所述沙箱环境中的所述指令包括在执行时使所述可编程设备在所述沙箱环境启动之后将代码注入到所述沙箱环境的指令。
示例40包括示例32–38中的任何一个的主题,其中所述指令还包括在执行时使所述可编程设备结束尝试从所述沙箱环境逃逸的所述应用的指令。
示例41包括示例32–38中的任何一个的主题,其中所述指令还包括在执行时使所述可编程设备报告尝试从所述沙箱环境逃逸的应用的指令。
示例42是一种用于检测从可编程设备的基于字节码的沙箱环境逃逸的尝试的设备,包括:用于在所述可编程设备上实例化所述沙箱环境的装置;以及,用于将字节码注入到所述沙箱环境的预定方法的装置;用于在由应用调用所述方法时,执行所述预定方法中的所述字节码的装置;以及,用于指示所述应用从所述沙箱逃逸的尝试,而无需依赖于知晓所述应用尝试从所述沙箱逃逸所使用的利用的装置。
上文的描述只是说明性的,而不是限制性的。例如,上文所描述的各实施例可以彼此相结合地使用。在审阅上面的描述之后,许多其他实施例对本领域的技术人员是显而易见的。
Claims (22)
1.一种可编程设备,包括:
处理元件,被配置成提供沙箱环境;
存储器,耦合到所述处理元件,在其上存储了指令,所述指令在由所述处理元件执行时使所述处理元件:
在所述可编程设备上实例化所述沙箱环境;以及
将代码注入到所述沙箱环境中,所述代码包括指令,所述指令在由所述处理元件执行时插桩所述沙箱的方法以使所述处理元件:
独立于应用检测所述应用从所述沙箱环境逃逸的尝试,其中所述沙箱的方法提供对安全性管理器对象的引用;以及
当对所述方法的调用返回与安全性管理器对象的改变相关联的值时,指示发生了逃逸尝试。
2.如权利要求1所述的可编程设备,其特征在于,所述指令在被执行时插桩所述沙箱的方法以使所述可编程设备独立于应用检测所述应用从所述沙箱环境逃逸的尝试,包括在被执行时使所述沙箱的所述方法执行下列各项的指令:
响应于对所述方法的调用返回指示不存在安全性管理器对象的值,指示发生了逃逸尝试。
3.如权利要求1所述的可编程设备,其特征在于,所述指令,在被执行时插桩所述沙箱的方法以使所述可编程设备独立于应用检测所述应用从所述沙箱环境逃逸的尝试,包括在被执行时使所述沙箱的所述方法执行下列各项的指令:
如果对所述方法的调用返回指示所述安全性管理器对象已经被禁用的值,则指示发生了逃逸尝试。
4.如权利要求1所述的可编程设备,其特征在于,所述方法是在所述可编程设备上的单独进程中执行指定命令的方法。
5.如权利要求4所述的可编程设备,其特征在于,所述指令在被执行时插桩所述沙箱的方法以使所述可编程设备独立于应用检测所述应用从所述沙箱环境逃逸的尝试,包括在被执行时使所述沙箱的所述方法执行下列各项的指令:
检查所述应用的权限状态;以及
响应于所述应用具有预定的权限集合,指示逃逸尝试。
6.如权利要求4所述的可编程设备,其特征在于,所述指令在被执行时插桩所述沙箱的方法以使所述可编程设备独立于应用检测所述应用从所述沙箱环境逃逸的尝试,包括在被执行时使所述沙箱的所述方法执行下列各项的指令:
检查所述应用的权限状态;以及
响应于所述应用具有预定的权限,指示逃逸尝试。
7.如权利要 求1-6中的任何一项所述的可编程设备,其特征在于,在由所述可编程设备执行时使所述可编程设备将代码注入到所述沙箱环境中的所述指令包括在执行时使所述可编程设备在所述沙箱环境启动之后将代码注入到所述沙箱环境的指令。
8.如权利要求1-6中的任何一项所述的可编程设备,其特征在于,所述指令还包括在执行时使所述可编程设备结束尝试从所述沙箱环境逃逸的应用的指令。
9.如权利要求1-6中的任何一项所述的可编程设备,其特征在于,所述指令还包括在执行时使所述可编程设备报告尝试从所述沙箱环境逃逸的应用的指令。
10.一种检测从可编程设备的基于字节码的沙箱环境逃逸的尝试的方法,包括:
在所述可编程设备上实例化所述沙箱环境;以及
将字节码注入到所述沙箱环境的预定方法,其中所述预定方法提供对安全性管理器对象的引用;
在由应用调用所述方法时,执行所述预定方法中的所述字节码;
指示所述应用从所述沙箱逃逸的尝试,而无需依赖于知晓所述应用尝试从所述沙箱逃逸所使用的利用,其中对所述尝试的指示使用与安全性管理器对象的改变相关联的值,所述值是当所述预定方法被调用时返回的。
11.如权利要求10所述的方法,其特征在于,指示所述应用从所述沙箱逃逸的尝试包括:
响应于所述方法指示不存在安全性管理器对象,指示从所述沙箱逃逸的尝试。
12.如权利要求10所述的方法,其特征在于,所述沙箱环境的所述预定方法是允许所述应用在所述可编程设备上的单独进程中执行命令的方法。
13.如权利要求12所述的方法,
其中执行所述预定方法中的所述字节码包括:
检查所述应用的权限状态;以及
其中指示逃逸尝试包括:
响应于所述应用具有预定的权限状态,指示从所述沙箱逃逸的尝试。
14.一种用于允许应用在沙箱环境中运行的系统,包括:
处理器;
耦合到所述处理器的存储器;
存储在所述存储器上的沙箱指令,包括在由所述处理器执行时使所述处理器实例化沙箱环境的指令;以及
存储在所述存储器上的沙箱插桩指令,包括在由所述处理器执行时使所述处理器执行下列操作的指令:
执行所述沙箱指令以实例化所述沙箱环境;以及
将代码注入到所述沙箱环境的预定方法,所述代码包括指令,所述指令在由所述处理器执行时,使所述处理器插桩所述沙箱的方法以检测在所述沙箱环境中执行的应用尝试从所述沙箱环境逃逸,而无需依赖于知晓尝试从所述沙箱环境逃逸所使用的利用,其中所述预定方法提供对安全性管理器对象的引用;以及
当对所述方法的调用返回与安全性管理器对象的改变相关联的值时,指示发生了逃逸尝试。
15.如权利要求14所述的系统,其特征在于,被注入到所述预定方法中的所述代码包括字节码。
16.如权利要求14所述的系统,其特征在于,被注入到所述沙箱环境的所述预定方法的所述代码包括指令,所述指令在由所述处理器执行时,使所述预定方法响应于对所述方法的调用返回不存在安全性管理器的值,指示发生了逃逸尝试。
17.如权利要求14所述的系统,其特征在于,所述预定方法是在所述处理器上的单独进程中执行命令的方法。
18.如权利要求17所述的系统,其特征在于,被注入到所述预定方法中的所述代码包括指令,所述指令在由所述处理器执行时,使所述预定方法:
检查所述应用的权限状态;以及
响应于所述应用具有预定的权限集合,指示发生了逃逸尝试。
19.如权利要求17所述的系统,其特征在于,被注入到所述预定方法中的所述代码包括指令,所述指令在由所述处理器执行时,使所述预定方法:
检查所述应用的权限状态;以及
响应于所述应用具有预定的权限,指示发生了逃逸尝试。
20.如权利要 求14–19中的任何一项所述的系统,其特征在于,在由所述处理器执行时使所述处理器将代码注入到所述沙箱环境的所述预定方法中的所述指令包括在由所述处理器执行时使所述处理器在所述沙箱环境启动之后将所述代码注入到所述沙箱环境的所述预定方法中的指令。
21.如权利要求14–19中的任何一项所述的系统,其特征在于,被注入到所述沙箱环境的所述预定方法中的代码包括指令,所述指令在由所述处理器执行时使所述处理器结束尝试从所述沙箱环境逃逸的应用。
22.一种包括代码的机器可读介质,所述代码在被执行时使机器执行如权利要求10–13中的任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/098,299 | 2013-12-05 | ||
US14/098,299 US9223964B2 (en) | 2013-12-05 | 2013-12-05 | Detecting JAVA sandbox escaping attacks based on JAVA bytecode instrumentation and JAVA method hooking |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104700026A CN104700026A (zh) | 2015-06-10 |
CN104700026B true CN104700026B (zh) | 2018-06-29 |
Family
ID=51870869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410619045.7A Active CN104700026B (zh) | 2013-12-05 | 2014-11-05 | 用于检测从基于字节码的沙箱环境逃逸的尝试的方法、设备和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9223964B2 (zh) |
EP (1) | EP2881881B1 (zh) |
CN (1) | CN104700026B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9959405B2 (en) * | 2014-05-28 | 2018-05-01 | Apple Inc. | Sandboxing third party components |
US9552481B1 (en) * | 2014-12-30 | 2017-01-24 | Symantec Corporation | Systems and methods for monitoring programs |
US10776486B2 (en) * | 2015-06-16 | 2020-09-15 | Nec Corporation | Analysis system, analysis method, analysis device, and storage medium for analyzing operation of a program executed in an analysis environment |
US10033747B1 (en) * | 2015-09-29 | 2018-07-24 | Fireeye, Inc. | System and method for detecting interpreter-based exploit attacks |
US10135861B2 (en) | 2015-10-20 | 2018-11-20 | Sophos Limited | Mitigation of anti-sandbox malware techniques |
US9984231B2 (en) | 2015-11-11 | 2018-05-29 | Qualcomm Incorporated | Detecting program evasion of virtual machines or emulators |
CN106778239B (zh) * | 2015-11-24 | 2019-10-29 | 阿里巴巴集团控股有限公司 | 用于提高Java沙箱安全性的方法及装置 |
US10210331B2 (en) * | 2015-12-24 | 2019-02-19 | Mcafee, Llc | Executing full logical paths for malware detection |
CN105653458B (zh) * | 2016-01-06 | 2018-12-18 | 北京京东尚科信息技术有限公司 | 检测目标Java项目中的高耗时Java方法的方法和装置 |
CN106126417A (zh) * | 2016-06-17 | 2016-11-16 | 深圳开源互联网安全技术有限公司 | 交互式应用程序安全测试方法及其系统 |
US10574672B2 (en) * | 2016-07-01 | 2020-02-25 | Mcafee, Llc | System and method to detect bypass of a sandbox application |
US11055401B2 (en) * | 2017-09-29 | 2021-07-06 | Intel Corporation | Technologies for untrusted code execution with processor sandbox support |
CN109460243A (zh) * | 2018-10-17 | 2019-03-12 | 福建南威软件有限公司 | 一种基于Agentmain的生产环境在线类替换方法 |
US11263033B2 (en) * | 2018-12-28 | 2022-03-01 | Salesforce.Com, Inc. | Usage checks for code running within a secure sub-environment of a virtual machine |
CN111191224B (zh) * | 2019-07-08 | 2022-04-08 | 腾讯科技(深圳)有限公司 | 虚拟机检测的对抗方法、装置及计算机可读存储介质 |
CN110874263B (zh) * | 2019-11-06 | 2022-07-29 | 北京宝兰德软件股份有限公司 | docker容器实例监控方法及装置 |
WO2022065525A1 (ko) * | 2020-09-22 | 2022-03-31 | 라인플러스 주식회사 | 메소드 후킹을 이용한 네트워크 통신 모니터링 방법 및 시스템 |
CN112434287B (zh) * | 2020-11-20 | 2024-04-02 | 西安四叶草信息技术有限公司 | 一种检测Hook的方法、装置、设备及存储介质 |
CN114706662B (zh) * | 2022-06-08 | 2022-09-02 | 杭州比智科技有限公司 | 基于jvm沙箱实现动态模拟业务操作和数据的方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5974549A (en) * | 1997-03-27 | 1999-10-26 | Soliton Ltd. | Security monitor |
CN102792307A (zh) * | 2010-03-15 | 2012-11-21 | 赛门铁克公司 | 在虚拟环境中提供网络访问控制的系统和方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7594111B2 (en) * | 2002-12-19 | 2009-09-22 | Massachusetts Institute Of Technology | Secure execution of a computer program |
US20070261124A1 (en) * | 2006-05-03 | 2007-11-08 | International Business Machines Corporation | Method and system for run-time dynamic and interactive identification of software authorization requirements and privileged code locations, and for validation of other software program analysis results |
US20080016339A1 (en) * | 2006-06-29 | 2008-01-17 | Jayant Shukla | Application Sandbox to Detect, Remove, and Prevent Malware |
US8935789B2 (en) * | 2008-07-21 | 2015-01-13 | Jayant Shukla | Fixing computer files infected by virus and other malware |
WO2013082437A1 (en) * | 2011-12-02 | 2013-06-06 | Invincia, Inc. | Methods and apparatus for control and detection of malicious content using a sandbox environment |
RU2522019C1 (ru) * | 2012-12-25 | 2014-07-10 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ обнаружения угроз в коде, исполняемом виртуальной машиной |
US9703954B2 (en) * | 2013-01-21 | 2017-07-11 | Morphisec Information Security 2014 Ltd. | Method and system for protecting computerized systems from malicious code |
-
2013
- 2013-12-05 US US14/098,299 patent/US9223964B2/en active Active
-
2014
- 2014-11-03 EP EP14191531.4A patent/EP2881881B1/en active Active
- 2014-11-05 CN CN201410619045.7A patent/CN104700026B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5974549A (en) * | 1997-03-27 | 1999-10-26 | Soliton Ltd. | Security monitor |
CN102792307A (zh) * | 2010-03-15 | 2012-11-21 | 赛门铁克公司 | 在虚拟环境中提供网络访问控制的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2881881B1 (en) | 2021-02-17 |
EP2881881A3 (en) | 2015-07-08 |
CN104700026A (zh) | 2015-06-10 |
US9223964B2 (en) | 2015-12-29 |
US20150161381A1 (en) | 2015-06-11 |
EP2881881A2 (en) | 2015-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104700026B (zh) | 用于检测从基于字节码的沙箱环境逃逸的尝试的方法、设备和系统 | |
KR102255767B1 (ko) | 가상 머신 감사를 위한 시스템 및 방법들 | |
JP5108789B2 (ja) | オブジェクトへの制御されたアクセスを有するソフトウェアシステム | |
Cappos et al. | Retaining sandbox containment despite bugs in privileged memory-safe code | |
Shao et al. | Rootguard: Protecting rooted android phones | |
Meyerovich et al. | Object views: Fine-grained sharing in browsers | |
Vasilakis et al. | Preventing dynamic library compromise on node. js via rwx-based privilege reduction | |
CN107949846A (zh) | 恶意线程挂起的检测 | |
More et al. | Virtual machine introspection: towards bridging the semantic gap | |
Jana et al. | TxBox: Building secure, efficient sandboxes with system transactions | |
Yamauchi et al. | Additional kernel observer: privilege escalation attack prevention mechanism focusing on system call privilege changes | |
Fleischer et al. | Memory corruption attacks within Android TEEs: A case study based on OP-TEE | |
Peng et al. | μSwitch: Fast Kernel Context Isolation with Implicit Context Switches | |
WO2023031679A1 (en) | Systems and methods for inhibiting exploitations in runtime environments | |
Hiet et al. | Policy-based intrusion detection in web applications by monitoring java information flows | |
Zhan et al. | Splitting third-party libraries’ privileges from android apps | |
Yang et al. | Research on non-authorized privilege escalation detection of android applications | |
Wang et al. | Hodor: Shrinking attack surface on node. js via system call limitation | |
US20230139429A1 (en) | Privilege Metric for Evaluating the Security of a Library | |
Abimbola et al. | NetHost-sensor: Monitoring a target host's application via system calls | |
US20230367564A1 (en) | Rules processing systems and methods with just-in-time compilation for endpoint protection in kernel mode | |
Cai et al. | Enforcing ACL access control on android platform | |
Howarth et al. | Information flow control using the java virtual machine tool interface (jvmti) | |
Fernandes et al. | Anception: Application virtualization for android | |
Peppas et al. | ferify: A virtual machine file protection system against zero-day attacks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: American California Patentee after: McAfee limited liability company Address before: American California Patentee before: Mcafee, Inc. |
|
CP01 | Change in the name or title of a patent holder |