BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

AI与Android漏洞挖掘那些事儿

| 作者 覃云 关注 2 他的粉丝 发布于 2017年12月1日. 估计阅读时间: 9 分钟 | QCon北京2018全面起航:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

11月17日,由阿里云主办的首届先知创新大会在京举行。来自量子技术、信息安全和人工智能等领域的技术专家齐聚一堂共同探讨中国原创安全技术,大会的初衷是希望成为中国原创安全技术的舞台,让安全研究者看到未来,让他们在安全技术上获得更多的创新和突破。更重要的是,为产业带来贡献助力解决社会问题是阿里一直以来对技术研究的坚持。

当前,最热门的技术非AI莫属,事实上,AI已经在一些领域上展示了自身的应用潜力,在美国国防部高级研究计划局举办的“网络安全挑战赛”上,我们已经看到AI在网络安全上的应用,那么在移动端的安全方面,AI可以发挥怎样的效力呢?蚂蚁金服巴斯光年安全实验室技术专家仲花和此彼就在本次先知创新大会上发表了《漏洞挖掘的工业时代尾声,Android系统代码审计新思路与AI漏洞挖掘的结合》的主题演讲,介绍了一种批量挖掘Android系统漏洞的全新角度,关注被忽视的底层数据结构,以及通过代码审计发现Android系统中攻击面的方法,并展示相关实例。本文是对两位老师演讲后的专访整理。

受访嘉宾简介:

仲花(温瀚翔),专注于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漏洞挖掘及利用相关研究。

Android的漏洞有哪些?

仲花和此彼两位老师主要从Android漏洞的类型、高发点和触发途径为我们介绍了当前Android系统中的安全问题。

漏洞类型

Android系统常规漏洞类型有内存拷贝不当导致的堆栈溢出、计数器溢出导致的整形溢出、越界的读和写、UAF、类型混淆、TOCTOU等,还有一种是缺少权限检查,不过这种漏洞一般出现在framworks层的代码中,让我们比较容易地以高权限执行代码。

漏洞高发点

Android系统漏洞的高发点一般在系统服务进程如system_server或mediaserver中;应用所依赖的一些framework层调用比如WiFi的API调用,跨平台的第三方库如Skia,以及各种多媒体解码库,还有厂商的一些硬件相关的音视频编解码以及图形图像加速解决方案的支持库。

漏洞触发路径

触发路径主要有以下三种:

  1. 浏览器中的漏洞。这是最具有攻击性的,可以远程触发还可以造成代码执行;
  2. 文件解析漏洞。这种漏洞在stagefright后已经被Android系统的安全策略不断削弱,会造成影响但却不容易进行远程代码执行。
  3. 在手机本地的提权。应用程序通过与高权限的进行进行Binder通信,从而尝试以高权限进程的上下文执行代码。

AI怎么进行漏洞挖掘?

AI用于漏洞挖掘是基于遗传算法,遗传算法需要找到一个用例,能触发漏洞。首先,有一个用例的集合,变异函数就是先把一个或一个以上用例拿出来变异,放到适应函数里面进行运算,看这个新变异出来的用例是否是有价值的,如果有价值,就放到用例集合里面去,这是模拟生物进化的原理,通过变异和适应函数来筛选用例,即生物繁殖和适应环境。变异筛选逐渐把用例演化成能走入未走过的代码的用例,我们直接就相当于攻击者,就像军事演习一样,自己攻击自己的代码,模拟攻击者,攻击自己的软件,找出薄弱点即安全漏洞。

人工漏洞挖掘 vs AI漏洞挖掘

传统的漏洞挖掘其实就是人盯着源代码看,通过反汇编别人编译已经完成的产品,分析运行原理,推算在哪种情况下可能会出现问题,然后试着去实践一下看看是否会真的产生问题,如果会,说明这有安全问题,从而达到发现漏洞的目的。

而AI是基于遗传算法、进化算法,它是根据程序内部的反馈运行的。如果发现当前用例促使程序内部在工作流程上有新的动作,从而推测新的动作可能会发生一些问题,那么我就重复进行这样的动作,并在这种动作的基础上稍加修改,其实就是自我尝试改进的过程。

由于AI在每秒中都会尝试成百上千次,并且可以快速地进行迭代,而人在跟踪代码执行的过程是很缓慢的,人为了弥补这样的不足,一般会通过类似符号类符号执行来猜测,必须进行高度抽象地猜测,就像下围棋一样,要在很高的层次上进行判断,是自我感觉的过程。而AI不一样,它可以把全部可能走入分支都尝试去走。再者,AI可以全天候地工作,这是人无法做到的。

为何选Android而不是iOS

虽然在苹果系统和Android系统上的漏洞挖掘大体上没有什么区别,但目前来看,在实践和适配的过程中,由于苹果有一些黑盒的程序,还是需要大量的人工参与的,而因为Android是开放的,而且文档很丰富,操作起来更方便。而且由于Android一直开源,文档也多,所以攻击Android的成本要比iOS低,所以大家都比较热衷于攻击Android,Android上的安全问题也就更加险峻,所以目前暂时选择在Android上用AI进行漏洞挖掘。

AI漏洞挖掘与逃逸攻击

所有的攻击都是有场景的,逃逸攻击也不例外,逃逸攻击的场景一般指存在一个判别网络,逃逸攻击就是欺骗这个判别网络,让他识别成另一个东西。而漏洞挖掘是挖掘自己产品的漏洞,在这个场景中攻击者并没有参与来进来,也没有使用神经网络的判别,所以就没有逃逸攻击的问题。

AI未来还能在安全领域做些什么?

机器漏洞挖掘还将在PC端和服务器上进行大规模训练。还有就是Google在手机上引入的TensorFlow——手机上用的训练网络, 可能会产生新的安全问题,因为AI本身也是一个系统,它本身也会产生安全问题,就像上文提到的逃逸攻击那样。AI经过大量训练之后,它内部会有训练出来的类似于算法的一个东西,然后可以通过生成对抗网络,训练出这个算法的逆算法去跟它进行对抗。

AI为何受热捧?

目前的算力已经达到了一个瓶颈,摩尔定律已经可能不起作用了,过去,算力在疯狂地膨胀,代码可以随便写写,可以不注重效率的方式,但是现在很多问题已经无法用算力解决,只能通过人工智能的方式,像经验主义,向实际的解决方法逼近,在这种情况下去近似地解决一个问题,不可能是完美解决。

从国家的层面上来讲,现在人工智能已经成为了国家的战略,这是一个新的时代方向,是一个大趋势,大家都在投入。一个新的技术的投入会导致什么呢?这个技术的门槛会大大降低,为什么这么说呢?众所周知,现在很多框架都有了,直接调算法就行了,你只需要判断这个环境是否适用于这个算法,然后再调参数就OK了,所以说它的门槛已经被大大降低了。

从行业的角度来看,谷歌、微软和国内互联网巨头BAT起到了很好的带头作用,他们搭建了一些好的平台给一些创业型企业使用,不仅打开自己的知名度,也培养了大量的AI人才,在这一点上,我们国家的人才实力是有机会超越美国的。

传统开发人员应何去何从?

未来既懂传统技术又懂人工智能技术的开发人员将会很受市场欢迎,在现实中,我们需要专精于一个技术,但同时是我们还需要了解人工智能技术,因为了解人工智能的某些算法在将来可能会在你这个领域派上用场。

虽然很多人工智能技术会取代人类之前低效的工作,但是它毕竟还没有发展到超过人类智慧的程度,人类看事情的纬度会比机器多,我们知道这个东西什么时候该适用于什么经验,然后调到一个合适的点让机器去学习经验而不是完全地委派出去。所以机器还不能完全取代人,开发人员能做的就是保持一颗积极向上的心态,继续学习,跟紧时代的步伐,而不是过多地忧虑。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT