IE8与点击绑架和CSRF的攻防战

原创
安全
近些年来,Web安全威胁日益严重,跨站脚本攻击、跨站请求伪造攻击、点击劫持攻击等,层出不穷。我们知道,web安全与浏览器 密切相关,因为浏览器是web应用的执行环境,就像桌面应用程序跟操作系统的关系相仿。

【51CTO.com 独家特稿】近些年来,Web安全威胁日益严重,跨站脚本攻击、跨站请求伪造攻击、点击劫持攻击等,层出不穷。我们知道,web安全与浏览器 密切相关,因为浏览器是web应用的执行环境,就像桌面应用程序跟操作系统的关系相仿。

那么,IE8能否为我们的Web安全带来一缕清风吗?

一、Web安全形势日益严峻

据微软称,IE8在开发过程中就考虑到了已有的和正在浮现的各种Web威胁。

在各种Web应用程序安全性漏洞中,最阴险的漏洞之一 称为跨站请求伪造(CSRF),人们将其称为Web漏洞中“沉睡的巨人”,并且这种漏洞修补起来也颇为不易。浏览器安全模型的设计思想是允许多个网站同时交互、站点之间可以无缝浏览,而CSRF攻击恰恰就是利用了这一点。

随着个人数据等有价值的信息不断从最终用户的PC向流行的Web应用程序迁移,CSRF及其他Web 应用程序漏洞将日益受到人们的关注。

二、XDomainRequest对象应运而生

为了抵抗CSRF攻击,IE8引入了一个XDomainRequest对象,它在允许以服务器权限跨域通信的同时还包含一些防御CSRF攻击的特殊 限制。最终用户可以通过在不使用web应用的时候退出敏感的网站以及使用InPrivate Browsing会话浏览页面来减轻CSRF攻击的影 响,因为InPrivate会话会清空Cookie,所以无法通过CSRF攻击来替换缓存的Cookie。

然而,Web应用程序本身必须设计成能够防御CSRF攻击。设计良好的Web应用程序经常通过挑战/令牌或者类似的策略来检查非受害 者用户本意发出的恶意请求来自我保护。遗憾的是,挑战/令牌和类似的策略本身却受到某些漏洞的影响,其中第一种漏洞是跨站 点脚本攻击(XSS)。如果一个由令牌保护的Web应用程序包含一个跨站点脚本攻击安全漏洞,那么它很可能会由于安全令牌失窃而导致CSRF攻击。

幸运的是,IE8包含一个XSS过滤器和一些其他功能,可以帮助抵御XSS攻击,从而降低令牌失窃的几率。除此之外,还可以利用点击劫持来协助实施CSRF攻击。点击劫持可以使用户在不知不觉中单击一个模糊的或者隐藏的web元素,从 而导致非本意的处理。一次成功的点击劫持攻击可以轻易化解通过使用户确认其交易的CSRF保护措施。

举例来说,如果一个网络商 店使用Cookie来进行身份验证,并提供了一键购买服务。 IE8显示一个模拟的web购物站点,下面是其中一张膝上型计算机的图片:

图1
网络中的某个恶意网站可以构造一个页面,用以强迫一个来自合法的商店的受害者页面嵌入一个IFRAME,并利用误导性的文本和图 像叠加在框架的关键部分。
图2
上面是一个恶意的页面,其中膝上型计算机的图片被一张猫的图片所覆盖。 如果用户已登陆商店,那么他可能在不知情的情况下受骗点击商店的页面,从而导致一个非本意的操作:
图3

上面是一个恶意的页面,显示的文本表明用户已经购买了一个膝上型计算机。 当然,这里只是一个非常简单的点击劫持攻击,但是比这复杂的点击劫持攻击也是存在的。

为了缓解点击劫持之痛,人们提出了许多方法,但是它们必须在兼容性和用户体验目前做一些折中,或者需要对现有标准作重大修 改。目前,使用最广泛也是最简单的抵御点击劫持攻击的方案称为frame busting技术,它能防止有弱点的页面被框架化,例如防 止页面被iframe引用。遗憾的是,frame-busting机制通常需要用到脚本,但是我们知道绕过脚本不是不可能的。

三、X-FRAME-OPTIONS如何抗击点击绑架

点击绑架漏洞是由Jeremiah Grossman及Robert Hansen在去年9月首度揭露,该漏洞可让骇客仿造合法网页,并将伪造的透明网页 覆盖于合法网页之上,因此使用者以为是在合法网页上的鼠标点击,实际上是触发了恶意网页的指令。

如果攻击者伪造的是网络银 行网页,那么使用者也许只是按了某一个网页链接,却可能是将钱转到陌生的帐户中,黑客也可通过此漏洞让使用者下载恶意程序 或是执行任何功能。 IE8引入了一种防止页面被框架化的机制来降低点击劫持所带来的危害。

Web开发人员可以为返回的HTML页面添加一个名为的HTTP应 答头,以规定该页面是否可以被嵌入在iframe里面。如果X-FRAME-OPTIONS的值为DENY,那么IE8就不允许该页面包含在一个框架中 。如果其值为SAMEORIGIN,那么只有在顶级浏览内容与包含X-FRAME-OPTIONS的内容不同源时,IE才会阻止该页面。

举例来说,如果http://shop.example.com/confirm.asp包含一个DENY伪指令,那么该页面就无法放入一个子框架中,无论父框架位于何处。相 反,如果X-FRAME-OPTIONS伪指令的值为SAMEORIGIN,那么该页面就可以放入到任何来自http://shop.example.com的页面的框架中。

当X-FRAME-OPTIONS阻止显示某页面时,浏览器会弹出一个本地错误页面,说明有关限制,并提供一个链接,该链接将在一个新的 窗口中打开框架。当在一个新的窗口中显示,而非在子框架中显示的话,那么页面内容也就无法为点击劫持所用了。

图4

上面是一个恶意的页面,然而,这时候仅仅展示了猫图片,来自实际的webshop的订单按钮却没有显示出来。其中的错误信息指示 ,内容无法在框架中显示。

通过使用X-FRAME-OPTIONS伪指令,Web开发人员可以立即帮助IE8用户减轻来自各种Web 应用程序攻击的威胁。当然,我们希望其 它浏览器也能实现这种X-FRAME-OPTIONS伪指令,因为作为一种防御点击劫持的手段,它相对易于部署,并且兼容性也很好。

四、Web安全任重而道远

虽然微软宣称修补了点击劫持漏洞,但这不是立竿见影的方法,因为它要求网站及Web开发人员的配合,而不是直接保护web用户的 安全。此外,要想让所有网站都采用微软的机制,可能还要有很长的路要走。还有,微软提供的解决方案是非跨平台的,也就是说 ,只对IE8有效。目前出炉的另一个解决方案为针对Mozilla Firefox设计的NoScript外挂程序,该程序可关闭脚本功能并阻挡利用 框架的攻击。

【51CTO.COM 独家特稿,转载请注明出处及作者!】

【编辑推荐】

  1. Windows 7一改“跳票”陋习 09年提前发布
  2. 微软下一代操作系统Windows 7截图曝光
  3. 详解IE8新增安全功能
责任编辑:王文文 来源: 51CTO.com
相关推荐

2009-08-20 16:45:32

2012-10-25 13:54:03

云安全云计算

2011-01-17 23:41:13

2019-09-02 14:45:33

2011-01-07 10:04:50

2009-05-27 15:11:24

2018-11-12 00:35:56

2013-01-28 14:16:59

2010-09-28 14:10:21

2012-11-15 09:32:35

双十一淘宝DDoS

2014-10-13 13:20:27

2023-11-09 16:13:49

2024-04-30 11:06:52

2014-02-19 10:43:04

虚拟运营商

2013-03-27 16:58:40

2014-03-12 10:01:15

阿里云亚马逊云计算

2015-08-24 17:20:21

2019-03-05 12:43:07

AI攻防OpenAI攻击

2009-08-13 10:12:07

IE的CSS Bug

2010-09-08 16:59:48

CSS兼容IE7IE8
点赞
收藏

51CTO技术栈公众号