1. ADAS系统安全概述

大家好,我是老张。在汽车安全这行摸爬滚打了十几年,今天咱们聊聊ADAS系统安全测试。说实话,这个话题我每次讲都觉得责任重大——你想想看,一个漏洞可能直接关系到路上行人的安全。

ADAS系统,说白了就是让车自己“看路”、“思考”、“行动”的一套电子系统。从最早的定速巡航,到现在的L2+级辅助驾驶,功能越来越强,攻击面也越来越大。我个人习惯把ADAS安全分成三块:感知层、决策层、执行层。每一层都有它的软肋。

1.1 ADAS系统架构

先看架构。典型的ADAS系统长这样:

层级 组件 典型接口 安全关注点
感知层 摄像头、毫米波雷达、激光雷达、超声波 CAN、以太网、LVDS 传感器欺骗、数据注入
决策层 域控制器、MCU、SoC PCIe、以太网、AUTOSAR 固件篡改、逻辑漏洞
执行层 EPS、ESP、iBooster CAN、FlexRay 指令伪造、拒绝服务

嗯,这里要注意。感知层最容易出问题。我在项目中遇到过,一个摄像头被激光笔照射后直接“失明”,导致车道保持功能失效。这不是理论,是真事。

1.2 安全威胁模型

威胁模型怎么建?我推荐用STRIDE模型,但得针对ADAS做调整。

  • Spoofing(欺骗):伪造传感器数据。比如用超声波干扰器让泊车系统误判距离。
  • Tampering(篡改):修改CAN报文。我曾经见过有人用树莓派往总线上灌假速度信号。
  • Repudiation(抵赖):日志被清空,事故后无法追溯。
  • Information Disclosure(信息泄露):通过OBD接口读取车辆隐私数据。
  • Denial of Service(拒绝服务):用大量无效数据淹没雷达处理单元。
  • Elevation of Privilege(权限提升):从娱乐系统跳转到ADAS域控制器。

核心观点:ADAS系统最怕的不是单一攻击,而是攻击链。比如先通过蓝牙进入IVI,再通过网关漏洞跳到ADAS域,最后篡改刹车指令。这种跨域攻击才是真正的噩梦。

1.3 渗透测试方法论

做ADAS渗透测试,我有一套自己的流程。说白了就五步:

  1. 信息收集:拿到目标车辆的维修手册、CAN DBC文件、固件版本。没有这些,你就是在盲打。
  2. 攻击面分析:找出所有物理接口(OBD、USB、以太网)和无线接口(Wi-Fi、蓝牙、蜂窝)。
  3. 漏洞挖掘:重点关注CAN总线、以太网SOME/IP协议、传感器数据流。
  4. 漏洞利用:写PoC代码。比如构造一个假的AEB(自动紧急制动)触发报文。
  5. 报告输出:不仅要写技术细节,还要评估对功能安全的影响等级(ASIL A到D)。

避坑指南:我曾经在测试一辆L2级车时,直接往CAN总线上发刹车指令,结果车在测试场里突然急刹,差点把测试设备甩飞。后来我学乖了——测试前一定要断开执行器的物理保险丝,或者用仿真环境代替实车。

你可能会问:为什么不用现成的工具?比如CANoe、PCAN?我的建议是:工具只是辅助。真正值钱的是你对系统逻辑的理解。举个例子,你知道AEB系统在什么条件下会忽略雷达数据吗?如果不知道,你连攻击入口都找不到。

1.4 实战中的常见误区

最后聊几个我踩过的坑:

  • 误区一:只测CAN总线,忽略以太网。现在很多ADAS域控制器内部走的是SOME/IP协议,攻击面更大。
  • 误区二:只测静态,不测动态。车辆在高速行驶时,传感器数据流和低速时完全不同,很多漏洞只有在动态下才暴露。
  • 误区三:忽略时间同步攻击。ADAS系统依赖精确的时间戳来融合传感器数据。如果你能扰乱PTP(精确时间协议),整个感知系统就乱了。

警告:千万不要在公共道路上做渗透测试!哪怕你只是发一个诊断报文,也可能导致车辆失控。我见过有人因为贪图方便在高速上测试,结果触发了车辆的紧急制动,后车追尾。测试必须在封闭场地或仿真环境中进行。

好了,第一章就聊这么多。记住一句话:ADAS安全不是防黑客,是防事故。我们做的每一行代码、每一次测试,最终都是为了路上的人能安全回家。