特斯拉运营着一个漏洞悬赏项目 (bug bounty program),邀请研究人员寻找其车辆中的安全漏洞。为了参与,我需要实际的硬件,于是我开始在eBay上寻找特斯拉Model 3的零件。我的目标是让特斯拉车载电脑和触摸屏在我的桌上运行,启动车辆的操作系统。
车载电脑由两部分组成——MCU (多媒体控制单元, Media Control Unit) 和自动辅助驾驶电脑 (AP),它们上下叠装在一起。在车内,电脑位于乘客座椅前方,大致在手套箱后面。这个部件本身大小像一个iPad,厚度像一本约500页的书,包裹在一个水冷的金属外壳里:

通过在eBay上搜索“特斯拉Model 3 MCU”,我找到了很多价格在200到300美元之间的结果。查看商品列表后,我发现许多卖家是“拆车”公司,他们购买报废车辆,将其拆解,然后将所有零件单独出售。有时,他们甚至会附上原报废车辆的照片,并提供一种方法,可以筛选出从同一辆车中拆出的零件列表。
为了启动车辆并与之交互,我还需要一些东西:
- 一个能提供12V电压的直流电源
- 来自报废Model 3的触摸屏模块
- 将它们连接在一起的显示线缆
对于电源,我选择了亚马逊上一款0-30V可调的型号。当时有5安培和10安培的版本可选,我觉得为安全起见留些余量,就选择了10安培版本——后来证明这是一个非常明智的决定,因为整套设备在峰值时可能消耗高达8安培的电流。Model 3的屏幕在eBay上出奇地贵,我猜是因为它是一个热门的更换部件。我找到了一个不错的交易,175美元。
最难订购的最后一个部件是连接MCU和屏幕的线缆。我需要这个是因为出售的电脑和屏幕,它们的连接线都在插头后几厘米处被剪断了(有趣的是,大多数卖家都这么做,而不是直接拔下插头)。
就在此时,我发现特斯拉公开了其所有车辆的“电气参考”布线图。在他们的服务网站上,你可以查找特定的车型,搜索某个部件(比如显示屏),它会精确地显示部件应该如何布线、使用什么线缆/连接器,甚至单个连接器内不同引脚负责的功能:

原来显示屏使用了一根6针线缆(2针用于12V和地线,4针用于数据),配有一个特殊的Rosenberger 99K10D-1D5A5-D连接器。我很快发现,除非你是批量订购的汽车制造商,否则根本买不到一根这样的Rosenberger线缆。eBay上没有,Aliexpress上也没有,基本上完全没有搜索结果。
经过一番搜寻,我发现这种线缆与一种更广泛使用的汽车线缆“LVDS”非常相似,后者用于宝马汽车中传输视频。乍一看,连接器和我需要的Rosenberger连接器完全吻合,于是我就下单了:

电脑最先到货。为了尝试给它通电,我使用特斯拉的电路图和网上人们进行类似桌上MCU设置的几张照片,查找出需要将12V和地线连接到哪个连接器的哪个引脚。由于电脑附带了被剪短了一截的线缆,我可以剥开相关电线,将电源夹子夹在正确的线上:

我看到几个红色LED开始闪烁,电脑启动了!由于还没有屏幕,没有太多与车辆交互的方式。阅读 @lewurm 之前在 GitHub 上的研究 ,我知道至少在旧版本的车辆中,车内有一个网络,其中一些组件有自己的网页服务器。我将一根网线连接到电源连接器旁边的端口和我的笔记本电脑。
这个网络没有DHCP,所以你必须手动设置你的IP地址。你选择的IP地址必须是 192.168.90.X/24,并且应该高于 192.168.90.105 以避免与网络上的其他主机冲突。在Reddit上,我找到了一份来自车辆的旧的 /etc/hosts 文件内容,显示了通常与特定IP地址关联的主机:
192.168.90.100 cid ice # mcu
192.168.90.100 ic # 仅限 Model X/S | IC = 仪表盘 (instrument cluster)
192.168.90.102 gw # 网关 (gateway)
192.168.90.103 ap ape # ap = 自动辅助驾驶 (autopilot)
192.168.90.104 lb # 不清楚
192.168.90.105 ap-b ape-b # 同样也是自动辅助驾驶
192.168.90.30 tuner # 还是不清楚
192.168.90.60 modem # 这个有 ftp 服务器
@lewurm 的博客提到,在MCU(192.168.90.100)上,端口 :22 的SSH和 :8080 的网页服务器是开放的。在较新的型号上情况仍然如此吗?是的!



我已经在MCU上找到了两个可以探索的服务:
- 一个SSH服务器,上面写着 “SSH allowed: vehicle parked” ——考虑到当前情况,这相当有趣
- 这个SSH服务器需要特殊签名的SSH密钥,而这些密钥本应只有特斯拉才能生成。
- 有趣的是,特斯拉在其漏洞悬赏项目中提供了一个 “Root访问项目”(“Root access program”)。找到至少一个有效“root级”漏洞的研究人员将获得一个用于他们自己车辆的永久SSH证书,允许他们以root身份登录并进一步进行研究。——这是一个很好的福利,因为一旦进入内部,找到更多漏洞就容易多了。
- 一个在
:8080端口上的类似REST的API,它返回“任务”的历史记录- 这项服务被称为“ODIN”(车载诊断接口网络, On-Board Diagnostic Interface Network),故意暴露出来以供特斯拉的诊断工具“Toolbox”使用。
大约在这个时候,我还移除了金属屏蔽盖,以查看板子内部的确切样子。你可以看到原来上下叠装在一起的两块不同的电路板:

当屏幕和宝马LVDS线缆到货后,不幸的是,很明显连接器不合适。宝马连接器的两侧要厚得多,无法插入屏幕。这导致了一些非常简陋的临时尝试:将MCU和屏幕原本被剪短的“尾巴”线缆剥开,然后把单根电线连接在一起。电线非常敏感且纤细。这个设置 成功运行了几秒钟,但导致线屑掉落在PCB上造成短路,烧坏了一个电源控制芯片:






要找到被烧坏芯片的名称/型号极其困难,尤其是因为芯片上印刷的部分文字因损坏而变得无法辨认。为了能继续这个项目,我不得不订购另一台完整的车载电脑。
与此同时,我的朋友 Yasser (@n3r0li) 不知怎么地完成了不可能的任务,将其识别为 “MAX16932CATIS/V+T” 降压控制器,负责将电源转换为更低的电压。我们订购了芯片,并将电路板带到当地的PCB维修店,他们成功地更换并修复了MCU。现在我有了两台电脑可以工作。
所以我真的需要那根Rosenberger线缆,这是绕不过去的。
在网上寻找无果,甚至去了伦敦的特斯拉服务中心(这至少可以说是一次奇怪的经历)之后,我不得不接受我一直试图避免的事情:购买一整套仪表盘线束。
回到特斯拉的电气参考,除了连接器,你还可以找到每一个零件编号。查看连接MCU和屏幕的线缆,显示编号为 1067960-XX-E。在eBay上搜索这个编号,会跳出这个“怪物”:

原来,真正的汽车没有单独的线缆。相反,它们有这些大的“线束”,它们将附近区域的许多线缆捆绑成一个整体。这就是我之前找不到单独线缆的原因。他们根本不单独生产它。不幸的是,我别无选择,只能用80美元买下这整个线束。
尽管它很笨重,但这束线束工作得非常完美。车辆启动了,触摸屏开始工作,我的桌上有了一个正常工作的车载电脑,运行着车辆的操作系统!


现在有了运行的系统,我可以开始摆弄用户界面,与暴露的网络接口交互,探索CAN总线,甚至可能尝试提取固件。

