@qinyun
2017-11-24T10:41:27.000000Z
字数 2944
阅读 4244
未分类
-
受访嘉宾简介:
仲花(温瀚翔),专注于AOSP漏洞挖掘与制作提权漏洞利用。发现并报告CVE-2017-0418,CVE-2017-0665, CVE-2017-0681,CVE-2017-0737等多个Android系统漏洞并获得Google致谢。现于蚂蚁金服巴斯光年安全实验室从事Android漏洞挖掘及利用相关研究。
此彼(吴潍浠) ,专注于研究Android安全。第一位Google Android安全奖金获得者。2016年用自己发现的Android漏洞成功root当时Google官方搭载最新的Android系统的手机Nexus 6 。曾从事Android恶意软件分析、反混淆、加密和漏洞挖掘利用等。现于蚂蚁金服巴斯光年安全实验室从事Android漏洞挖掘及利用相关研究。
11月17日,阿里先知创新大会在京举行。蚂蚁金服巴斯光年安全实验室技术专家仲花和此彼以《漏洞挖掘的工业时代尾声,Android系统代码审计新思路与AI漏洞挖掘的结合》为题发表了主题演讲,介绍一种批量挖掘Android系统漏洞的全新角度,关注被忽视的底层数据结构;以及通过代码审计发现Android系统中攻击面的方法,并展示相关实例。最后结合现有的代码审计方法论下,提出一种新的基于AI的漏洞挖掘系统设计。本文是对两位老师演讲后的专访整理。
Android系统常规漏洞类型有内存拷贝不当导致的堆栈溢出、计数器溢出导致的整形溢出、越界的读和写、UAF、类型混淆、TOCTOU等,还有一种是缺少权限检查,不过这种漏洞一般出现在Java的framwork层代码中,导致我们很容易地让高权限服务帮我们执行代码。
Android系统漏洞的高发点一般系统服务如systemserver或mediaservice中,应用所依赖的一些framework层调用比如一些WiFi的API的调用,跨平台的第三方库如skia,以及各种多媒体解码库,还有一些厂商的对于硬件相关的音视频编解码以及图形图像加速的支持库。
触发路径主要有以下三种:
1.浏览器中的漏洞。这是最具有攻击性的,可以远程触发还可以造成代码执行;
2.文件解析漏洞。这种漏洞在stagefright后已经被Android系统的安全策略不断
削弱,会造成影响但却使之不容易进行远程代码执行。
3.在手机本地的提权,应用程序通过与高权限的进行进行Blinder的IPC通信,从而尝试以高权限进程的上下文执行代码。
AI用于漏洞挖掘是基于遗传算法,遗传算法需要找到一个用例,能触发漏洞。首先,循环是一个有力的结合,变异函数就是先把一个或一个以上用例拿出来变异,放到适应函数里面进行预算,看这个新变异出来的用例是否是有价值的,如果有价值,就放到用例结合里面去,这是模拟生物净化的原理,通过变异来筛选,即适应环境,变异筛选逐渐把整个用例去引进旁边的代码,我们直接就相当于攻击者,就像军事演习一样,自己攻击自己的场景,模拟攻击者,攻击自己的防御,找出薄弱点即安全漏洞。
传统的漏洞挖掘其实就是人盯着源代码看,通过反馈别人编译已经完成的产品,分析运行原理,推算在哪种情况下可能会出现问题,然后试着去实践一下看看是否会真的产生问题,如果会,说明这有安全问题,从而达到发现漏洞的目的。
而AI是基于遗传算法、进化算法,它是根据内部的反馈程序运行的,如果发现内部的工作人员在工作流程上有新的动作,而且新的动作可能会发生一些问题,那么我就重复进行这样的动作,并在这种动作的基础上稍加修改,其实就是自我修改的过程。
由于AI在每秒中都会尝试成百上千次,并且可以快速地进行迭代,而人在跟踪代码执行的过程是很缓慢的,人未来弥补这样的不足,一般会通过符号类符号执行来猜测,就是说他必须进行高度抽象地猜测,就像下围棋一样,要在很高的层次上进行判断,是自我感觉的过程,而AI不一样,它是全部都试一遍。再者,AI可以全天候地工作,这是人无法做到的。
虽然在苹果系统和Android系统上的漏洞挖掘大体上没有什么区别,但目前来看,在实践和适配的过程中,由于苹果有一些黑盒的程序,还是需要大量的人工参与的,而因为Android是开放的,而且很丰富,操作起来更方便。而且由于Android一直开源,文档也多,所以攻击Android的成本要比iOS低,所以大家都比较热衷于攻击Android,Android上的安全问题也就更加险峻,所以目前暂时选择在Android上用AI进行漏洞挖掘。
所有的攻击都是有场景的,逃逸攻击也不例外,逃逸攻击的场景就是判别网络,逃逸攻击就是欺骗这个判别网络,让他识别成另一个东西,而漏洞挖掘是挖掘自己产品的漏洞,在这个场景中其他攻击者并没有参与来进来,也没有使用神经网络的判别,所以就没有逃逸攻击的问题。
机器漏洞挖掘还将在PC端和服务器上进行大规模训练。还有就是Google在手机上引入的TensorFlow——手机上用的训练网络, 可能会产生新的安全问题,因为AI本身也是一个系统,它本身也会产生安全问题,就像上文提到的逃逸攻击那样。AI经过大量训练之后,它内部会有属于自己的相当于训练出来的类似于算法的一个东西存在,然后可以通过这个生成对抗网络,也就是模拟这个算法的逆算法去跟它进行对抗。
目前的算法已经达到了一个瓶颈,摩尔定律已经可能不起作用了,过去,算利在疯狂地膨胀,代码可以随便写写,可以不注重效率的方式,但是现在很多问题已经无法用算利解决,只能通过人工智能的方式,即经验主义,靠随机,它是利用随机梯度下降来对实际的情况进行逐步收敛,在这种情况下去近似地解决一个问题,不可能是完美解决。
从国家的层面上来讲,现在人工智能已经成为了国家的战略,这是一个新的时代方向,是一个大趋势,大家都在投入。一个新的技术的投入会导致什么呢?这个技术的门槛会大大降低,为什么这么说呢?众所周知,现在很多框架都有了,直接调算法就行了,你只需要判断这个环境是否适用于这个算法,然后再调参数就OK了,所以说它的门槛已经被大大降低了。
从行业的角度来看,谷歌、微软和国内互联网巨头BAT起到了很好的带头作用,他们搭建了一些好的平台给一些创业型企业使用,不仅打开自己的知名度,也培养了大量的AI人才,在这一点上,我们国家的人才实力是有机会超越美国的。
未来既懂传统技术又懂人工智能技术的开发人员将会很受市场欢迎,在现实中,我们需要专精于一个技术,但同时是我们还需要了解人工智能技术,因为了解人工智能的某些算法在将来可能会在你这个领域派上用场。
虽然很多人工智能技术会取代人类之前低效的工作,但是它毕竟还没有发展到超过人类智慧的程度,人类看事情的纬度会比机器多,我们知道这个东西什么时候该适用于什么经验,然后调到一个合适的点让机器去学习经验而不是完全地委派出去。所以机器还不能完全取代人,开发人员能做的就是保持一颗积极向上的心态,继续学习,跟紧时代的步伐,而不是过多地忧虑。