Jeep Cherokee 2015 远程攻击复盘:从蜂窝网到 CAN 总线的五层渗透

导语:十年前的车,能被远在十公里外的笔记本接管方向盘和刹车。Miller 和 Valasek 用五层渗透链把一辆 2014 款 Jeep Cherokee 变成了四轮遥控车,克莱斯勒紧急召回 140 万辆。这一战,敲醒了整个车联网行业。


一、事件背景

1.1 主角与车辆

2015 年 7 月,安全研究员 Charlie Miller(查理·米勒)和 Chris Valasek(克里斯·瓦拉塞克)在 Black Hat USA 大会公开论文《Remote Exploitation of an Unaltered Passenger Vehicle》(未改装乘用车的远程漏洞利用)。演示车辆是一台 2014 款 Jeep Cherokee,但整套 Uconnect 系统(哈曼供应)同时部署在克莱斯勒、菲亚特、道奇多款车上,影响面极大。

1.2 Wired 现场演示

Wired 记者 Andy Greenberg 在 65 号公路上以 70 英里时速行驶,研究员在十公里外通过笔记本电脑接管车辆:远程开启空调、切到本地电台、显示自定义图像,最终切断变速箱让发动机熄火,让刹车失灵。Greenberg 事后回忆“方向盘和刹车都失效了,我只能慢慢滑到路边停下”。这段演示直接逼克莱斯勒召回 140 万辆车升级 Uconnect 软件。


二、Uconnect 系统架构

要复盘这条攻击链,先要摸清 Uconnect 在车里到底干什么。

Uconnect 本质是基于 QNX 的车机系统,集成了 4G 蜂窝模组(这次案例里是 Sprint 网络)、Wi-Fi 热点、导航、媒体播放、App 互联。关键子系统:

  • 蜂窝网络接入:车机直接挂在运营商 APN 上,能被外部互联网访问到。
  • D-Bus 服务:进程间通信总线,默认监听 6667 端口,部分服务以 root 权限运行。
  • 多媒体与导航主控:通过 SPI 总线连接一颗 Renesas V850ES/Fx3 微控制器。
  • V850 微控制器:车里最关键的“CAN 网关”,所有车身 CAN 帧都要过它的手。
  • CAN 总线:车身 CAN、底盘 CAN、动力 CAN 三大网络,承载方向盘、刹车、变速箱指令。
Jeep Cherokee 攻击链示意图

三、五层攻击链

3.1 第一层:定位目标

Sprint 给 Uconnect 分配的是公网 IPv4 地址。攻击者用 Masscan、Zmap 在 Sprint 段上扫描 6667 端口(D-Bus),找出所有在线的 Uconnect 设备。Miller 和 Valasek 在论文里写到,扫描结果显示当时约 21 万台车在线。

这是攻击的入口:蜂窝网络没有为车机做任何网络层隔离,等于把 CAN 总线直接挂到公网上。

3.2 第二层:D-Bus 服务暴露

Uconnect 的 D-Bus 守护进程绑定在 0.0.0.0:6667,任何能连到这台车的 IP 都可以和 D-Bus 对话。攻击者先枚举 D-Bus 服务名,找到类似 com.harman.service.Navigator、com.harman.service.SoftwareUpdate 的关键服务。

这些服务里有一个“软件升级服务”,处理 OTA 升级请求时存在缓冲区溢出漏洞(CVE-2015-5611 一类问题)。攻击者构造恶意 D-Bus 消息,触发堆溢出,进而在 Uconnect 上以 root 权限执行任意代码。

3.3 第三层:root shell 落盘

拿到 root shell 后,攻击者能直接读 /etc/passwd、写文件、调任意进程。研究员的利用脚本会把后续 payload 写到 /tmp/microsd/ 下,准备下一步的固件刷新工具。

这一步意味着 Uconnect 完全沦陷,所有娱乐、导航、App、Wi-Fi 热点都归攻击者管。

3.4 第四层:SPI 总线重刷 V850

V850ES/Fx3 是 Uconnect 通过 SPI 总线挂在主控板上的协处理器,负责把 Uconnect 的高层指令翻译成 CAN 帧发到 CAN 总线上。攻击者利用主控的 root 权限,通过 SPI 直接调用 V850 的 bootloader,往 flash 写一份“定制固件”。

这份定制固件不再做“白名单 CAN ID 过滤”,而是接收攻击者下发的任意 CAN ID 和任意 payload,相当于给攻击者一个直连 CAN 总线的“后门 V850”。

3.5 第五层:任意 CAN 帧注入

V850 重刷完成后,攻击者通过蜂窝网络回到 Uconnect,命令 V850 发出任意 CAN 帧。Jeep 的车身 CAN 上跑着转向助力、刹车助力、变速箱控制、动力总成等 ECU,攻击者可以:

  • 发送 0x1A0 帧让变速箱进入低速模式
  • 发送 0x202 帧切断刹车助力
  • 发送 0x286 帧让方向盘助力电机反向
  • 发送 0x186 帧让发动机熄火

到这一步,车辆的方向盘、刹车、油门、变速箱全部可以被远程指令覆盖。Andy Greenberg 当场演示的就是这套能力。

Jeep Cherokee 攻击链五层渗透图

四、漏洞细节

4.1 D-Bus 缓冲区溢出

升级服务处理 OTA 描述符时未校验 payload 长度,攻击者用 ROP 链绕过 NX 拿到 root。

4.2 缺乏代码签名

V850 bootloader 没强制校验固件签名,任何固件都能写进 flash。

4.3 缺乏网络分段

Uconnect、V850、CAN 总线处在同一信任域,没网关或 IDS 隔离。

4.4 缺乏 CAN ID 过滤

原厂 V850 没 CAN ID 白名单,攻击者下发任意 ID 帧都被广播。

4.5 缺乏速率限制

攻击者高速发 CAN 帧做总线洪泛,导致 ECU 失能或 limp mode。


五、修复与召回

克莱斯勒随后做了五件事:

  1. OTA 补丁:推送修复后的 Uconnect 固件,堵住 D-Bus 溢出。
  2. 网络层防火墙:运营商给车机加上防火墙,限制外部主动连接。
  3. V850 固件签名:升级 V850 bootloader,强制 RSA 签名校验。
  4. CAN 网关 IDS:车身 CAN 网关加入侵检测,过滤异常帧率与 ID。
  5. 召回 140 万辆:无法 OTA 的车辆回店升级。

这套修复组合拳成了后续十年车联网安全的“基线参考”。


六、红队复盘视角

站在攻击者角度,这次攻击有几个值得学习的点:

6.1 入口永远是“公网可达”

任何装蜂窝模块的 ECU,都不能假设它在私网。Miller 自己说最关键的一步不是 V850 重刷,而是 Sprint 给车机分了公网 IP。防御侧如果在 APN 层隔离,后面四步都进不来。

6.2 信任域要逐层切分

Uconnect 主控、V850、CAN 总线应该各自隔离:主控只能通过受限 API 调 V850,V850 只放行白名单 CAN ID。任何一层省了,整条链就归攻击者。

6.3 MCU 也要做代码签名

很多人以为车规 MCU 资源小、不值得加签名,结果 V850 没签名导致固件被换。所有能写 flash 的 bootloader 都要做签名校验,私钥烧死在 ROM 里。

6.4 CAN 总线要有“速率和 ID 体检”

现代车里的 CAN IDS/CPS 会监控异常帧率、异常 ID、新出现的 ID。Miller 的演示如果跑在 2024 年的车身上,V850 下发第一条异常帧就会被记录。


七、复现思路(合规实验)

仅供封闭实验环境(实验室车辆或 HIL 仿真)参考:

# 假设已经获得 Uconnect 上的 root shell(实验室仿真环境)
# 通过 SPI 把改写后的 V850 固件刷入
import spidev

spi = spidev.SpiDev()
spi.open(0, 0)            # /dev/spidev0.0
spi.max_speed_hz = 1_000_000

# 进入 bootloader 模式
spi.xfer2([0xFF])
# 发送固件(自定义 payload,跳过签名校验仅适用于实验板)
with open("v850_payload.bin", "rb") as f:
    while chunk := f.read(256):
        spi.xfer2(list(chunk))

# 模拟攻击者发送任意 CAN 帧(需要物理接入 CAN 总线)
import can
bus = can.interface.Bus(channel='can0', bustype='socketcan')
msg = can.Message(arbitration_id=0x286, data=[0x01, 0x00, 0xFF], is_extended_id=False)
bus.send(msg)

注意:这条 PoC 必须在隔离的 HIL 台架或实验车上跑,公网真实车辆属于违法行为。


八、对现代车联网的启示

十年前这条攻击链几乎能直接复用到现在的入门级智能车上。现代车厂主要做了三件事防止 Miller 复刻:

  • 零信任网络:TBOX、车机之间用 mTLS 互信,每个域独立证书。
  • 域控制器隔离:座舱、ADAS、动力域物理隔离,跨域必须经过中央网关。
  • CAN 安全协议:CAN XL、SecOC 在握手层做认证。

但同样的攻击面还出现在 OTA、远程诊断、车主 App 等新入口。Miller 的故事没有结束,只是换了入口。


九、思考题

  1. 如果你是现代车厂安全架构师,怎么在 TBOX 和车机之间做网络分段?
  2. 重刷 V850 那一步如果加了签名校验,攻击者还能从哪一层继续突破?
  3. 现代车里的中央网关(Central Gateway)应该具备哪些安全能力,才能挡住十年前的 Miller 攻击?

下一篇预告:第 09 讲《Tesla 远程攻击复盘:从 API 到车机》。


素材出处

  • Miller C, Valasek C.《Remote Exploitation of an Unaltered Passenger Vehicle》, Black Hat USA 2015
  • Wired《Hackers Remotely Kill a Jeep on the Highway》, 2015-07-21
  • Kaspersky《Black Hat USA 2015: The full story of how that Jeep was hacked》
  • IEEE Spectrum《Jeep Hacking 101》
  • 克莱斯勒召回公告 NHTSA 15V-461

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容