记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

小米IoT安全峰会-张文凯《特斯拉安全研究:从一次到两次的背后》

2017-12-06 04:25

小米IoT安全峰会-张文凯《特斯拉安全研究:从一次到两次的背后》

由 MiSRC 于 2017-12-05 20:19:02 发表

张文凯,腾讯科恩实验室车联网安全研究员。

拥有较多嵌入式基础软件开发经验,熟悉车辆ECU硬件设计流程,了解整车CAN网络架构。曾于2016年9月参与科恩实验室对特斯拉汽车的无接触远程攻击,完成CAN网络攻击相关工作。同时也参与2017年科恩实验室对特斯拉的再次攻击,参与底层ECU固件分析工作。

目前在腾讯科恩实验室负责车辆CAN网络安全测试与固件安全研究。


◆   ◆   ◆


安全漏洞,即便是智能电动车行业的领先者特斯拉也不能幸免。针对车联网的安全问题不仅涉及到个人财产与信息安全,更可能直接威胁用户的人身安全。

 

腾讯科恩实验室车联网安全研究员张文凯专门研究了2016年至2017年之间入侵特斯拉的攻击链异同,同时分析总结了特斯拉在两年时间里安全防护方面的进步与改善,以及科恩实验室在车联网安全方面的见解与心得,揭示了车联网安全研究的未来发展方向。

张文凯先简单介绍了科恩对特斯拉远程攻击的攻击概况,这两次都是通过远程实现无接触的攻击目的。他们首先需要找到攻击入口,特斯拉支持Wi-Fi和3G,所以他们初期的计划就是通过无线网络引导用户访问恶意网页来触发浏览器漏洞。在这个过程中他们发现Wi-Fi上存在一个严重的问题,可以让整辆车接入恶意Wi-Fi,当他们走到车旁,就可以利用漏洞拿到浏览器权限的shell。

 


对比两年的攻击链,去年的kernel版本是2.6.36。去年报完漏洞今年再研究的时候,发现特斯拉kernel升级到了4.3.35,这是非常新的kernel。特斯拉的网关去年只做了完整性校验,今年是有签名的校验。最终,两年都做到了在任意CAN上发送任意数据。在这个攻击链中跟物联网相关的可能是特斯拉上的网关,因为它是一个更底层的嵌入式系统,更像典型的物联网设备,但它可能比多数的物联网设备复杂。

 

 

首先讲一下浏览器攻击。最初发现特斯拉用的是Webkit534的浏览器,这是一个较老的Webkit,我们找到了一个漏洞。但是,由于没有办法调试,导致利用非常困难,甚至不知道它的kernel是什么,也不知道它是不是linux系统。车联网安全是新的概念,需要非常多的技术积累。就像特斯拉的浏览器,我们借鉴了以前对于浏览器攻击的经验,基本上是盲调,最后完成了浏览器的攻击,可见攻击难度非常大。

 

2016年,我们利用了两个漏洞。2017年,直接利用一个漏洞,在浏览器上造出一个UAF,利用UAF的任意读写能力,修改了JIT内容,最终实现shellcode执行。

 

 

再讲一下Kernel的攻击,去年的版本非常老,是2.3.36的,这时我们已经获得了浏览器的shell。整个Kernel是受到保护的,会直接隔离访问外网和网关的内部网络,特斯拉在内核上有一些安全策略,他们还是有安全意识的。

 

 

今年虽然还是这些安全策略,但是对比去年,去年我们在home目录下还是能运行文件的,今年已经彻底被特斯拉关掉了,能限制住的几乎都限制住了。典型的就是不能使用dmesg,这为后面的内核漏洞调试增加了难度。两年的对比可以发现一个问题,特斯拉的版本更新非常快,特斯拉为了修补内核上的常见问题,打了所有的补丁,同时2017年的安全策略是非常严格的。2016年是旧内核,我们发现特斯拉没有补上put_usr的漏洞,所以能快速完成利用。但是今年是新内核,没有已知内核漏洞可以利用了,于是利用了一个0Day来完成的提权。

 

 

张文凯展示了特斯拉详细的内部网络结构:首先它有一个内网,通过交换机连接三个设备,IC、CID和Gateway。我们获得的是CID的root权限,计划直接对网关发起攻击。首先通过分析,我们发现在网关上会跑一些比较有意思的服务,不难发现,网关上这些服务就是给调试接口留的。在另一方面我们还是想找到一个刷写网关固件的方法。特斯拉上2016年只用了完整性校验,连签名都没有,而2017年就有了签名校验,这给我们带来了非常大的难度。我们还是要想办法在网关上获得任意代码的执行权,才能完成对CAN组件的攻击,最终达成效果。

 

 

在网上找了一些资料,发现可以发送一条指令到3500端口,让它的网关把shell端口打开。在shell中的指令可以分为三种,一种是对网关上SD卡上的文件进行操作,还有一些控制命令比如resetbms等等。它还提供了一个名为“INJECT_CAN”的重要功能,似乎可以对车辆的CAN总线进行控制,经过实验确实可行。但这里又出现一个插曲,特斯拉也觉得这个地方有风险,所以在车辆开起来的时候“INJECT_CAN”功能就无法使用了。

 

控制了网关就意味着控制整辆车。第一年尝试刷了一下ECU,改了字符串,发现成功了,整辆车也可以正常运行,这也意味着我们能够刷写别的ECU。

 

 

整个网关的升级流程也比较简单。首先有一个CID,上传固件到网关去进行升级,网关会对这个固件做签名校验。校验通过后就写入SD卡,再重启网关。网关第二次重启完以后,不再进入正常启动模式,它会引导整辆车进行固件升级。

 

在2016年的时候,我们只要研究出特斯拉是怎么对部件网关进行校验的,通过逆向我们不难找到方法。这个时候有一个问题,既然我们可以刷自己定义的固件,该怎么修改它呢?很多时候,开发者会留一些接口,不管是关闭,还是打开的,里面的代码是完全可以拿出来复用的。对代码进行简单的修改,就可以达到想要的效果,特斯拉上也是如此。


 

今年的攻击中我们还要绕过签名校验,这意味着我们要在网关现有的固件上找一个漏洞,这个漏洞帮助我们绕过签名的校验。绕过签名的校验之后,还要把签名代码修改完,达到整车任意固件修改的效果。

 

两年攻击对比,今年一开始是有些绝望的。特斯拉用了签名机制,实现得好是没有问题的。但最终我们还是在上面发现了0day,通过它绕过了整个签名。今年网关带来的挑战是非常大的,去年我们不需要寻找漏洞,今年必须寻找漏洞。特斯拉这两年在安全机制的升级完善上有非常大的进步。

 

 

张文凯讲解完攻击细节后,对整个特斯拉攻击链进行了总结。首先,整个攻击是从CID开始的,中心显示屏会通过网关把信号传入BD-CAN上的ECU。比较典型的是Bcfront、Bcrear。特斯拉Model系列有一款车使用了鸥翼门,鸥翼门也是有各自的控制器的。通过分析发现在这些ECU上都有彩蛋的代码,我们逐个分析了所有的ECU,去了解它是怎么工作的。很多人只是看到我们做了一些炫酷的展示,其实它的背后是大量的ECU的逆向工作,以及对整车控制器工作机制的理解,整个彩蛋背后的工作量是十分巨大的。

 

 

张文凯又借特斯拉对安全漏洞的响应,给我们解释快速修复在整个安全管理中的重要性。今年报了漏洞之后,特斯拉1.5个小时后就回应了问题。记得去年,特斯拉是在10天以后修补了漏洞,今年他们在3天内就保证了90%的修复率。我们也经常反思,也问了一些传统的车厂他们有这个能力吗?退一步说,如果特斯拉就是IoT设备,大多数的IoT厂商有没有能力做到1小时回应,三天内全部都修补完毕?这其实是比较严峻的考验。我想强调的是快速修复对于安全团队是非常重要的。

 

 

这张图是一个典型的车联网的架构,从TSP到APP端,对于特斯拉的研究,我们着重于车机端。跟别的厂商合作的时候,我们发现每一个涉及到交互、通讯的地方,都有可能出现漏洞,都有可能被攻击。


议题PPT下载地址:

http://t.cn/RYE4teH


知识来源: sec.xiaomi.com/article/31

阅读:99279 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“小米IoT安全峰会-张文凯《特斯拉安全研究:从一次到两次的背后》”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云

本页关键词