扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
童年的时候,我们许多人都玩过沙箱:可控制的玩耍环境,使我们能安全地建立城堡,而不用挖空后院。在计算机领域,沙箱的功能与此类似。只是在这个沙箱中,研究人员和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)的目标在于分层次使用不同的安全防护方法,努力提高整体的安全现状。然而,在这种情况下,增加一个应用层意味着加入了另一个可渗透的层,可能导致恶意软件和黑客穿透沙箱并进入宿主计算机系统。
在部署沙箱之前安全管理员应问自己如下四个问题:
例如,当Adobe的沙箱运行在保护模式时,一些威胁——如键盘监视——就可能会被避免,但其他的风险——如对受限区域的访问,如注册表——可能会升高。
沙箱的潜在漏洞
沙箱可主要分成三个部分:核心语音解释器、标准函数库以及不受信任的应用程序代码。在这三部分中,标准函数库包含了执行路径——如网络通信和密码系统的路径——是最容易受到攻击的部分。这是使用Java或C#编写这些库直接导致的,使得标准库继承了这些语言的固有缺陷,如堆栈溢出漏洞。实际上,C#将部分代码标记为不安全的不仅会弱化系统的安全性,还会轻易允许对主机系统本地库的访问。
许多人会把沙箱和虚拟机(VM)混淆,这可能是因为许多公司将虚拟机当做沙箱来使用。在典型的家用计算机上,这么做可能是适宜的,可以增加Web浏览时的安全性;但不建议在保存有敏感数据的系统上测试可疑程序。
由于在个人电脑上使用越来越广泛,虚拟机常被用于产生蜜罐或被当做常用的网络安全手段,黑帽黑客们正在编写新的恶意代码。这种恶意代码可通过寻找虚拟机在系统内存、正在运行的进程、注册表和文件系统中留下的典型特征来检测是否有虚拟机正在运行。它甚至会寻找虚拟机硬件和处理指令。因此,使用虚拟机作为沙箱(或其他安全用途)要冒极大的风险,只能吓走低级的——或机会主义的——黑客。这些黑客往往不具备相应的能力或工具来检测是否有虚拟机在运行。
最后,安全沙箱程序不是万能的。沙箱的设计目的在于分隔代码和主机系统;然而,如上所述,沙箱会在无意中带来各种安全漏洞和问题。因此,正如对待其他安全措施那样,在决定使用何种安全功能时,风险评估和风险减低是至关重要的。沙箱技术的发展不仅能寻找到新的应用场景和提供多种多样的好处,也可能导致自满和系统已经完全安全的错觉。尽管深度防御是个好的策略,但同时我们需要谨记,每增加一个应用层,可利用的漏洞也会增加。
各种新式的安全措施都有意想不到的后果,沙箱也一样。因此,单独依靠沙箱来保证程序的完整性将是一个严重的错误。正确的应用程序安全措施要求多层次的安全防护,这些措施一起工作才能提供坚固的、多方面的应用程序防御体系。正确地使用沙箱能带来好处,但是要意识到危险的存在,否则,那些有效的应用程序,可能会像昔日童年的沙砾那样,从你的指尖滑落到地。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者