我们许多人都玩过沙盒:在一个固定的环境内安全地建造城堡且不需要进行挖掘工作。就计算而言,沙盒有着类似的作用。只不过在这一沙盒中,研究人员和IT技术人员堆砌的不是沙粒,而是数据。我们将在本文中讨论应用沙盒或者说安全沙盒程序的概念,其中包括对其概念的介绍,及其工作方式的介绍,还会讨论它们是否会带来更多漏洞。
在隔离区域或限定区域中运行沙盒就好像在一个模拟的网络环境中一样,只不过它没有真正联网。可疑程序和应用被转移到真实服务器之前,我们可在这个隔离区域中对它们进行下载,解压和测试等操作,从而达到拦截恶意程序的目的。
沙盒最初设计的意图就是用于程序开发与测试,而现在它已经演化为一种安全工具,可以将现用程序和进程与主系统或本地桌面隔离开。因此,安全沙盒已经成为保障系统安全,使其免受未授权程序侵害的有效方法。
一般来说,电脑用户每天都可能遭遇大量沙盒。谷歌的Chrome浏览器采用沙盒技术来隔离JavaScript执行,HTML 分析和插件。在其沙盒中运行的每个标签就可以实现这一操作,由此便可以将Web应用与用户电脑隔离开。但是早在2011年2月,谷歌就修复了Chrome中的九个bug,包括躲避沙盒漏洞等。在大部分bug细节提交的同时,谷歌却没打算披露沙盒漏洞的相关信息。透明度的缺乏给浏览器的安全问题打上了一个问号。如果漏洞可以通过沙盒到达主系统,那么恶意软件就可以安装到主机上,敏感数据就可能泄露。
一些比较有名地网站服务,如Paypal, 同样利用沙盒技术为客户创建测试环境。沙盒为用户提供了创建和管理虚拟帐户的机会,比起直接部署服务接受客户的Web交易,前者更具优越性。不过,问题也由此产生,跨站点脚本攻击就是个例子。
在最近发布的Flash中,Adobe 系统公司利用沙盒的安全性能阻止Flash文件从本地文件系统加载,从而避免它将数据传送到远程系统。当黑客竭尽所能破坏Adobe的沙盒时,这些特色性能仍然可以作为解除威胁的潜在帮手。
电脑和网络法庭调查员或许会受益于沙盒技术。因为调查员可以在一个模拟的环境中解压执行代码,因此他们可以观察恶意代码的可操作性。沙盒可以限制外部影响,比方其他程序或服务,对证据篡改的可能性。理论上,这听起来有些惊人,不过实际上可能引发更多漏洞。
沙盒:技术和使用案例
类似Adobe和Paypal这样的公司真的可以通过沙盒程序保护自己的软件吗?在IT安全领域,深层防御旨在部署不同的安全层级,从而改进整体安全态势。不过在这个案例中,添加另一个层级更像是添加一个恶意软件和黑客可以穿越沙盒,访问电脑的可渗透层级。
安管必须在部署沙盒前问问下列四个问题:
沙盒阻止哪类威胁最有效?了解沙盒的功能和局限性才能对其进行最佳部署。不实际的期望只会带来更大的失望。
沙盒能够查探到哪些威胁?沙盒检测不到加密额病毒或其他机密的恶意代码,如此一来,就迫使网管不得不增设其他安全措施,所以层级的增多会增加工作的复杂性。
沙盒会招致什么威胁?沙盒可能引来可被利用的新威胁,如潜在的堆栈溢出,对主系统上本地库的访问以及与Java和C#编码相关的内部缺陷。更有甚者,风险可能就是安全措施和数据沙盒本身。
有没有沙盒替代物可以达到同样的效果呢?虽然沙盒可以有效帮助程序员测试自己的代码,但是仅仅依赖于沙盒测试未知代码是有风险的。时常删除多余的软件层级会更安全。
例如,当Adobe沙盒处于受保护模式时,一些威胁,如监控击键,是可以避免的。不过还有一些威胁,如对注册表等受保护区域的访问,则可能升级。
潜在的沙盒漏洞
沙盒可以分割成三个基本的隔离区间,包括核心语言注释器,标准库和不受信任应用的代码。在这三个区间之中,标准库包含了要执行的例行步骤,如网络连接和密码使用方法,是最容易受侵害的。它与那些用Java或C#编库的常见操作以及这些语言的内在缺陷,如堆栈溢出漏洞,有着直接关联。事实上,C#不仅安全性不佳,而且还不会允许对主系统上本地库的访问。
许多个人用户可能对带有虚拟机的沙盒感到困惑;这可能是因为许多企业都将虚拟机当做沙盒。这或许和在家用电脑上的Web浏览器中添加的安全性能一样,不过不推荐大家测试可疑程序或在保存有敏感数据的系统上使用。
随着虚拟机在个人电脑上的普及,黑客现在可以编写出一种能试探虚拟机是否通过运行进程,注册表和文件系统等运行虚拟机。它或许还会寻找虚拟机硬件以及处理指令。因此,将虚拟机作为沙盒使用是非常危险的操作。
最后,我们要指出安全沙盒并非万能药。沙盒技术是用来将代码从主系统分离的;不过,不同的安全漏洞还是不经意间出现。所以,和其他安全措施一样,风险评估和降低风险也是非常重要的安全措施。沙盒技术不仅会带来多种效益,还可能使使用该技术的人沾沾自喜。虽然深层防御是一种很好的策略,但是我们仍然要记住:每增加一个安全层级,可利用的漏洞数量也在上升。
各种形式的安全都会产生不经意的影响,沙盒技术亦是如此。所以,仅仅依靠沙盒技术来保障应用的完整性本身就是一个错误。合适的应用安全需要不同层级的安全部署,这些层级协作起来才能提供一个健全的,多层级的应用防御态势。沙盒技术应用得当当然是具有潜力的,不过我们也要意识到它的危险性;否则,就可能危急应用。