网站地图
3936.net
学霸百科 没有你查不到的
Sandbox

「官网地址0365.tv」-「永久地址0365.tv」

Sandbox(沙箱)是指一种技术,在这种技术中,软件运行在操作系统受限制的环境中。由于该软件在受限制的环境中运行,即使一个闯入该软件的入侵者也不能无限制访问操作系统提供设施;获得该软件控制权的黑客造成的损失也是有限的。此外,如果攻击者要获得对操作系统的完全控制,他们就不得不攻克沙箱限制。Sandbox也提供深度防御,许多PaaS系统都提供了一个实时运行环境,它的核心就是一个沙箱应用程序,如Azu re和Google App Engime。

在计算机安全领域,沙箱是一种用于安全的运行程序的机制。它常常用来执行那些非可信的程序。非可信程序中的恶意代码对系统的影响将会被限制在沙箱内而不会影响到系统的其它部分。沙箱技术按照一定的安全策略,通过严格限制非可信程序对系统资源的使用来实现隔离。沙箱技术在实际应用中已经有多种实现方案。例如Janus,Chakravyuha,BlueBox,Cerb等系统采用拦截系统调用的方式实现。通过拦截系统调用来限制沙箱中的程序对某些重要资源的使用。这些资源是指那些对系统安全起关键作用的资源,一旦被非法使用,便会对系统安全造成严重影响。Strata系统通过一种称之为软件动态转换(Software Dynamic Translation)的技术实现沙箱。与拦截系统调用一样,软件动态转换的目的也是通过动态转换来完成对沙箱中程序的资源使用进行限制。

沙箱技术按照安全策略来限制程序对系统资源的使用,进而防止其对系统进行破坏,其有效性依赖于所使用的安全策略的有效性。由于沙箱技术是通过限制非可信程序对某些资源的访问来防止非可信程序对系统进行破坏的,因此,如果安全策略过于严格,对非可信进程的行为限制过多,则会影响到非可信进程的运行。如果安全策略过于简单,则又无法有效地防范攻击。

以Java为例。从安全角度考虑,小应用程序对系统的利用是有范围限制的,一般通俗地称之为“沙箱”。意译过来是指小应用程序不能做某些事情,因为Java不允许它们做。以下是Java小应用程序不能做到的:

1、除了它们的出处外,建立与其它主机的连接(使它们不能连接其它系统获取或发送未授权代码)。

2、阅读所有系统特性(不允许它们进入可能产生危险或受到限制的区域)。

3、定义本身方式或调用库(使它们在运行时间不能更改自身代码)。

4、在运行它们的主机卜读写文件(使它们不能传递病毒、特洛伊木马和间谍程序)。

这些限制是防止小应用程序危害系统安全和数据的完整性。这种设计最初是为了防止代码破译者为达到自己罪恶的目的,使用Java基本功能将代码从一台计算机转移到另一台计算机。

通过在受限操作系统环境中执行软件来实现沙箱,从而控制进程可以使用的资源(例如,文件描述符,存储器,文件系统空间等)。

Sandbox实现的示例包括以下内容:

GoogleSandboxed API 。

监狱:网络访问限制和受限制的文件系统命名空间。Jails最常用于虚拟主机。

基于规则的执行使用户能够完全控制哪些进程被启动,生成(由其他应用程序生成),或者允许将代码注入其他应用程序并通过让系统为用户或程序分配访问级别来访问网络。一套坚定的规则。它还可以控制文件/注册表安全性(哪些程序可以读写文件系统/注册表)。在这样的环境中,病毒和特洛伊木马感染计算机的机会较少。SELinux和Apparmor安全框架是Linux的两个这样的实现。

Native Client是一个Sandbox,用于高效安全地在浏览器中运行已编译的C和C ++代码,与用户的操作系统无关。

能力系统可以被认为是一种细粒度的沙盒机制,其中程序在生成时被赋予不透明的令牌,并且能够根据它们持有的令牌来执行特定的事物。基于功能的实现可以在从内核到用户空间的各个级别上工作。基于功能的用户级Sandbox的示例涉及Web浏览器中的HTML呈现。

安全计算模式(seccomp)是一个内置在Linux内核中的Sandbox。在严格模式下激活时,seccomp仅允许write(),read(),exit()和sigreturn()系统调用。

HTML5具有用于iframe的“Sandbox”属性。

Java虚拟机包括一个Sandbox,用于限制不受信任代码的操作,例如Java applet。

.NET公共语言运行时提供代码访问安全性以强制限制不受信任的代码。

软件故障隔离(SFI),允许通过将所有存储,读取和跳转汇编指令打包到隔离的内存段来运行不受信任的本机代码。

Windows Vista和更高版本包括运行的“低”模式进程,称为“用户帐户控制”(UAC),它只允许写入特定目录和注册表项。

Sandbox的一些用例包括以下内容:

在线评判系统,用于在编程竞赛中测试程序。

新一代的pastebins允许用户在pastebin的服务器上执行粘贴的代码片段。