沙箱:技术和用户实例
童年的时候,我们许多人都玩过沙箱:可控制的玩耍环境,使我们能安全地建立城堡,而不用挖空后院。在计算机领域,沙箱的功能与此类似。只是在这个沙箱中,研究人员和IT技术人员玩的是比特流,而不是一堆沙子。在这篇文章中,我们会讨论应用程序沙箱、或者安全程序沙箱的概念,包括这些程序到底是什么、它们如何工作以及它们带来的漏洞是否比阻止的漏洞更多。
沙箱提供独立或者密闭的空间,能像实际的网络——但并不与实际网络相连接——一样工作。在这个孤立空间中,程序应用也可以被下载、解压和测试,然后再移植到实际的服务器上,从而(希望)能够防止恶意软件致使网络发生紊乱。
图1:运行沙箱和不运行沙箱的计算机示例
沙箱最初是为开发和测试程序而设计,现在已经演变为一个安全工具,能够将活动的程序或进程与宿主系统或本地桌面分隔开。因此,安全沙箱已成为保护系统安全的有效方法,能防止未认证或不受信的程序在网络上肆意破坏。
普通的计算机用户每天都可能会遇到多个沙箱。Google公司的Chrome浏览器使用沙箱隔离JavaScript的执行、HTML的解析以及插件的运行。这是通过让每个标签都独立运行在自己的沙箱中来完成的,从而使得Web应用程序与用户的机器隔离开。然而,在2011年二月初,Google修补了Chrome中的九个错误,包括一个沙箱逃逸漏洞。虽然其他漏洞的细节都公布了,但是Google却没有完全透露关于沙箱漏洞的全部信息。信息的不透明使人们对该款浏览器的安全性产生怀疑。如果这个漏洞允许程序突破沙箱进入到宿主系统,那么宿主系统就可能被安装恶意软件,敏感数据就存在危险。
流行的Web服务贝宝(PayPal)也利用沙箱技术为商户提供测试环境。该沙箱能在实际接受顾客的网络交易服务之前为用户提供产生和管理模拟账户的机会。但这样仍然存在问题——特别是跨站脚本(cross-site-scripting,XSS)漏洞。
Adobe系统公司在其最近发行的Flash版本中加入了沙箱安全功能,防止从本地文件系统加载的Flash文件向远端发送数据。尽管恶意黑客们已经尽力打破了Adobe的沙箱,但是沙箱功能还是是一种潜在有用的威胁防御策略。
计算机和网络取证侦查员也能从沙箱技术中获益。通过让观察员检查恶意执行程序在“自然”环境中解压和执行的情况,沙箱能限制可能的外部因素——如其他的程序或者服务——影响证据。理论上,这听起来很惊人,但实际上,沙箱可能会带来更多的漏洞。
沙箱:技术和用户实例
诸如Adobe和PayPal之类的公司引入沙箱程序,这会使他们的软件更安全吗?还是只是带来了一个潜在的受攻击层?在IT安全领域,深度防御(defense-in-depth)的目标在于分层次使用不同的安全防护方法,努力提高整体的安全现状。然而,在这种情况下,增加一个应用层意味着加入了另一个可渗透的层,可能导致恶意软件和黑客穿透沙箱并进入宿主计算机系统。
在部署沙箱之前安全管理员应问自己如下四个问题:
沙箱技术阻止哪一类威胁最有效?
对公司来说,要最佳的实现和集成沙箱技术,了解沙箱的能力和局限是必要的。不切实际的期望只会导致公司组织更加的自满,也更加脆弱。
沙箱技术不能检测的威胁是什么?
沙箱沙箱不能检测加密的病毒或其他恶意代码,迫使网络管理员不得不增加进一步的安全保护措施,结果是由于增加层次而带来了复杂性。
沙箱会带来什么风险?
沙箱会给系统带入新的安全漏洞,如潜在的堆栈溢出、访问主机系统的本地库以及其他因使用Java和C#编程继承而来的固有缺陷。进一步的风险包括安全措施或数字沙箱本身。
是否有沙箱的替代品可以达到相同的结果?
沙箱技术有助于程序员测试他们所写的代码,但依靠沙箱测试未知代码是有风险的。通常情况下简单地忽略额外的软件层会更加安全。
例如,当Adobe的沙箱运行在保护模式时,一些威胁——如键盘监视——就可能会被避免,但其他的风险——如对受限区域的访问,如注册表——可能会升高。
网友评论