acm-header
登录

ACM通信

研究突出了

技术角度:使浏览器扩展安全


万维网在过去几年中发展迅速。为了使最终用户能够访问Web上丰富而动态的内容,Web浏览器也得到了快速的发展,并且不断地添加新的功能(通常以扩展和插件的形式)。与软件的情况一样,驱动浏览器及其扩展的代码的大小和复杂性的显著增加导致了程序缺陷(bug)的增加。有些bug会让浏览器崩溃。不幸的是,其他的是安全漏洞,攻击者可以利用它们侵入最终用户的机器,安装恶意软件,并窃取敏感信息。事实上,浏览器和扩展漏洞已经成为网络犯罪分子破坏网络用户安全并最终赚钱的主要渠道。

为了防止攻击者利用程序缺陷,在软件部署之前识别和修复缺陷是至关重要的。这一点尤其重要,因为用户升级很慢,即使最终提供了补丁。期望开发人员编写没有任何错误的软件是不现实的。因此,我们需要能够自动检测漏洞的工具,尤其是那些可能被攻击者利用的漏洞。

下面的文章描述了VEX,一个专门用于识别Firefox浏览器扩展中的安全漏洞的系统。这些扩展是为Firefox浏览器提供新功能或增强现有特性的JavaScript插件。与核心浏览器相比,扩展通常是由在编写安全、健壮代码方面经验较少的程序员开发的。因此,VEX这样的工具对于确保安全的Web体验特别重要。

VEX的核心是一个静态源代码分析组件,它检查由潜在的不安全数据流导致的安全漏洞。也就是说,系统扫描扩展的JavaScript代码,以查找不受信任的输入(可能由攻击者控制)可能到达安全相关函数的程序路径。如果存在这样的路径,攻击者就有可能制造恶意输入,欺骗与安全相关的函数,使其执行开发人员意想不到的操作。例如,攻击者可能在输入中包含恶意代码,这些代码稍后由扩展在浏览器上下文中执行。这可能导致各种安全问题,例如,攻击者可以窃取cookie,并接管受害者和网上银行网站之间的会话,或攻击者可以直接从表单字段窃取密码,或他可以显示一个令人信服的钓鱼网站给用户。当然,VEX不能找到所有可能的安全漏洞,但它涵盖了一类重要的常见和关键的bug。与安全性一样,没有一种方法可以解决所有问题,这个系统是向正确方向迈出的重要一步。

VEX的创建者必须克服的关键挑战是静态代码分析是一个困难的问题。虽然精确的静态分析通常很难,但对于用JavaScript编写的程序来说尤其困难。原因是JavaScript是一种非常动态的语言。它可以动态地执行代码;也就是说,将在运行时执行的程序的某些部分在源代码中不存在。相反,它们是由应用程序在运行时构建的。此外,Firefox扩展不是独立工作的,而是与浏览器紧密集成的。这意味着它调用浏览器提供的许多函数,例如访问Web页面。因此,静态分析不能孤立地查看程序,而必须将这些与浏览器的交互也考虑在内。我鼓励您阅读这篇文章,以发现作者是如何实现这一分析的。


像VEX这样的工具对于确保安全的Web体验特别重要。


静态分析非常棒,因为它涵盖了所有程序路径。然而,可靠的静态分析也会引发许多误报(也就是说,系统声称存在漏洞,但实际上并不存在)。VEX力求在覆盖尽可能多的漏洞和尽量减少误报之间取得平衡。也就是说,虽然可能会出现错误,但假阳性率很低。这使得该系统在实际应用中具有一定的实用性。毕竟,对于每个警报,必须人工调查报告的问题。

作者通过在2,460个扩展上运行VEX,证明了VEX在实践中可以很好地工作。该系统发现了许多安全问题,包括7个以前不为人知的漏洞。文中详细介绍了这些bug的实例,以及VEX的细节。

回到顶部

作者

克里斯托弗克鲁格尔chris@cs.ucsb.edu)是加州大学圣巴巴拉分校的副教授,并获计算机科学尤金Aas讲座。


©2011 acm 0001-0782/11/0900 $10.00

如果您不是为了盈利或商业利益而制作或分发本作品的部分或全部,并在第一页注明本通知和完整引用,则允许您免费制作本作品的部分或全部数字或纸质副本,供个人或课堂使用。本作品的组成部分必须由ACM以外的其他人享有版权。信用文摘是允许的。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,需要事先获得特定的许可和/或费用。请求发布的权限permissions@acm.org或传真(212)869-0481。

数字图书馆是由计算机协会出版的。版权所有©2011 ACM股份有限公司

Baidu
map