【IT168 资讯】11月3日,以“深度解读应用及业务安全”为主题的OWASP 2012中国峰会在深圳博林诺富特酒店召开。本届大会从多方面、多角度诠释基于因特网、无线电话网和物联网的应用、融合及业务方面的安全,并围绕应用及业务安全发展方向和威胁增长趋势等方面,进行深层次的探讨。
以下是来自淘宝的安全专家谢雄钦进行了现场演讲,以下为文字实录:
淘宝安全专家谢雄钦
谢雄钦:首先自我介绍一下.我叫谢雄钦主要在淘宝做安全方面的研究,如RIM安全、FLASH等等。我要讲的是UI-Redressing,从名字上理解就是界面伪造,可能大家也听过类似于伪装或者钓鱼,这其实都是属于UI-Redressing的范畴,他包含的东西非常广,这是今天的主要介绍内容,主要分为Clickjacking、Dragjacking、Cursorjacking,还有UI-Redressing里面一些新的应用,主要是一些电子商务被恶意人员利用的例子,最后是防御的对策。现在随着安全软件,还有系统安全性的提高,像远程溢出直接拿到个人电脑中,这种攻击越来越少了,后来就是XSS、CSRF,我这里都是客户端的东西,浏览器或者是其他的,接下来的安全攻击朝着哪方面发展呢?一个是HTML5、这个是一个新兴起的领域,还有RMI、UI-Redressing等等。UI-Redressing就是界面伪装,伪装能够干吗?伪装就是让我们普通用户不能区分这是怎么样的东西,然后在这种情况下诱导用户或者是攻击用户。
首先要讲的在UI-Redressing占到最大一块的Clickjacking。针对这种攻击,我们国内网站基本上完全忽视,因为这种攻击大家觉得危害不大。从这个页面大家可以很直观的理解,这个动机到底是什么样的攻击。首先他有两层,前面那个是透明后面那个是可见的,前面透明的东西是真正的用户操作的东西,他们两个是重叠在一起的。为什么出现这样的情况?因为浏览器允许我们定义层,层与层之间有一个权重关系。你把他放在上面或者下面完全由你自己决定。这里面利用了一些特点,像Clickjacking一共有三个,position、opacity、Z-index这几个都可以使你的界面元素松动,第二个是控制移动的属性、第三个就是控制权重的东西,最后一个是锚点。锚点主要是为了在我们嵌入另外一个页面时,可以很快的定位到用户想要点击的地方。这里有两个小演示,因为上不了网只能是本地的,这里是一个框架。这个是腾讯微博的东西,我是Clickjacking腾讯微博的一个页面。他的页面就是这么一个东西,我把这个按纽给覆盖掉这块,其实点击“开始游戏”就是另外一种东西,就是界面欺骗的东西,大家觉得这个点击没有什么,还有我们安全中心或者是手机绑定,其实解绑就是一个按纽,你的帐号是手机绑定的,如果有什么异常或者是有什么消息都会通知你的手机,如果你的手机被人家给截绑了,然后被人家恶意操作都不知道。
这是Wordpress的后台,如果你自己有一个博客或者是Wordpress做的,然后你的后台可以安装插件,只要输入这个插件的值,然后点击右上角这个安装按纽,他就会安装插件。装这个插件有什么用?因为Wordpress插件有很多漏洞,因为是不同的人开发的,不是他们官方写的。然后管理员装这么一个有漏洞的插件以后就可以做别的事情了。还有以前大家听说过FLASH能看到你的摄像头吗?这是通过WEB来做的,把他放在允许的站点里面其实就可以偷偷的看别人的视频。然后Clickjacking可以BYpass我们的CSRF,但是这个是有条件的。举一个例子,因为我们只是靠一个点击需要用户完成他的操作,所以Bypass链接允许用GET方式来接受。还有就是表单的action为当前的URL。因为你不能让用户来输入,这是Clickjacking的一些东西。第二个讲的其实就是一个拖动,Drag和Dropjacking就是一个拖动,这个是基于Clickjacking之后新出现的一种攻击方式。DRAG、Drop大家可能很熟悉,有时候浏览网页的时候不想输入,直接拖放在浏览器上面,这样不用去打字,拖动的过程当中原来没有限制的。就因为没有任何限制所以这里有一个跨域的问题,拖动能干什么?他可以取到我们页面中的URL,URL一些比较头疼的信息都放在URL里面,如果用这些东西放在这个域里面,还有一些比如说Hidden和代码隐藏的东西,我们是看不到Drop的信息的,比如作为安全防御的CSRF-Token。你拖动到那些目标域,需开启这两个模式,designMode或者是contentEditable的模式。(演示实例)这其实是一个很简单的页面,我们可以看到这个上面的鼠标很奇怪,移到这里来点的话发现这个东西有反应了,说明我们鼠标其实在这个位置上,鼠标是一张图片,光标在右边,其实真正的鼠标在上边,用一张图片鼠标就放在上面了。然后具体讲一下HTML5,随着一些新的东西像原来的FLASH的东西,他不允许可以交互的。这就是处于一个全屏的模式下,在这个模式下输入东西输入不进去的,这是出于安全考虑的。首先看一下这里是一个页面,我们可以看把鼠标放在上面,真正的页面是新浪微博,很多人看了这个没有问题,点进去了以后是这么一个东西,页面做好一点是一个钓鱼页面,在这个里面可以输入任何东西,可以获取用户的敏感信息。随着HTML5的出现,所引入一些新的思路和攻击方法,以后应该会把这方面的内容解决掉,但是因为新加进去的特色,所以安全性考虑得比较少一点。
还有就是像这种,前一段时间360出了搜索,这里有一个话筒一样的标志,我们点这个框喊两下,浏览器就可以把这个解析出来,不用打字了,就这么一个特性。随着HTML5的出现,所引入的一些新的思路和办法,但是刚才这个说话的功能已经替我们考虑到了相关的安全性,所以这个框无论如何都在前面,谁如果把这个东西挡掉,就可以很牛了,就是发一些东西钓别人的录音了,怎么钓就是大家自己的思路了。像UI-Redressing在我们现实生活中可以应用到什么地方呢?像我们的广告联盟欺骗,像一些站长申请广告联盟给你一个代码在网站上打广告,然后靠点击给你钱,这种形式你可以用很多的代码来骗,就是说来骗他们的点,这是一种应用形式,还有就是像钓鱼攻击,钓鱼攻击也是越来越多的攻击手段,技术难度不高。然后骗你输这些东西就行了。最近可能大家听说过,我们的数据被伪造了。其实30天并没有卖这么多怎么变成卖了580件?看到这个我们也很欣慰,会利用这个做一些坏事情,让我们有事情可做。说了这么多怎么防这个东西呢?一般针对这种攻击就出现了一些防御代码(见幻灯片),简单介绍一下。如果最上面的window不是自己,那么把他设为自己,就这么一种思路。这里会有一些绕过的方法,因为很多不想被嵌入的页面通过ES判断,就像这种frame、parent这也是一种方式。这里推荐一种比较好的形式,就是像这里(见幻灯片)首先是默认情况下什么都没有,当你知道自己没有被嵌的时候再把这种代码去掉。跟X-FARAME-OPTIONS这么一个方案一样可靠的。加上这么一个选项可以让浏览器帮你做,他有两个选项一个是DENY、一个是SAMEORIGIN。以上就是我演讲的内容,大家看一下。有问题吗?
提问:刚才看到淘宝上的攻击,我想了解一下成功率高不高,是不是要做很多浏览器的兼容?
谢雄钦:成功率很高,就像刚才的讲话录音只有一个浏览器在做,以后会相应的实现这些功能。我分享完了,谢谢大家。