BlackHat 2018

前言

OTA(Over-The-Air)是汽车行业智能网联变革的核心能力之一。在本届Black Hat USA 2018大会上,腾讯科恩实验室带来了去年对特斯拉具备的先进OTA功能相关的安全研究成果。本成果对于促进汽车行业安全稳定落地智能互联解决方案具有重大意义,同时本议题也是全球首次针对汽车先进驾驶辅助系统(ADAS,特斯拉相关系统名为:Autopolit)的信息安全研究成果披露。

页首配图议题概要

腾讯安全科恩实验室在2016年至2017年间,连续两年针对特斯拉Model S和Model X进行了攻击测试,其预设的场景是避免通过物理方式接触汽车进行远程攻击。在去年举办的Black Hat USA大会上,科恩实验室的研究人员介绍了2016年特斯拉公司对其研究成果的致谢中所包含的具体细节,并向与会者展示了一系列特斯拉汽车的安全漏洞,获得了与会者的好评。此外,借助灯光舞蹈秀的形式展示了利用2017年发现的另一批漏洞攻击的威力,但相关漏洞的细节并未公布。

今年,腾讯安全科恩实验室带来的议题将会深入介绍2017年彩蛋视频背后涉及到的技术细节。除了介绍特斯拉基于云端的空中升级(OTA)机制,并展示一些攻击链中开发的新技术外,该议题还将着重介绍测试过程中发现的多个严重的安全漏洞。

发言人合影发言人简介

刘令,腾讯科恩实验室研究员,专注于逆向工程、漏洞挖掘、漏洞研究等技术,多次参与特斯拉等汽车的安全研究。曾在QEMU和XEN中发现多个虚拟化漏洞,同时也是一名CTF爱好者。

刘令张文凯,腾讯科恩实验室研究员,多次参与特斯拉、宝马等汽车安全研究项目,主要负责汽车CAN网络和汽车固件分析工作,有丰富的嵌入式系统软件开发经验,熟悉ECU设计过程和汽车CAN网络结构。

张文凯杜岳峰,腾讯科恩实验室研究员,多次参与特斯拉汽车安全研究,对逆向工程和恶意软件分析领域有着浓厚的兴趣。

杜岳峰议题解析

在今年的Black Hat USA大会上,腾讯科恩实验室安全团队向大家介绍了2017年披露的攻击链中相关漏洞的细节,并展示如何使用这些漏洞完成灯光秀。此外,自动驾驶系统的安全性已经成为一个新的热点话题,团队还会向大家展示对特斯拉辅助驾驶模块(即Autopillot,也称APE)的安全研究成果。

最后,团队还介绍了特斯拉对相关漏洞的修复结果,再一次强调只有安全研究者、安全社区和设备厂商互相合作,才能有效的提高整体安全水平。

会场

漏洞详解

在去年,我们利用了两个Webkit中存在的漏洞,实现了浏览器中的任意代码执行。今年的情况和去年类似,整个攻击过程依然是从一个Webkit漏洞开始的。

攻击过程中涉及到的部分硬件单元和连接方式如下图所示:

硬件单元和连接方式CID上具有一个Webkit内核的浏览器。在报告漏洞时,该浏览器仍保持为534.34版。

该版本的Webkit内核中,存在一个UAF漏洞,下图即是该漏洞的PoC代码:

PoC代码这个漏洞存在于对SVGTransformList元素的操作过程中。

该元素内部存在多个SVGTransform实例,这些实例的SVGMatrix结构会存储在一个Vector里。当SVGTransformListInitializeclear方法被调用后,Vecotr被释放,但访问VectorMatrix的指针仍然存留。利用该UAF漏洞,经过精心的内存布局之后,即可借助ArrayStorageUint32Array等结构的特性实现对内存的任意读和任意写,并从而实现了浏览器中的代码执行。

操作过程

获取了浏览器的权限之后,下一步操作就是突破内核和其他安全防护措施对浏览器的限制,从而得到root shell。

2016年,我们是通过利用Linux内核中的一个漏洞实现了该目的。但在2017年,由于特斯拉修复了相当多的内核漏洞,我们不得不寻找新的漏洞。

在2017年的车机固件中,浏览器进程只能访问/dev/nvmap/dev/nvhost-ctrl两个文件,这两个文件都是用来与英伟达Tegra芯片进行通信的驱动接口。在和这两个接口相关的代码中,我们发现了一处漏洞,该漏洞可使我们从用户空间对内核空间的任意内存地址减1。

接口相关代码这一漏洞存在于NVMap驱动中,当处理命令NVMAP_IOC_PIN_MULT时,由于对用户提供的指针数组验证不当,当其中包含一个非法结构时,非法结构体的引用数会被减1,而这个引用数的指针是用户态可控的。这意味着,用户态可以对内核态的任意内存地址减1。利用这一漏洞,结合Kernel中的其他gadget,我们可以对内核空间中的任意地址进行读写操作。之后对相关的syscallAppArmor配置进行篡改,即可拥有root shell。

获得root shell

得到root shell后证明CID已被完全攻破,下一个目标则是网关。

2016年我们报告了网关上的一些设计缺陷,特斯拉在收到报告后对相关漏洞进行了修复,通过加入签名机制,对网关上的升级软件传输操作进行了限制,未签名的升级软件将不能被传输到网关上,因此理论上使用非物理攻击方法是无法传输篡改后的升级软件的。

但在对新软件进行安全审计的过程中,我们发现升级过程中存在行为不一致的问题。如下图所示,尽管网关的文件传输协议限制了直接传输升级软件的操作,名为“boot.img”的升级软件无法直接传输到网关上,但文件系统的重命名行为和文件传输协议的重命名行为不一致。文件系统会忽略目标文件名首部的空格,导致目标文件名“\x20boot.img”会被文件系统理解为“boot.img”,从而绕过了升级软件对文件名的检查。

文件系统

用这种方法刷入我们修改后的升级软件后重启网关使其执行升级软件,即可在网关上执行我们修改后的升级代码植入后门,或绕过原有升级软件对固件签名的检查。此外,我们还对整个OTA升级过程进行了研究。特斯拉的OTA升级过程大致可由下图所示的几个关键步骤描述。

OTA过程云端通过特斯拉自有的握手协议下发固件下载地址后,特斯拉CID上的cid-updater会从云端下载固件,进行解密,并校验其完整性。之后通过类似于A/B Update的方式,车内其他强运算力的联网组件(如IC、APE等)根据cid-updater提供的固件文件进行升级。

固件升级

此外,cid-updater还会负责根据固件包中的目录信息与车辆配置做比照,据此产生release.tgz文件,并和上文提到过的升级软件boot.img一同提供给网关。然后网关执行上述升级软件,更新在网关上连接的二十余个ECU。

为了展示我们对车电系统整体的理解,我们对特斯拉在2016年年末推出的彩蛋功能进行了自定义修改和展示。

下图是彩蛋过程中几个重点参与活动的ECU:

ECU信息

首先,CID会发送启动信号,触发这一过程,信号会被发送至BCCEN,该控制器对相关硬件进行初始化操作后,会确认目前车辆是否准备好启动彩蛋,并等待钥匙的按键信号。按键后,CID开始播放音乐,同时BCCEN以及其他ECU会按照各ECU中存储的动作表,控制各组件按照预定计划动作。

因此为了实现自定义彩蛋功能,我们在CID中动态修改了多个检查点,并对ECU固件中的动作表进行了修改,将修改后的固件刷入了ECU中。

刷入CID最后,作为对前沿技术的一个尝试,我们研究了ape-updater中的安全漏洞。该程序作为特斯拉OTA框架中的一部分,负责整个APE系统的更新。

ape-updater中的安全漏洞

该程序提供了两个业务端口:

25974端口提供了一个交互式shell和多种命令,可供CID进行控制;

28496端口可通过一个HTTP服务器提供其他组件需要的文件。

端口信息在25974端口提供的handshake命令中,会从服务器请求一个JSON字符串,并稍后提供给install命令解析。

在某个特定版本的特斯拉APE固件中,我们发现了名为m3-factory-deploy的命令,该命令可覆盖handshake返回的JSON,从而让攻击者提供的JSON被解析。

m3-factory-deplo命令

利用JSON中存在的self_serve键值,可以要求APE将/var/etc/saccess/tesla1这一文件暴露在HTTP服务器下,从而可得到其内容。

利用其为凭据,可通过25974端口得到ape-updater中自带的命令执行权限,可以重新开启SSH,并以root权限在APE上执行任意程序。

image.png

特斯拉的反馈

在上述所有漏洞报告给特斯拉后,特斯拉迅速做出了反应,措施包括:

修复Webkit漏洞;

与英伟达共同修复NVMap中的内核漏洞;

修复Gateway中的漏洞。

团队还注意到特斯拉在其系统安全性上不断地进行改善与提高,比如:

更严格的iptables限制;

对OTA框架中的几个关键程序进行进一步加固;

降低saccess文件夹中token的权限;

禁止系统降级;

……

这一过程中,特斯拉专业的安全响应团队和他们的OTA机制起到了关键的作用,防止了车主受到进一步的威胁。

演讲现场照片

image.png由于篇幅所限,对相关漏洞我们只介绍了类型和核心原理,对这个研究感兴趣的朋友可以查看我们发布的白皮书《穿云拨雾:对特斯拉汽车网关、车身控制模块以及辅助驾驶(Autopilot)ECU的渗透测试》获取更多信息。

关注“腾讯科恩实验室”公众号,回复“车联网安全”即可获取Black Hat 2018议题白皮书!

*本文作者:腾讯安全科恩实验室,转载请注明来自FreeBuf.COM


为您推荐了相关的技术文章:

  1. BlackHat 2016 回顾之 JNDI 注入简单解析
  2. 漏洞检测的那些事儿 - 从理论到实战
  3. Struts2 历史 RCE 漏洞回顾不完全系列
  4. unserialize() 实战之 vBulletin 5.x.x 远程代码执行
  5. Pwn2Own2017专题:VMWARE UAF漏洞分析

原文链接: www.freebuf.com