团控坐在我们的面前,精神饱满,但眉宇间依稀有一些困顿。他说,刚从荷兰飞回来,现在还在倒时差。而在此之前的4月初,他正在阿姆斯特丹的HITB大会(Hack In The Box Security Conference)做主题演讲;在更早的3月下旬,他还在新加坡的BlackHat Asia大会上激扬文字。

团控在BlackHat Asia上演讲

之所以连续受到全球顶级安全会议的邀请,只因他带着他的最新研究成果——《内核空间镜像攻击:利用ARM处理器MMU的硬件特性打破安卓内核隔离并获取Root权限》。

“内核空间镜像攻击”可获安卓8.0终端最高权限

“安卓8.0引入了新的内核安全加固特性和更为严格的SELinux策略,利用一个漏洞来获取众多品牌最新安卓手机系统的最高权限是非常有挑战性的。”团控说。

在HITB的演讲中,团控向与会者详细讲述了新的Root方案ReVent。据团控介绍,ReVent方案基于一个由条件竞争所引起的USE-AFTER-FREE漏洞,而这个漏洞会影响所有内核版本大于等于3.18的安卓终端,而且能够在普通应用程序中触发。

团控在HITB上作主题分享

“在利用过程中,许多不同的堆对象在同一个堆中频繁地分配和释放。因此,构造堆风水和获得内核代码执行权限十分困难。”团控表示,因此,他在研究中发现可利用管道子系统的TOCTOU特性来获取任意内核地址的写权限。

团控告诉我们,采用公开的漏洞利用技巧,比如覆盖ptmx_fops结构体去绕过PXN缓解机制是非常容易的。但是,谷歌在安卓8.0系统中引入了新的PAN缓解机制,基本堵死了这条“捷径”,让这些技巧纷纷失效。

“其实,借助我发现的一个存在于安卓系统长达数年的漏洞,能够直接绕过PAN缓解机制,但是,我总觉得还有其他的方法去直接绕过它们(PXN和PAN)。”团控说。经过反复研究,他发现一种新的内核漏洞利用技巧——内核空间镜像攻击可以达成这一目标。

“内核空间镜像攻击技巧基于ARM地址管理单元的特性,能够让攻击者不借助系统调用,而直接在用户态读写内核代码段或者数据段地址,然后结合前面所说的漏洞,就可以直接获取安卓8.0系统终端的最高权限。”团控说,“在早前BlackHat Asia的演讲中,我还详细介绍了一个Root方案——CPRooter。”

团控介绍说,CPRooter所使用的漏洞能够影响大部分基于高通SoC的安卓设备,这个漏洞可以让攻击者读写TTBRx寄存器。由于这个漏洞“品相不好”(俗称渣洞),谷歌认为其不能利用,并在官方公告上对其危害性降一级处理,即从高危变为中危。在不构造各级页表的条件下,直接修改任意一个TTBRx寄存器会导致内核崩溃。“在BlackHat Asia,我阐述了如何利用ARM地址管理单元的特性来规避这个问题,并且利用内核空间镜像攻击技术在64位设备上构建一个成功率为100%的利用链。”团控说。

荣耀!曾得到Linux之父Linus Torvalds的点赞

团控,阿里安全潘多拉实验室研究人员之一。1991年,他出生于四川省,并在重庆邮电大学修完本科和硕士学业,然后加入阿里巴巴,成为阿里安全的新生代白帽黑客之一。

团控在阿里安全潘多拉实验室的主攻方向是安卓系统的安全,曾向Linux内核社区、谷歌和三星等上报安全漏洞,并获得致谢。“2016年的时候,我上报过Kernel的漏洞,然后,竟然得到了Linux之父Linus Torvalds亲自发来的回复邮件!当时,心情太激动了。”团控说。

Linux之父Linus Torvalds回复团控的邮件

和其他白帽黑客一样,团控也有自己的个人主页。在他的个人空间,我们看到了他发表的一些安全研究成果,包括此次的“内核空间镜像攻击”。

有意思的是,在荷兰参加HITB的间隙,他花了一点时间,就成功逆向了大会主办方发给自己的演讲嘉宾证。他在日志里面写道,“演讲前一天拿到Badge,花了小半个小时尝试逆向,因其他事情作罢。今晚无聊,再次尝试,基本搞定,过程其实比较简单。”

HITB主办方发给团控的演讲嘉宾证

当我们问团控是怎么发现“内核空间镜像攻击”技巧的时候,他回答说,其实他在这个研究上面花费了近两年的时间。

“我一直是从攻击的视角去找安卓系统的漏洞,而ARM这个硬件设计结合自己之前发现的漏洞,就可以绕开安卓8.0最新的安全机制。其实挺不容易的,从来到阿里,我就在做这方面的研究,这将近两年的时间,发现了这个。”

**问:“ARM的设计是‘缺陷’吗?”
答:“我不能这样说,所以我说它这个是‘特性’。但是这个结合系统的漏洞,就能拿到安卓终端的最高权限。不仅如此,任意APP还能够不借助系统调用直接修改系统内核代码。对于现代操作系统,这几乎是不可能的。”**

团控很巧妙地把ARM的硬件因素称之为“特性”。据他介绍,他之前曾经和采用ARM方案的芯片厂商有过沟通,但他们并不认为这是一个“缺陷”。

**问:“这个感觉危害极大啊?”
答:“是的。一是现在使用ARM的终端非常之多,二是通过这种攻击方式获取的是终端的最高权限,基本上可以说是能够‘为所欲为’了。”**

**问:“你这个‘内核空间镜像攻击’如果被黑灰产利用怎么办?”
答:“虽然这种攻击技巧的危害很大,不过这个技巧还是有很高的技术门槛的。但我还是希望硬件方案商和制造商能够重视这个问题,并从硬件层面将其封堵掉。”**

事实上,在阿里安全类似于团控这样的白帽黑客还有很多,如同在潘多拉实验室的耀刺、黑雪等;比如猎户座实验室的蒸米、小龙、五达等。这些年轻人都出生于1990年前后,他们致力于从攻击的视角去发现安全漏洞,并提出相应的解决方案,以此来提升整个安全行业的安全水位。

梁启超说,少年强则中国强。这些不断涌现出来的年轻的新生代白帽黑客更强,才是安全行业乃至整个互联网行业的幸事。

从北京到新加坡再到阿姆斯特丹,他去公布了一个惊天的“秘密”相关推荐

  1. 在北京,想租一辆车去跑滴滴划算吗?

    在北京,想租一辆车去跑滴滴划算吗?我劝你趁早打消这个念头,因为从我的了解,以及和数十位滴滴车主聊天得知的信息来看,2021年还去租车跑滴滴,实在不是一个明智的决定,不信咱们就算一笔账. 首先你问自己几 ...

  2. 程序员2线城市月薪25k,父母让他去北京一家16K国企,网友:去啊

    现在找个工作不难,但是想要找个稳定的,不需要加班,收入又高的就很难了.很多高收入的员工其实都是靠加班得来的,而类似国企之类的企业,虽然薪水一般,但是却很轻松. 最近在职场论坛上看到这样一个帖子:程序员 ...

  3. 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户 类中增加密码、地址、最小余额和利率等成员变量,并增加一些银行账户经常用到的成员函数。 要求: (1)类

    先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户 类中增加密码.地址.最小余额和利率等成员变量,并增加一些银行账户经常用到的成员函数. 要求: (1)类中的成员函数具有输入.输出 ...

  4. 猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求

    python实现:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下 的一半零一个.到第10天早上想再吃时,见只 ...

  5. 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:(1)计算月利息月利息=存款金额x年利率+12(2)更改利率(静态方法)

    实验二:继承和派生程序设计(4学时)必做题: 先设计一个基本账户类,再通过继承基本账户类设计一个储蓄账户类,储蓄账户类中增加一个静态成员变量(年利率),并增加如下成员函数:(1)计算月利息 月利息=存 ...

  6. 2019阿里云峰会·北京 | 十年再出发

    十年做到3件事 在阿里云的推动下,云作为全新的技术在十年间发生了巨大的变化. 过去十年,云在中国经历了飞跃性的变化,人们讨论的话题已从十年前的"为什么上云"演变为如今的" ...

  7. 外国人在北京买房无需再提供纸质证明

    北京市住房和城乡建设委员会24日披露,境外个人在北京购房可不再提交纸质的<境外个人在境内居留状况证明>,而是直接向网签服务机构提供有效身份证明,通过联网审核方式申请购房资格审核. 北京市住 ...

  8. 6位图灵奖得主,10多位院士,19个分论坛:北京智源大会邀你共同探索AI下一个十年...

    长按上图或点击「阅读原文」免费注册参会 2020年,是一个十年的结束,也是下一个十年的开始. 过去十年,人工智能在深度学习算法.大规模算力和新型芯片.互联网收集的海量数据等因素的共同驱动下,经历了波澜 ...

  9. 数学界再出变态神人!竟用一个比基尼方程,暴力吊打美国数学家!看完我惊了......

    全世界只有3.14 % 的人关注了 爆炸吧知识 没时间了 快上车! 最近,有粉丝给超模君发了一些图片. 早跟你们要说,要好好学数学.现在好了,连沙发问题都不懂! 没办法,作为数学界屈指可数的老司机,是 ...

最新文章

  1. C# 获取指定目录下所有文件信息、移动目录、拷贝目录
  2. python开发好学吗-python难学吗
  3. 编写高质量代码改善C#程序的157个建议——建议127:用形容词组给接口命名
  4. Java 多维数组遍历
  5. QT实现有纹理和照明的简单立方体。
  6. springBoot中启用事务管理
  7. python 网络爬虫介绍
  8. bootstrap 图片轮询_消息通知功能之前端Ajax定时轮询_后端接口获取数据一
  9. 【翻译】asp.net core中使用MediatR
  10. 整理一篇Linux drm显示系统的文章
  11. Node实战之聊天室
  12. C语言学习笔记----sizeof()的使用
  13. plupload与springmvc分段上传视频
  14. android style theme
  15. Quartz+Topshelf 作业
  16. Linux网络基础番外篇(IP、MAC、TCP)
  17. MoviePy - 中文文档1-下载与安装
  18. linux环境Git客户端下载安装
  19. 论软件测试工程师面试套路和暗语灵魂解密(建议收藏)
  20. 照片损坏怎么办,怎么恢复受损照片

热门文章

  1. jeesite 框架搭建与配置(笔记)
  2. 悟空问答如何高效引流,这几个技巧让你上首页
  3. 芜湖市计算机语言,2012年芜湖市小学计算机水平等级测评试卷(logo语言版)
  4. nvm 安装node版本报错clang: error: no such file or directory: ‘CXX=c++‘
  5. 使用U盘重装win10系统
  6. ORACLE 考试的流程
  7. 求和 矩阵迹的性质_怎么证明矩阵特征值的和等于矩阵的迹_
  8. 霍夫变换c语言程序,霍夫变换 | Cauthy's Blog
  9. 《延禧攻略》知识点整理,没看剧的看思维导图就够啦
  10. 几本关于斯多葛主义 (Stoicism) 的书