中国开发网: 论坛: 程序员情感CBD: 贴子 496806
haitao
AJAX程序成JavaScript Hijacking目标
AJAX程序成JavaScript Hijacking目标
作者: Lisa Vaas,  出处:IT专家网, 责任编辑: 金璞, 2007-04-04 10:12  

  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在他的博客中说。

  特别是,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代码从其他的网站上使用客户的信任书来载入敏感信息,从中选择之后,传回攻击者。”

  “JavaScript Hijacking可以让攻击者绕开统一来源策略,当网络应用程序使用JavaScript来传输机密数据的时候。统一来源策略的漏洞就是它允许来自任何网站的JavaScript被任何其他网站环境所包含和执行。”

  “即使是通过恶意网站也不能直接检查所有的客户端上从易受攻击网站上载入的数据,它还是可以通过建立一个允许它执行JavaScript以及所有相关方面的尝试的环境来利用这个漏洞。因为许多的Web2.0应用程序都使用JavaScript作为数据传输机制,他们通常是容易受到攻击,然而传统的网络应用程序则不是。”

  这种弱点攻击在任何地方都有可能发生,它也确实发生了,Chess说,但是DWR例外。说到框架背后的大公司门,大多数都说他们会对弱点攻击采取措施,将会在下一个版本中进行修正。

  其中之一的微软,告诉eWEEK说它的MSRC正在做,公司正在调查新的有关用可下载的Microsoft ASP.NET AJAX框架开发的应用程序可能受到的攻击的公共报告。

  微软的发言人说,公共不知道任何使用报告的问题进行的攻击尝试,这次也没有客户受到影响。雅虎在文章发表的时候没有提供任何评论。

  Google,针对它的部分,发表了一篇文章,表明开发人员是如何在各种版本的Google网络工具集上防止Fortify描述的弱点攻击的。



  “我们计划在下一个版本的GWT中添加额外的自动化的安全措施,在未来的几星期内会有结果,作为安全测量开发人员自己采取的措施的补充,”Google的发言人补充说。

  这些公司已经研究过安全漏洞了,并且知道要采取措施,而不是对弱点攻击视而不见,Chess说。问题就是,许多开发人员根本没有使用来自主流供应商的框架——而是用了他们自己的。不幸的是,许多这样的开发人员仍然没有意识到安全是他们的责任——正是这一点让Fortify公司重重敲响了迎击问题的大鼓。

  “当大多数人使用这些AJAX风格的组件(例如框架)的时候,他们都不知道他们是在冒更大的险,”Chess说。“我们需要与AJAX社团谈论一下问题所在,以及他们应该做什么来解决这个问题。”

  Fortify受到的来自框架维护人员的压倒性的反映就是,这个弱点攻击是要修正的头等大事,Chess说。

  令人惊讶的是,有很少的框架的开发人员说安全不是他们的问题。

  “想到居然有守卫代码的开发人员期望使用这些代码的人们去找出所有的安全结果,这真是让我疯掉了,”Chess说。

  Chess拒绝透露名字,说他仍然和他们在一起工作,他会尝试让不合作的开发人员解决易受攻击的弱点。

  为了让攻击成功,浏览器必须被哄骗着执行一些它原来不想做的事情。在一些环境中,这可以通过JavaScript的组织方式来完成。

  数组格式是相对常用的格式,用它很容易欺骗浏览器,Chess说。探索它的弱点就是制造所有错误使用某个网络浏览器所实现的安全策略的必要条件。不幸的是,Fortify发现那些条件要实现需要“惊人的时间,”他说。

  在把AJAX hijacking与,例如,缓冲溢出进行比较之后,让开发人员接受修正弱点的职责很容易。

  行业对缓冲溢出的问题已经认识了几十年,通常它们的解决也很迅速。JavaScript/AJAX/Web 2.0安全漏洞的问题是没有将有关安全是他们的责任这样的很强的信息传递给软件开发人员,Chess说。

  “使用JavaScript,企业仍然是在采用早先编程技术的早期阶段,”他说。“我们现在有机会来面对这个问难了。在它变成普遍的”不安全的编程实践方案之前,他说。

  在Fortify的论文中,如果应用程序使用JavaScript作为数据转换格式,并且如果它们处理机密数据,应用程序就是容易受到攻击的。

  没有人知道如果这个弱点现在被用于偷取数据。这是因为如果有人用它来偷窃,那么它就是无法检测的,Chess说:“现在就发现它非常好,我们不会了解它的。”

  至于如何修正它,Fortify的论文详述了细节。在很多情况下,它只需几十行代码即可。更多的兴趣,Chess说,首先在于弱点是如何形成的。

  “我们找到了一些想要用浏览器和HTML,以及……做些Web 2.0/AJAX类型的事情的家伙,他们真的不是故意要这样做的,”他说。“他们使用普通的东西和杂牌电脑来做事。有时候是无法预料的后果。你得到了拼凑在一起的AJAX。”

  我们需要的是标准和协议,以及支持它们的网络浏览器,Chess说。微软和Mozilla的维护IE和Firefox的团队“正在给路面铺橡胶,”他说。

  “一旦他们同意有些东西是标准了,它就是标准,”他说。“有很多人们试图影响他们,但是我们确实是指望着他们,并且从他们那里得到了线索。”

  这些弱点攻击很可能会进一步促进IETF 或者W3C这样的团体出台标准,Chess说。这样的组织通常是微软和Mozilla的人们相聚的地方,他们在此决定标准和协议怎么办。

  “我认为这会进一步促进他们的行动,”Chess说。“他们已经知道了邻居那里发生的问题……但是我不认为他们会理解他们所做的安全决定是多么重大的一件事情。”
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录