Fortify Software公司记录下了安全企业宣称的在Web 2.0应用中“普遍深入的和关键的”攻击是什么——特别是,在攻击者可以使用JavaScript的弱点通过模仿信任用户来偷取关键数据的能力。
据国外媒体报道,Fortify Software公司记录下了安全企业宣称的在Web 2.0应用中“普遍深入的和关键的”攻击是什么——特别是,在攻击者可以使用JavaScript的弱点通过模仿信任用户来偷取关键数据的能力。
弱点攻击——可以导致称为JavaScript Hijacking的攻击——已经在最大的AJAX框架中发现了,包括三个服务器集成工具包:微软的ASP.Net AJAX (aka Atlas), Google 的Web Toolkit ,以及 xajax——最后一个是开源的PHP类库,用AJAX实现的。
Fortify检查客户端的库,并且发现Yahoo UI, Prototype, Script.aculo.us, Dojo, Moo.fx, jQuery, Rico 以及MochiKit中都有弱点。
在Fortify 检查的AJAX框架和客户端库中,只有DWR 2.0 (Direct Web Remoting 2.0)具有防止JavaScript Hijacking的机制。
这一点毫不惊讶,看看DWR的开发者Joe Walker在3月初编写的有关 JavaScript Hijacking 流的文章。
据Fortify所说,其他的AJAX框架并没有提供明确的保护,他们的也没有任何文档材料提到了有关安全的弱点。
Fortify Software公司的共同创始人和收席科学家Brian Chess告诉eWEEK,安全公司对这样的新闻不以为然,因为JavaScript从来就没有被认为是一种安全的方式。
“每个人都听到过,‘噢,有个JavaScript的安全问题,’并且每个人都这么说,‘噢,是的,每个人都知道JavaScript自身就有安全问题,’” Chess说。
然而,这是Chess所了解的,第一次专门把目标对准AJAX风格和Web 2.0风格的应用程序的JavaScript的类型,他说。
发生了什么,Chess说,是AJAX风格的应用程序去掉了AJAX中的X?那代表着异步的JavaScript 和 XML。因此应用程序在JavaScript中做了所有工作,特别是用它作为他们的数据传输格式。
问题就在于网络浏览器并没有像他们保护HTML或者其他的传输协议那样保护JavaScript。这就让流氓黑客抓住了大多数开发人员认为他们已经保护了的敏感数据,Chess说。
“攻击者可以把代码放到网页上,”他说。“如果他可以骗你运行你的浏览器,你的浏览器可以看起来像你,动作也像你,但是它不是你;它实际上在将数据传回给攻击者。”
JSON (JavaScript 对象符号)中的问题尤其严重,不能胜任的数据交换格式在某段时间内被认为是具有安全问题的。
这个基于文本的,人们可读的表示对象的格式用于表现对象和大部分在网络连接中传输的结构化数据。
雅虎从2005年12月开始使用JSON随意地提供一些网络服务,Google在2006年12月开始为它的GData Web协议提供JSON填充。
JSON的一个问题就是CSRF (跨网站请求伪造)允许攻击者可以绕过基于cookie的认证技术,DRW的创造者Walker在他的博客中说。
Fortify Software公司记录下了安全企业宣称的在Web 2.0应用中“普遍深入的和关键的”攻击是什么——特别是,在攻击者可以使用JavaScript的弱点通过模仿信任用户来偷取关键数据的能力。
特别是,CSRF允许用户在远程服务器上调用保护cookie的动作,因此就让“恶魔先生欺骗无辜女士从她的银行账号上把钱转移到他的账户上,” Walker写道。
Walker是一个开发人员,并且在一家Getahead公司担当顾问。
“我相信,JSON对于任何东西都是不安全,除了公共数据,除非你使用了一个不可预知的URL,”他在同一篇博客中说。
Walker说JSON的另外一个,比较少人知道的漏洞就是数组攻击,它会让恶意用户在Mozilla或者其他任何带有现代JavaScript解释器的平台上偷取JSON的数据。这实际上就是Fortify最近工作的课题。Fortify的论文可以在这里 下载。
“事实是JSON数组可以让自己成为一个有效的JavaScript语句,这让JSON更容易受到JavaScript Hijacking攻击。因为数组是通信列表的很自然的格式,他们通常用于任何应用程序需要交流多个数值的地方。换个方式说,JSON数组可以直接受到JavaScript Hijacking攻击。如果JSON对象被包裹在一些其他可以独立作为有效JavaScript语句的JavaScript构造中,那么JSON对象是最适合攻击的。”
Fortify的论文中还有更多的细节:
“网络浏览器加强了统一来源策略,为了保护用户免于恶意网络网站的欺骗。统一来源策略要求访问网页内容的JavaScript必须满足JavaScript和网页来自同一个域名。在没有统一来源策略的时候,恶意网站可以提供JavaScript代码从其他的网站上使用客户的信任书来载入敏感信息,从中选择之后,传回攻击者。”