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渗透测试,我有一套自己的流程。说白了就五步:
- 信息收集:拿到目标车辆的维修手册、CAN DBC文件、固件版本。没有这些,你就是在盲打。
- 攻击面分析:找出所有物理接口(OBD、USB、以太网)和无线接口(Wi-Fi、蓝牙、蜂窝)。
- 漏洞挖掘:重点关注CAN总线、以太网SOME/IP协议、传感器数据流。
- 漏洞利用:写PoC代码。比如构造一个假的AEB(自动紧急制动)触发报文。
- 报告输出:不仅要写技术细节,还要评估对功能安全的影响等级(ASIL A到D)。
避坑指南:我曾经在测试一辆L2级车时,直接往CAN总线上发刹车指令,结果车在测试场里突然急刹,差点把测试设备甩飞。后来我学乖了——测试前一定要断开执行器的物理保险丝,或者用仿真环境代替实车。
你可能会问:为什么不用现成的工具?比如CANoe、PCAN?我的建议是:工具只是辅助。真正值钱的是你对系统逻辑的理解。举个例子,你知道AEB系统在什么条件下会忽略雷达数据吗?如果不知道,你连攻击入口都找不到。
1.4 实战中的常见误区
最后聊几个我踩过的坑:
- 误区一:只测CAN总线,忽略以太网。现在很多ADAS域控制器内部走的是SOME/IP协议,攻击面更大。
- 误区二:只测静态,不测动态。车辆在高速行驶时,传感器数据流和低速时完全不同,很多漏洞只有在动态下才暴露。
- 误区三:忽略时间同步攻击。ADAS系统依赖精确的时间戳来融合传感器数据。如果你能扰乱PTP(精确时间协议),整个感知系统就乱了。
警告:千万不要在公共道路上做渗透测试!哪怕你只是发一个诊断报文,也可能导致车辆失控。我见过有人因为贪图方便在高速上测试,结果触发了车辆的紧急制动,后车追尾。测试必须在封闭场地或仿真环境中进行。
好了,第一章就聊这么多。记住一句话:ADAS安全不是防黑客,是防事故。我们做的每一行代码、每一次测试,最终都是为了路上的人能安全回家。