前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nexus 9漏洞允许黑客通过耳机接口攻击设备

Nexus 9漏洞允许黑客通过耳机接口攻击设备

作者头像
FB客服
发布2018-02-28 15:31:09
1.2K0
发布2018-02-28 15:31:09
举报
文章被收录于专栏:FreeBufFreeBuf

在2017年3月份,我们曾披露了有关漏洞CVE-2017-0510的信息,这是一个存在于Nexus 9设备中的严重漏洞,它将允许他人发动一种非常新颖的攻击,即通过恶意耳机来攻击Nexus 9设备。但有趣的是,这个漏洞的补丁并没有什么效果,所以这就导致了CVE-2017-0648的出现。为此,我们根据Google的漏洞披露政策负责任地将漏洞CVE-2017-0648的相关信息上报给了Google,而Google也在2017年6月份的Android安全公告中修复了这个漏洞。

在这篇文章中,我们首先要回顾一下漏洞CVE-2017-0510,然后分析一下之前的补丁为何无效(CVE-2017-0648),最后再给大家演示如何利用这个漏洞来发动攻击。文章结尾我们还会给大家提供漏洞CVE-2017-0648的修复方案,而这个补丁似乎终于成功地修复了这个漏洞。

回顾漏洞CVE-2017-0510

对于Google Nexus或Pixel设备来说,当TRRS连接器的MIC针脚上电压超过了一定的阈值时,手机的耳机插口将会变成一个UART调试接口。下图显示的是我们使用标准FTDI232RL电路板所组装的一个样本线缆:

Nexus 9中的这个漏洞意味着调试接口将允许外部访问FIQ调试器:

这将会产生非常有趣的后果,比如说:

1.任意进程抢占,这将导致用户数据存在泄漏的可能; 2.Stack Canaries泄漏; 3.ASLR解随机处理; 4.访问SysRq; 5.通过命令“reboot oem-42”重启进入HBOOT(HTC的Android Bootloader),将导致设备内部SoC芯片受到攻击(CVE-2017-0563 & CVE-2017-0582); 6.通过命令“reboot oem-76”恢复出厂设置。

CVE-2017-0510的尝试修复

Google曾尝试通过减少FIQ Debugger的功能来修复漏洞CVE-2017-0510,在近期的版本中,当平台完全加载之后已经无法导出注册信息或是通过oem-N参数来重启设备了(防止设备重启进入HBOOT或恢复出厂设置):

Tegra内核树中相关的commit为a075f8ab69f6。在对补丁进行了分析之后,我们发现FIQ Debugger中很多关键的核心命令现在都由sysrq_on()函数进行管理。比如说,我们先测试一下fiq_debugger.c中的fiq_debugger_fiq_exec函数:

sysrq_on函数位于drivers/tty/sysrq.c文件中,其实现方法如下:

由于sysrq_always_enabled的值为0,我们姑且可以认定这个补丁的有效性仅仅取决于sysrq_enabled的值。

针对FIQ Debugger和SysRq不受限制的临时访问(CVE-2017-0648)

不幸的是,正如我们之前的文章所解释的那样,sysrq_enabled的默认值是1:

这个参数定义在文件include/linux/sysrq.h之中:

但是在平台的启动过程中,我们可以使用一个init脚本向/proc/sys/kernel/sysrq写入0值:

kernel/sysctl.c中的代码会将proc文件/proc/sys/kernel/sysrq回滚到原始状态,并最终触发sysrq_enabled的值发生变化。

因此,尽管存在CVE-2017-0510的补丁,但在启动过程中我们仍然有一段非常短的时间(几毫秒)来执行init脚本,这样一来我们就仍然可以访问FIQ Debugger和SysRq命令了:

Transitions:

(1) sysrq_enabled = SYSRQ_DEFAULT_ENABLE = 1 (2) init: write 0 /proc/sys/kernel/sysrq 0 => sysrq_enabled = 0 (3) attacker @ limited FIQ: ‘reboot’ (4) attacker @ unrestricted FIQ: ‘reboot oem-42’ (5) attacker @ unrestricted FIQ: ‘reboot oem-76’

PoC

在下面给出的例子中,我们演示了如何绕过CVE-2017-0510的补丁并抢占任意进程以及如何进入HBOOT模式。我们假设当平台完全加载完成之后攻击便立刻开始,我们首先触发了一次设备重启(正常重启),然后获得了FIQ Debugger的临时访问权。在这个过程中,我们运行了“bt”命令,然后通过命令“reboot oem-42”重启进入了HBOOT模式:

CVE-2017-0648的修复方案

Google在公告34597d088801中正式修复了这个漏洞。SYSRQ_DEFAULT_ENABLE的值已经被设置为0了,这样就可以阻止外部对FIQ Debugger和SysRq接口不受限制的临时访问:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 回顾漏洞CVE-2017-0510
  • CVE-2017-0510的尝试修复
  • PoC
  • CVE-2017-0648的修复方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档