破解特斯拉Model S是一种怎样的体验?
上个月底克莱斯勒被Charlie Miller&Chris Valagek联手破解的事件似乎打开了一个开关,通用、特斯拉纷纷中招,还有黑客发现了可以在品牌之间无差别攻击的手段。黑帽大会+USENIX安全会议,也公布了一个又一个让车企们胆跳心惊却还要表现得面不改色的安全漏洞。
随着联网功能、近场通讯手段的愈加增多,汽车上可被攻击的地方也越来越多。要攻破一辆汽车的防线,能从哪些方面入手?汽车制造商和供应商们又该怎么防止入侵呢?车云菌将以近段时间被公开的案例为引,逐步给出解答。
Kevin Mahaffey、Marc Rogers是成功“攻破”特斯拉Model S的两位网络安全专家,下面请大家和车云菌一起,听听二位对整个事件的回顾、发现和收获。
在刊发于知名网络安全技术平台——LookOut上的一篇实录中,Kevin表示之所以会亲手排查特斯拉Model S的安全漏洞,是因为他和Marc都认为Model S有着相对健壮的安全架构。除此之外,他们也希望能够通过这项研究,为汽车行业提供一些简单明了的安全常识以及系统架构建议。
按照Kevin的描述,特斯拉的Model S的确有着设计精良的安全结构,这一点值得其他主机厂学习。不过正所谓「百密一疏」,几处漏洞的暴露,让两位“白帽黑客”得以借助物理接触的方式,获取了进入仪表显示器(Instrument Cluster,简称“IC”)和17寸中控显示屏(Center Information Display,简称“CID”)的管理员权限。之后,我们既可以远程控制开关Model S的前后备箱,任意锁闭/解锁车门,甚至还能够对车子进行启停操控。
特斯拉车机系统纵览
这里首先需要指出的是,特斯拉Model S车载娱乐系统所有组件的信息沟通均透过车载局域网完成。但为了能和车内CAN总线实现信息互换,所有指令必须经由车载局域网和CAN总线之间的网关传递。
漏洞排查
在正式侵入Model S之前,Kevin和搭档Marc首先对车子内部的物理硬件环境进行了勘察,并最终确定了一些可以入手的潜在物理漏洞。经过第一轮分析后,二位有了如下发现:
① CID上装有两枚可移除的存储卡;
② CID上有一个USB接口;
③ 一个作用未知的四针接口;
④ 有很多功效不同的测试点和诊断界面
紧接着Kevin、Marc对所有勘察到的攻击面进行了触探试验:
① 浏览器:(漏洞#1)特斯拉Model S使用的依然是基于WebKit的浏览器,版本号534.34,属于很老式的车载浏览器,而且为了适应其他系统,其自身存在很多可能被攻破的漏洞。Kevin和Marc曾试图利用其中两个漏洞作为“安全”入侵Model S的武器,但不进行任意内存的读写。但如果不接入系统的调试器,只是盲目搜索,很难发现可被“钻空”的漏洞。
② 蓝牙:这里并没有发现特别的不安全因素。
③ USB:尽管可以通过USB接口连接CID,并使其进入NVIDIA Tegra的恢复模式。但由于其引导程序受到密码保护,因此无法通过该接口解压固件。
④ 内存卡:其中一枚内存卡中有一个名为“carkeys.tar”的文件夹,包含了Model S的OpenVPN证书(x509认证级别),一枚RSA私人密钥和一枚OpenVPN静态密钥。另一枚内存卡中则是大容量的地图数据。
⑤ Wi-Fi:这里并没有任何暴露的开放端口。但每次系统在甄别是否存在活动的网络连接时,它都会尝试连接一个OpenVPN服务器。不过由于OpenVPN的配置比较特殊,因此它对「中间人攻击」(当服务器和车机系统证书都是由同一个根证书机构颁发的情况)免疫。
⑥ 未知接口:这个后来证明是以太网接口,不过由于接口形式没有采取标准设计,因此不太容易辨认。Kelvin和Marc最后剥开一根标准Cat-5 UTP线,来确定引脚配置,以便能够和内部网络进行通信。
随后,Kelvin、Marc对内部网络进行了“挖掘”,将车载娱乐系统不同组件对应的服务一一排查。最终,他们认为Model S车机的内部网络共有30项服务存有漏洞。其中下面两项服务漏洞已被曝光:
① Insecure DNS Proxy: The Model S runs dnsmasq 2.58. (漏洞#2)
② Insecure HTTP Service: The Model S mini_httpd 1.19. (漏洞#3)
不过具体这30项漏洞会带来什么威胁,两位黑客并没有具体研究。因为要接近这些漏洞,以此作为入口也并没那么简单。
除此之外,两位「白帽黑客」还发现,CID和IC都在没有设置任何访问限制的情况下可以运行(执行Unix程序的图形窗口环境),这是迄今为止发现的Model S的第四个安全漏洞。
最终,Kelvin、Mac定位了两项分别运行在IC和CID上的服务:ic-updater和cid-updater。当系统发出「状态指令」后,它们会共享很多有关车载娱乐系统内部技术状态的信息。
破解遭遇「滑铁卢」
不过在前期的研究过程中,已经有其他黑客发现了可入侵的以太网接口,但特斯拉官方很快通过OTA升级的方式堵上了这个漏洞,因此无法借由此途径和内部局域网进行通信。
但Kelvin、Marc很快找到了解决方案。由于IC也属于系统网络的一部分,而且它有一根类似的4脚以太网线缆。最后二位先是在IC的以太网后门建了一个端口,然后将其和一枚外部以太网开关(处于IC和内部以太网开关之间)相连。这样虽破费周折,但最终还是顺利进入了Model S的内部局域网。
戏虐特斯拉?
为了试验「控制车载娱乐系统对整车操控的影响」,Kelvin、Marc对CID上车辆控制系统是如何“合法”工作的原理进行了深入探索。
Model S内部局域网属于相对高速运转的网络系统,UDP每秒钟传输信息的频率高达500——1000次。在旁人看来,要从这些数据中找出对控制车辆真正有用的信息,简直是一项不可能完成的任务。
为了达到这一目的,Kelvin、Marc利用github的开源数据,自己搭建了一个探测工具。它能够“潜伏”在特定的端口,实时监控UDP发送的数据包。一旦出现异常数据,会立刻进行甄别。
通过对比发自CID和智能手机客户端的不同车辆控制指令,Kelvin、Marc很快找到了目标数据包以及CID上负责发送该指令的服务类别。
经过对这项服务代码逆向编译,Kelvin、Marc发现特斯拉Model S似乎不会从车载娱乐系统发送CAN总线的数据帧到车辆控制系统。反之,CID通过一个VAPI接口可以要求网关执行任何允许指令中的一条或几条。
由此不难看出,这样严密运行机制中的一个小小的网关对汽车安全可谓意义重大。即便车载娱乐系统的内部局域网已经「沦陷」,它的存在也使得黑客无法将CAN总线的数据帧发送给车辆控制系统。
上述实验表明,攻破一辆特斯拉Model S的车载娱乐系统并不能让黑客直接控制车辆,当然前提是网关能够经得住“摧残”。Kelvin、Marc表示并没有对网关的安全性作深入了解,希望有同行在该领域有更多尝试。
当然,Kelvin、Marc识别出了系统能够接受的一些合法的VAPI指令,操作后成功将车熄火。在整个测试过程中,他们发现在车子行驶过程中如果发出“power off”的命令,Model S会立即切断电源。然而在低速行驶状态(<时速8公里/小时)下,车子会立即制动并晃晃悠悠地停下来;当车速高于8公里/小时,车子会立即挂入中档,不再加速,但不会采取制动措施。此时,驾驶员依然能够控制转向和刹车。
注意:处于安全考虑,所有的“入侵”实验都是在封闭环境中完成的,而且测试车速一直都不超过16公里/小时。
特斯拉,你可长点心!
为了“入侵”特斯拉Model S,Kelvin、Marc不得不针对不同的漏洞建立了多层的攻破方案,并非只是简单地通过内嵌系统来完成的。下面的这幅图是这次实验的简化成果,里面详细介绍了两位安全专家一层层“黑”入Model S的方法步骤,而一些不怀好意的恶人也正是通过这样的形式实施对车辆的破坏的。
尽管通过这次试验,特斯拉Model S被爆出很多安全漏洞,但Kelvin认为特斯拉的工程师团队在系统架构上依然有很多值得学习的地方:
① OTA空中升级:如果特斯拉要堵住哪个安全漏洞,只要通过OTA升级的方式即可完成,无需召回也并不需要邮寄装有软件更新的U盘。
② VPN配置:Model S的VPN配置已经在出厂前由工程师妥善配置好,不会受到一些常见的扰乱系统设定的攻击;
③ 账户循环密码:每24小时,特斯拉账户密码会循环更换一次;
④ 车辆控制、车载娱乐系统相互隔离:Model S的网关系统有可供车载娱乐系统接入的API端口,相比直接接入CAN总线的架构方式,更安全可靠。
当然,Model S如果未来能在以下方面有所提升,安全性将会得到大幅提升:
- ① 由于Model S车内提供的Wi-Fi热点服务使用了静态WPA密钥,如果采取WPA企业认证的方式就可以避免不同的车辆之间交换静态密钥信息。
- ② 诚然,Model S有着一系列强健的周边安全保护措施,但它的内部网络在安全架构上却相对很薄弱。因此,Kelvin、Marc认为对汽车而言,足够安全的系统是让黑客通过车载娱乐系统入侵后,发现这么做然而并没有卵用!
- ③ 纯文本证书的存储问题。由于VPN密钥和安全令牌都以纯文本的形式储存,因此最好将这些信息保存在硬件存储设备中(例如TPM、TrustZone、Secure Element)。此外,车载娱乐系统间传输信息通常都不会加密,甚至都不要验证;甚至局域网内部服务通信也不采取任何加密的形式,因此黑客能够监控到所有的数据传输。而为了保证安全,所有组件之间的通信都应该采取对网络「零信任」的机制。
所以,从“入侵”特斯拉的案例来看,Kelvin、Macr给出的加强车辆网络安全建议,也主要是围绕增加OTA空中升级机制、车辆控制与娱乐系统从底层网络分开、强化每个组件的安全性(如浏览器)三方面进行的。在之后的汇总篇中,车云菌将和各位深入聊聊涉及智能汽车、车联网安全的那些事儿。