安全圈是这么玩车的——对Tesla Model S 的硬件逆向分析研究
导语:和现代汽车一样,特斯拉的构造是通过CAN网关连接多个独立的CAN总线,网关的另一端有一台功能强大的嵌入式计算机,可以接入公网,可控制其所有组件的固件更新。
0x01 Tesla 硬件概述
和现代汽车一样,特斯拉的构造是通过CAN网关连接多个独立的CAN总线,网关的另一端有一台功能强大的嵌入式计算机,可以接入公网,可控制其所有组件的固件更新。
特斯拉的物理组成:
· CID(中央信息显示单元):仪表板中央的控制台
· IC(仪器集群)
· 常规CAN连接的ECU
0x02 组件概述
高度集成的CID包括:
大多数车辆是IVI(车载信息娱乐系统),CAN网关和TCU(电信控制单元)配备了单独的单元,但是Tesla将中央信息组合为一个单独的大型单元。在其他汽车上,IVI,CAN网关和TCU通常都是由不同的制造商生产的(例如Clarion IVI,Bosch网关和Ficosa TCU)。特斯拉集成了这些单元以实现完全控制,这也解释了为什么可以如此快速地进行更改。
CID和IC通过以太网和CAN总线连接。该IC唯一与安全相关的组件是另一个Nvidia VCM。这与CID中的不同,RAM减少了50%。CAN连接的ECU在车辆的其余部分更为通用,通常是带有集成闪存,运行裸机软件或RTOS(实时操作系统)的微控制器。它们是由多家制造商生产的,有些与其他车辆相似或相同,而其他一些(例如,Pektron生产的车身控制模块)则是定制的。
特斯拉中的CAN总线:特斯拉还有许多LIN总线。
0x03 CID硬件架构
CID相当复杂。一个14层PCB结合了几个功能块。
这使得逆向变得非常棘手,尤其是因为缺乏公开信息,CID损坏就会导致车辆无法使用。
我们从特斯拉中取出了CID,以对其进行通电和检查。
0x04 可视计算模块
NVidia VCM(可视计算模块)位于CID的核心。这是运行Linux的基于ARM的计算机模块,该操作系统驱动Tesla的大多数可见动作。
CID和IC中都使用了Nvidia VCM模块。
奥迪,宝马和兰博基尼都与Nvidia VCM相关。例如,我们在奥迪虚拟座舱中发现了类似的模块。
VCM中使用了Nvidia Tegra片上系统(SoC)。它具有多核ARM处理器,GPU和其他各种音频和视频加速器。它比我挖掘过的其他IVI中使用的SoC强得多,这可能是由于CID显示屏很大。Tesla Autopilot(AP1和AP2)使用单板计算模块。这些与CID和IC中的VCM非常不同。该车辆没有特斯拉自动驾驶仪模块,因此我无法对其进行测试。在CID上的代码中,我都没有找到对自动驾驶仪的引用。
VCM没有公共数据表,这在汽车电子产品中很常见,并且使逆向非常困难。当只有一个单元可以测试时,尤其是如此,这意味着必须非常小心,不要损坏它。“ Jetson Pro开发套件”中使用了类似的VCM模块:
即使没有VCM或Tegra SoC的手册,开发板也经常包含所提供模块的原理图和引脚,以及破坏性测试的备件。这对于在Tesla中对VCM进行逆向很有帮助。不幸的是,Jetson Pro开发套件没有提供任何公共文档。尽管我尝试从eBay获得开发工具包,但是在编写此报告时没有可用的工具包。
但是,类似的开发板Jetson TK1也很容易获得。不使用VCM模块,而是直接将其他Tegra SoC安装到PCB。有关此文档的信息仅提供了有关Tegra SoC的少量信息。可以获取有关Tegra 2、3和4 SoC系列的技术参考手册,但是它们不包含引脚图,因此在逆向中用途有限。
为了访问文档和论坛,我在Nvidia.com创建了一个有效的开发人员帐户,但是我只能找到VCM或Jetson Pro开发套件的参考。我写了一个论坛帖子,询问有关文档的信息,但没有得到回应。我设想必须签署NDA才能访问重要的内容,但我不太可能与第三方共享任何信息。
VCM上的连接器就像MXM,用于笔记本电脑的某些图形模块,这些模块具有标准化的引脚排列。但是,这些模块的引脚排列与VCM不同。我研究了其他基于Tegra的单板计算机模块,但没有发现任何相似之处。使用了不同的连接器,外部存储器和外围设备。我没有发现任何有意义的东西。几则新闻报道(包括https://electrek.co/2017/09/26/tesla-intel-power-infotainment-system/)报告说,特斯拉正在将基于Nvidia的平台更改为英特尔。这个新板子叫做“戈登湖”,看上去很像Nvidia VCM:
连接器是相同的,而安装布置看起来却有所不同,尤其是在使用散热器板时。和以前一样,如果不输入NDA,将无法获得数据表。
为了进一步进行逆向,我从CID和IC中取出了VCM进行检查:
这些是在CID的VCM上看到的主要组件:
IC中的VCM非常相似:
两个VCM的引脚输出是相同的,电源和接地在相同的引脚上,已由示波器确认。不希望从特斯拉直接测试VCM,因为存在损坏CID或IC或使之积压的风险。这可能会使汽车无法使用,并需要花费3,000到10,000英镑在特斯拉进行维修。
为此,我从二手IC获得了第三个VCM。该测试与测试中IC中的VCM相同,但RAM减少了50%。IC本身是不同的型号。我进行了安全测试:
从逆向中获得的信息不多。
第1阶段和第2阶段的引导程序,内核以及其他与引导相关的数据包含在64MB NOR闪存中,并且其中的大多数数据都通过主要/恢复机制进行备份,以允许设备引导至恢复模式。
文件系统的其余部分位于8GiByte NAND闪存中。大多数文件存储在压缩的只读文件系统(squashfs)中,一小部分存储在读/写文件系统(ext4)中。这很常见,并且(大多数)不可更改的文件(例如系统二进制文件)占用少量闪存,而设置和日志的存储未压缩。
0x05 以太网交换机
内置的以太网交换机通过Marvell 88E6061将VCM连接到车辆的其余部分,此五端口10/100交换机支持VLAN。使用串行接口SMI进行配置。CID启动时,将配置以太网交换机。逻辑分析仪可以嗅探SMI命令。我无法确定它们是由VCM还是由网关处理器发送的,使用多个VLAN将流量与各个组件隔离开来。
SMI没有安全功能,例如完整性保护,它信任所有信号,这意味着可以篡改或修改通信。可以以这种方式修改VLAN配置,从而有可能在系统中创建新路由。交换机旁边是5个LED,指示以太网端口上的链接/流量,LQFP包装可轻松访问信号。
0x06 网关
使用飞思卡尔SPC5668GVMG,这是一个基于PowerPC的微控制器,具有2MB闪存和512KB RAM,完整的数据表可用。
具有CAN收发器的网关。在CAN网关中经常发现类似的设备,网关连接到CAN总线和以太网交换机,关上的固件是FreeRTOS,这是一种轻量级的实时操作系统(RTOS),可用于多种汽车用途。
0x07 蜂窝调制解调器
Sierra AirPrime AR8552是常见选择。它安装在子板上,紧邻GPS接收器模块,ublox LEA-6R-0-002和加速度计:
在内部,AR8552使用Qualcomm MDM6200 SoC。这些通常运行一个称为Legato的嵌入式Linux发行版。USB用于蜂窝调制解调器和VCM相互通信。
VCM不包含SIM卡,这与以前记录的美国Tesla调制解调器不同。而是将其安装在远程吊舱中,并通过线路将其连接到CID,因此可以在不删除CID的情况下访问和更改SIM卡。这可能是由于欧盟竞争法所致,以确保特斯拉可以使用多个移动网络:
在这种情况下,SIM卡是O2。我无法确定SIM卡是否随车辆一起提供或是否已被更换,SIM卡没有感兴趣的数据,例如SMS消息。调制解调器与EE SIM可以配合使用。
车辆中的大多数TCU不允许用户访问和可交换的SIM卡。嵌入式或不可访问的SIMS正在成为常态。尽管对特斯拉进行了进一步检查,但我并未发现在CID的VCM上运行的任何跟踪或eCall功能。表明这些安全保护功能按照其他车辆中的TCU直接在蜂窝调制解调器上运行。
要从Sierra Wireless AR8522模块中恢复固件而不造成损坏是非常困难的,因为它是一个紧密包装的BGA模块,其中包含许多BGA芯片,所有这些芯片都包含在焊接屏蔽下。
0x08 Wi-Fi模块
CID采用面朝下安装的Parrot Wi-Fi和蓝牙模块。我们无法确认具体型号,因为无法将其从主板上卸载,之前拆卸的CID显示了Parrot FC6050W,VCM和Parrot模块通过USB进行通信。
0x09 SD存储卡
CID主板的顶部是两个插槽式SD卡。CID顶部的插槽允许访问连接到VCM并具有映射数据的16GB microSD卡:
必须分离CID才能访问4GB的普通SD卡。它连接到网关,并在固件更新期间用于暂存文件,在逆向过程中,它们都扩展到了CID之外,以便在汽车行驶时可以轻松访问它们。
两张卡都没有看到完整性保护或加密。
0x10 其他组件
CID上与安全性不太相关的其他组件:
· ADI公司的ADSP-21489 DSP芯片,可能用于音频播放和录制。LQFP封装连接到外部串行闪存芯片
· Altera Cyclone IV EP4CE40F23A7N FPGA已连接到两个ISSI RAM芯片和一个用于bitteam的串行闪存芯片(本质上是FPGA固件)。这可能允许VCM与用于显示显示器和触摸面板进行接口。
0x11 外置USB
CID的背面有两个USB端口,既接受媒体设备,又在UI中显示它们。我尝试了USB外设,即以太网适配器和键盘:
· 与基于Linux的IVI一样,USB以太网适配器可以枚举,但没有起作用。我看不到任何TCP / IP通信。
· 枚举的键盘不起作用
0x12 内部USB
CID主板上只有一个USB端口连接到VCM。之前的研究(https://blog.lookout.com/hacking-a-tesla)发现,此漏洞可用于访问Tegra恢复模式(RCM),它不能被禁用。仍然受到安全保护,这意味着必须在接受命令之前对其进行签名。
该引信Gelée漏洞是在RCM bootloader的恶意USB数据包可以绕过安全检测,我与发现此漏洞的研究人员确认,该漏洞很可能存在于Tesla中VCM使用的早期Tegra SoC上。由于存在使VCM无法操作的风险,我决定不尝试利用此漏洞。
0x13 以太网端口
在CID上,使用专用的汽车连接器公开了两个以太网端口。以前是完全打开的,一个是专用的诊断连接,现在,这是通过专有的handler来保护的,并且没有已知的漏洞。特斯拉服务器通过VPN连接向CID发送“seed”。
CID和IC通过另一个以太网连接器链接。以太网交换机可以拦截该流量并嗅探流量,该区域中的所有漏洞现已被修复。在特斯拉汽车具有自动驾驶仪的地方,诊断以太网连接器被重新调整了用途,并具有诊断端口。
0x14 常规诊断连接器
还有两个以上的常规诊断连接器。OBD-II端口可访问CAN总线1和6,有一个特殊的诊断端口,可访问CAN总线2、3、4和6,以及K-Line总线专门用于HVAC。没有观察到隔离或访问控制的迹象,如果有人可以访问此端口,他们可以嗅探并发送任意CAN流量。
0x15 JTAG串口
各种嵌入式设备都可以恢复固件,并受到调试协议JTAG的攻击。JTAG功能存在于CID和IC的多个设备中。在物理JTAG连接方面,CID和IC主板上都安装了多个10pin接头连接器,它们可能是JTAG连接,因为它们都在微控制器或存储设备附近:
有几种方法可以确定引脚排列:
1. 爆破测试JTAG(“ JTAGulating”),可能产生误报并损坏电路板。
2. 如果可以访问引脚并且提供数据手册,则对其中一个器件上已知JTAG引脚的连续性测试是安全的。
唯一具有可访问引脚和JTAG的封装是Analog Device ADSP-21489,其余均为BGA。可以确定JTAG连接器的引脚排列,因为可以使用数据表和引脚排列。我订购了特定类型的连接器,制作了线路,并使用了各种JTAG适配器和逻辑分析仪来确定是否已启用安全措施。
我尝试了JTAG命令,但CID和IC上的VCM没有响应,我认为由于SoC保险丝熔断,很可能会阻止访问。使用MPC56xx系列提供的“检查”功能,JTAG ID会引起网关处理器的响应。使用64位密码保护,我尝试使用默认值FEEDFACECAFEBEEF也失败了,可以使用其他方法获得固件。
JTAG ID引起了ADSP-21489的响应,但似乎正在使用64位密码保护。此专有保护方案需要特定的JTAG适配器,这将花费约1200英镑,并且可能仅确认无法访问,我认为不太可能造成任何直接的安全风险。
JTAG Secure禁止访问Altera Cyclone IV FPGA,没有已知的安全问题。我没有对Parrot Wi-Fi板进行检查,因为没有可用的数据表,并且对安全性的影响很小,很高兴看到所有JTAG访问均已关闭,因为许多其他系统都是允许访问的。
发表评论