写点什么

AI 与 Android 漏洞挖掘那些事儿

  • 2017-11-30
  • 本文字数:3041 字

    阅读完需:约 10 分钟

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 人才,在这一点上,我们国家的人才实力是有机会超越美国的。

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

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

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

2017-11-30 18:002273
用户头像

发布了 83 篇内容, 共 48.0 次阅读, 收获喜欢 187 次。

关注

评论

发布
暂无评论
发现更多内容

用好JAVA中的函数式接口,轻松从通用代码中剥离掉业务定制逻辑

程序知音

Java 编程 程序员 后端

最佳实践|Apache Doris 在小米数据场景的应用实践与优化

SelectDB

数据库 数据分析 小米 Doris OLAP 场景实践

软银从阿里套现340亿美元,阿里、腾讯为何纷纷被大股东撤仓?

雨果

阿里云 软银 DaaS数据即服务

云原生(十四) | Kubernetes篇之深入万物基础-容器

Lansonli

云原生 8月月更

Java编程学习好就业薪资高吗

小谷哥

如何有效进行回顾会议(中)?

敏捷开发

Scrum 敏捷开发 回顾会 Scrum团队

音视频开发进阶|音频编解码的必要性解读与格式选取

ZEGO即构

karmada调度策略想要实现,这三个组件必须了解 | K8S Internals系列第4期

BoCloud博云

容器 云原生 k8s

学习大数据课程后好找工作吗?

小谷哥

面试官怒了:多级缓存不了解怎么行,那可是数量级的提升?

知识浅谈

缓存 8月月更

zzcase&接口自动化-质&效的探索

转转技术团队

测试工具 用例设计平台开发

视频1对1源代码——简单的搭建方式也有技术要求

开源直播系统源码

软件开发 直播系统源码 语音直播系统源码 语音直播

STM32入门开发 NEC红外线协议解码(超低成本无线传输方案)

DS小龙哥

8月月更

快的不止一点点!阿里强推的“Redis速成手册”也太香了吧

程序知音

Java 数据库 redis 程序员 后端技术

浅谈-大数据工程师面临的困境和要学习的技术

Geek_c8a6a0

5 个 JavaScript “罕见”原生的 API

掘金安东尼

JavaScript 前端 8月月更

北京JAVA开发3年,拿到美团35K的offer面试心得(全干货)

程序知音

Java 程序员 java面试 后端技术 Java面试八股文

深圳大数据编程培训机构哪家比较靠谱

小谷哥

MYSQL最朴素的监控方式

京东科技开发者

MySQL 数据库 数据 监控数据

Python也许很友好,但它也容易弄得一团槽

梦想橡皮擦

Python 爬虫 8月月更

万丈高楼平地起--java基础语法

Geek_ba5ac7

Java core

Kyligence 连续三年入选 Gartner 增强数据分析推荐厂商

Kyligence

数据分析 Gartner

前端线下培训的就业前景怎么样?

小谷哥

vue高频面试题合集(四)附答案

helloworld1024fd

Vue

极狐GitLab冷知识:使用 Gitlab Webhook 触发 Pipeline

郭旭东

极狐GitLab JIHULAB 101

C++运算符重载(四)之赋值运算符重载

CtrlX

c++ C# 后端 函数重载 8月月更

JavaScript Promise 的使用技巧

汪子熙

JavaScript Promise 异步编程 await 8月月更

Android进阶(十一)Android系统架构讲解

No Silver Bullet

android 系统架构 8月月更

版本管理工具git的使用总结

TimeFriends

8月月更

Synchronized锁升级原理与过程深入剖析:无锁>偏向锁>轻量级锁>重量级锁

Java全栈架构师

Java 程序员 面试 程序人生 多线程

上海前端培训学习好就业难吗

小谷哥

AI与Android漏洞挖掘那些事儿_Android/iOS_覃云_InfoQ精选文章