网络安全 频道

阿里巴巴安全专家周拓:在云上跳舞

  【IT168 资讯】11月3日,以“深度解读应用及业务安全”为主题的OWASP 2012中国峰会在深圳博林诺富特酒店召开。本届大会从多方面、多角度诠释基于因特网、无线电话网和物联网的应用、融合及业务方面的安全,并围绕应用及业务安全发展方向和威胁增长趋势等方面,进行深层次的探讨。

  以下是阿里巴巴安全专家周拓《在云上跳舞》的演讲:

阿里巴巴安全专家周拓:在云上跳舞
阿里巴巴安全专家周拓

周拓演讲PPT下载:http://wenku.it168.com/d_000617408.shtml

  今天我主要介绍如何绕过JVAV沙盒的一些东西,APP Engine引擎是怎么绕过沙盒,然后说一下后面的研究方法。

  在这个之前大家可能对APP不太了解,没有APP的时候我们有云的服务空间,这个服务器上有很多网站,现在用了云之后有一个好处就是按照使用量收费,当博客没有访问量的时候不怎么收费而且不怎么浪费计算资源,而且从实际价格出来。APP引擎跟传统的虚拟空间在价格上也是很有优势的,把虚拟的网站放在云上按照实际流量收费。正常的APP引擎包括像国外的JNI等等一般有这样的东西,最下面是云,上面是服务器,再往上就是APP引擎,它不仅仅包括APP引擎的本身,还包括应用的管理和应用的监控,再上层才是JAVA,为什么这么做?很多管理不是用JAVA写的还有其他语言写的,没有办法放在一层,上面就是沙盒,再往上就是用户的网站。从这个体系架构上看,我们可以看到两个攻击方向,一个是横向发展,还有一个是纵向的。这是两个方向,那么沙盒它究竟有什么意义,简单的来说,他们可以保证你的安全和保证服务器的安全,就是刚才所说的我要绕过的这两条线。他提供一些有限的权限保证这个网站的可用性,只有可用用户才会上网,才会上到云上面来,然后还有一些资源性的控制,就引入一个话题,是不是没有沙盒也可以做到这些?

  我们还是先看看突破沙盒能做什么。就像传统攻击一样我们都可以按照攻击思路走下来,我们突破沙盒以后是不是可以做机器的渗透、从这个云跳到那个云最后把云整个都渗透一下?在国内突破了沙盒可以做很多东西,我们目标就是窃取破坏云用户的数据,或者把云下的用户全都赶走不让他用,这些东西要突破沙盒,我们看看为什么沙盒做这个突破?之前说突破沙盒大家的第一反应就是漏洞,很明显在绕过沙盒之后,你访问这个网页网站的时候就会偷偷下载一个PSU(音)用户码。通过沙盒的突破你可以获取一些代码,把JSI代码都执行一遍,然后再把JAI下载下来,击中他的后门,这是常规的绕过沙盒的思路。我总结了一下APP引擎的沙盒和APPLET的沙盒,他们之间最大的差别就是你在做那个应用的时候,你需要什么权限,都已经帮你考虑过了它也都帮你想好了。他知道有这些权限可以做到需要的事情,APP引擎很尴尬不但要保障你的安全他还要支持很多JAVA框架,就是攻击JAVA框架的。这个JAVA框架在实现的时候就需要很多权限是沙盒本身没有的。很明显做这个沙盒的时候,无论是BAE、还是SAE,大家都知道在开发里面他不懂安全,他也应该知道这个权限就表示最好把它隐藏掉了,因为攻击者知道这个沙盒允许什么不允许什么,他都可以在允许的地方做很多事情,所以一定都要把他隐藏掉,那么get Policy是一定要隐藏的,但是文件权限绝对不能提供的,但是很遗憾不管是哪一个沙盒他们都忘了这一个东西,我可以用CLASS来获取这个权限。到目前为止这个东西可以拿到所有的权限,这个是GOOGLE的,既然是GOOGLE的我们要把它打开,看一下里面是什么东西。很明显GOOGLE是你的个人应用放在APP引擎上,你所有的东西放在目录底下,这是你的应用名称再往前所有的用户在底下,这是我的用户名称,很明显GOOGLE的沙盒前系列包括你传上来的代码一定是有的,所以他给了文件权限,可以说这个目录底下所有的文件都有操作权限,这是基本的,然后再往这边看是GOOGLE本身提供的一些东西。这个框架是GOOGLE它自己实现的一些原码。这个框架一定要有可读权限,否则应用跑不起来,还有什么?我们可以看到系统的黄金变量,这些需要系统的很多框架读取才能做很多事情。这些都要有权限。还有一个特殊的东西在这里,比如这个create classloader,你如果用这个引擎一定要用GOOGLE服务,这是它的权限。大概的步骤讲一下,先去创建一个权限拥有所有的权限,在crackClassLoader里面定一个权限,最终的效果把SAE的云全部干掉了,云上作为的用户直接拿到了。这是一个沙盒的进步,我不需要执行系统命令,我只需要读文件就行了,数据全部拉下来现在一样把云全部黑了,我不需要执行系统命令,执行系统命令是云时代不需要的,我只需要破坏云上的命令就可以了,云安全不一定等于主机安全,这是传统的思路。最终是这样子,我“…/…/”前面是这个目录,我直接指定了这个目录底下然后“…/…/”然后拿到了这个权限,这是其他用户的权限,然后他们又深入地去做了一下SAE的安全,我看到他们很有意思,他在当前内存中,我就用JAVA(音)。所有的数据读取了一下,然后在这个suppressaccesscheck这个权限里面可以改,但是在前面一定要用这个权限。这个大概讲一下,首先你创造一个他有一个ACC属性,创造一个跟他一模一样的雷(音),所有的千给他,然后再把这个东西设置成新创建的就可以了。第一次遇到了很大的麻烦把他绕过了,ASE很给力,给了10万云豆。一天一万的访问量可以用一年才有一万的云豆,他们真的很重视,但是他们可能对安全不是很重视。这次新的是他有一个policy文件,这个里面是object为,虽然当前的Setsecuritymanager直接替换掉的,这个到现在为止漏洞补了,然后没有什么,他们最初允许class Loader,正常来说我们突破kxlzxClass。就这个Loader,他就把这个protection domain,这个分很多级别的,别人JAVA提供的级别,然后像这种基础类、JAVA本身的类全部是超级权限,还有一部分是用户权限。第一层有系统类拥有所有权限第二个是摆自己的监控程序,沙盒的原码有很多,一共有三层。我之前一直跟你们说没绕过JAVA,在一个黑客思路来说,我还是给GOOGLE发了邮件说了这么一件事。GOOGLE很狡猾早就把这个干掉了,然后没有绕过,我上去以后这个东西不让你绕过,大家研究这个东西,之前都是一些绕过沙盒的想法,建议你的思路是这样的,首先自己搭建APP引擎,我把所有的危险的函数列表是绝对要用到权限列表,最后一点告诉你们沙盒总会出漏洞的,其实沙盒已经出了漏洞,之前出了一个补丁。他说JAVA虽然出了一个补丁但是三个小时之内被我的安全工程师干掉了。然后过了一段时间出了一篇漏洞,这里面是远程漏洞,所有人都没有看到这不止是远程漏洞,这是oracle为的官方表格。其实前面的名称是这样的“××组件”然后可以围过JAVA沙盒,也就是说没有公开的漏洞。没有公开的东西是可以绕过沙盒的,我不知道大家做好准备没有?谢谢大家!

2
相关文章