专家称:沙箱技术改善安全之余 仍有不足

安全
Adobe系统公司和其他软件厂商已经将沙箱(sandboxing)技术作为其应用程序安全策略的重要组成部分,沙箱技术能够将特定的进程与宿主系统的内存隔离开。采用沙箱技术的目标是阻止攻击者接触关键的系统文件,防止攻击者窃取敏感数据。

Adobe系统公司和其他软件厂商已经将沙箱(sandboxing)技术作为其应用程序安全策略的重要组成部分,沙箱技术能够将特定的进程与宿主系统的内存隔离开。采用沙箱技术的目标是阻止攻击者接触关键的系统文件,防止攻击者窃取敏感数据。但最近一位安全研究人员指出,部署沙箱技术的方式存在固有缺陷,精明的黑客能够绕过沙箱进入保存在用户电脑上的Adobe Flash文件。位于弗吉尼亚Fairfax的 Invincea公司创始人兼首席科学家、网络安全专家Anup Ghosh说,沙箱技术开发于20世纪90年代,直到现在才成为主流的应用。除了Adobe,智能手机平台制造商使用沙箱技术隔离应用程序与设备上的不同功能,浏览器供应商采用沙箱技术隔离浏览器的渲染引擎。在本次采访中,Ghosh介绍了沙箱技术的基本知识,解释了为什么使用沙箱是一个正确的方向,并指出了目前此种技术的实现具有的一些弱点。

问:什么是沙箱?为提高安全性,软件供应商们以这样或那样的方式使用沙箱多长时间了?

[[18864]] Anup Ghosh:早在20世纪90年代后期,美国国防高级研究计划局(DARPA)资助了一些项目,发展了沙箱技术。沙箱技术旨在阻止不受信任的代码执行恶意操作。与直接运行程序代码相比,沙箱最重要的属性是能够允许不完美的代码进行运行和被渗透,同时不会对宿主系统造成损害。这就是沙箱的作用。隔离软件与操作系统是很重要的概念,因为对于不在沙箱中运行的软件来说,一个缺陷就可能导致桌面系统的全面崩溃。如今我们在市场上见到的沙箱都是嵌入到主流的商业产品中的。谷歌浏览器内为其渲染引擎部署了一个沙箱。Adobe Reader X内部也有一个沙箱,当你打开一个PDF文件时,Adobe Reader X使用的渲染引擎就会在沙箱中运行。

问:那我们可以认为,软件制造商正在试着开发独立运行、不依赖于操作系统和服务器的应用程序,对吗?

Ghosh:这确实是目前某些沙箱系统的工作,但实际上这是虚拟化技术应该做的,而非沙箱技术。Java虚拟机(JVM)就是这样一个例子。例如,利用沙箱,Google可以发现你将要访问的网页(含有JavaScript内容)存在的恶意内容。Google知道在其JavaScript引擎中会存在缺陷,而且他们不可能全部发现这些缺陷,也不可能提前发现。使用沙箱背后的想法在于,即使JavaScript引擎中存在缺陷,即使有黑客程序能够利用这个缺陷,那么鉴于JavaScript引擎运行于谷歌浏览器的沙箱之内,黑客行为也不可能成功。简单地说,他们的想法就是将恶意行为包裹在沙箱之内。这是朝着正确方向迈进的一步,程序员可以不用再苛求完美的代码——我们知道他们也写不出完美的代码。但是,应用程序级的沙箱还远远不够。沙箱的基本功能设计涉及截断所有被认为有可能被黑客利用的系统调用。举个例子,对Adobe Flash插件的分析表明,该插件会将所有被Adobe Flash调用的通信协议列入黑名单,已知的是他们至少忘记列入某一个协议了,谁知道未知的还有多少。所以从根本上来说,试图列出所有可能被黑客利用的系统调用并尝试截断它们的方法是不够鲁棒(robust)的。对于隔离用户可能从桌面运行的未授信代码,我们做得还远远不够。

问:当谷歌浏览器推出的时候它就具有沙箱功能吗?他们在沙箱中运行第三方组件?

Ghosh:实际上,他们在沙箱中运行他们自己的渲染器。至少在推出浏览器的时候,他们没有支持在沙箱中运行第三方组件。后来,Adobe公司为谷歌浏览器的Flash插件加入了沙箱。

问:我们并没有在许多应用程序中看到有沙箱。对程序员来说创建沙箱功能真的很难吗?

Ghosh:创建沙箱功能确实需要重新设计和重写应用程序。如果你分析一下Adobe Reader X,你会发现它是与Adobe Reader 9.x不同的全新的代码库。这就是建立沙箱不那么容易的部分原因。因为目前人们采用的沙箱实现办法,要求程序员思考出所有可能被攻击者用来攻击系统的代码运行方式。他们建立了一个模型,显示某段代码可能会调用文件系统,而我们可能会要求允许这些文件读取操作,但不要让该段代码获得任何系统权限。于是,程序员们不得不编写代码,绕过系统权限。Reader X的沙箱有一个明显之处,开发它的程序员决定不试图阻止程序对文件的读取,而是阻止机器将这些文件发送给某些远端服务器。

问:当谈论Android、Apple甚至是Windows的智能手机时,我们不时会听到沙箱。这里所说的沙箱与我们前面说的是同一个概念吗?

Ghosh:是的。Android为运行应用程序部署了一个名为Dalvik的JVM。当你运行Andorid应用的时候,Java虚拟机就如同沙箱,而且Java虚拟机很优秀,它已经使用了很长一段时间。问题是许多应用要求沙箱之外的权限。作为用户,当你下载这样一个应用时,你将被要求给予该应用程序打破沙箱的权限。当然,作为用户,你的回答几乎总会是“是”,因为你想使用该应用的全部功能。你需要给它GPS、摄像头、麦克风或者电话的权限。所有这些操作基本上打破了整个沙箱。所以,让用户为应用程序授权这样的模型并不能保护用户,因为大多数时候用户并没受到做出良好安全决策的必要训练。

问:Adobe正在使用的是协议处理黑名单(protocol handler blacklists),安全研究员Billy Rios指出这是一个弱点。什么是协议处理黑名单?还有其他方法可以屏蔽特定的协议吗?

Ghosh:他们为用户从磁盘加载的所有Flash文件设定了一个要求。要求是当Flash文件运行时,该文件不能够进行任何出站通信。他们担心的风险是,Flash文件有可能隐藏着恶意软件,能在用户毫无察觉的情况下读取敏感文件,然后通过网络发送出去。这是安全性上的要求。他们实现了一个沙箱来防止这种数据外泄的发生。实现的方法是举出所有你能够向外发送数据的方式。他们列举了不同的网络协议。我们并不知道他们都列出了哪些协议,但我们知道他们不可能列出所有的。Billy Rios知道这种方法不是完备的,所以,他只需要找到一种不在黑名单上的协议即可(破解Adobe的沙箱)。他需要的只是一种泄漏桌面上所有数据的协议。

责任编辑:佟健 来源: TechTarget中国
相关推荐

2011-04-14 11:17:00

Symbian AnnSymbian诺基亚

2012-11-08 17:33:00

网络安全谷歌

2012-04-23 09:50:11

宽带提速宽带

2011-01-04 09:21:00

2013-07-03 11:29:18

100G技术成本

2011-12-29 10:17:59

2012-03-07 10:56:36

2009-11-11 10:41:05

2013-04-19 09:10:23

SDN大数据Internet2

2009-11-26 09:37:04

2009-12-04 19:14:50

2010-08-11 13:46:01

Flex安全沙箱

2021-09-14 09:17:55

数据库安全网络安全网络攻击

2021-06-11 15:12:19

网络安全数据技术

2011-11-25 09:34:52

2014-02-28 13:52:29

RSA2014云安全

2012-10-09 09:50:26

2011-12-26 15:29:07

宽带

2010-07-29 15:36:23

Flex安全沙箱
点赞
收藏

51CTO技术栈公众号