汽车“ECU”安全风险与攻击分析

前言

随着汽车电子、车联网、无人驾驶技术的快速发展,汽车控制智能化越来越深入,带来的安全隐患层出不跌,汽车系统被成功攻破的例子屡见不鲜,方法和手段也呈现多样化。

特斯拉“PKES(Passive Keyless Entry and Start)系统”被30秒攻破,攻击者在CHES2018发表了研究成果,我有幸在现场聆听,主要是利用中继攻击的方法进行攻击。特斯拉PKES工作原理如下:

img

特斯拉PKES工作原理

攻击者是在PKES的工作过程中汽车与钥匙的数据交互的过程中,伪装成汽车,获取敏感信息,攻破密钥,再伪装成KEY,解锁汽车,具体攻击过程如下:

Phase 0: 攻击者记录汽车周期性传输的wake以获取2字节的car id;

Phase 1: 攻击者伪装成汽车,传输2个选好的40位的challenge到key fob,并记录各自24位的response;

Phase 2: 使用challenge response对和TMTO表,就可以恢复40位的密钥。第一对用于选择正确的key子集,第二对用于从大约2^16个可能的key中找出key。

Phase 3: 攻击者伪装成key fob,解锁并启动汽车。

img

腾讯科恩实验室官方博客2016年曾发布文章称该团队已经成功攻破了特斯拉电动车的安全系统,并可以实现远程开启特斯拉电动车的天窗、车门以及在行驶中启动刹车。这是全球范围内第一次通过安全漏洞,无物理接触远程成功攻入特斯拉车电网络,并实现对特斯拉进行任意的车身和行车控制。汽车系统被成功的案例还有很多,就不一一举例说明了,后面有机会多多分享。

由于汽车智能控制、车联网、无人驾驶技术的发展需求,汽车ECU的功能丰富化、数量骤增化、互联多样化,可能带来的风险也会进一步增多,车载人身安全和信息安全成逐渐成为了大众的关注焦点。本文从安全的角度来分析ECU的潜在安全风险。

那么ECU到底是什么呢?

首先在汽车百科上查了一下,结果如下:

img

文中解释ECU是指微控制器+外设,还有相应的软件。What?听着似乎有点抽象,好,再不懂可以问问百度:

img

img

ECU可以简单理解为小型的嵌入式系统,大概电路结构如下:

img

汽车电路系统整体架构图

一辆车有多少个ECU?这些ECU功能是什么呢?来先看一下电路系统整体构成架构:

img

之前的统计数据是每辆车平均是具有30~50块ECU,有的高端车是150个ECU,随着车联网,智能控制,无人驾驶技术的需求,ECU数量会越来越多,功能也会越来越强大,关于ECU的功能,汽车百科给出了一些例子:

img

各种功能的ECU的列表

攻击ECU能获得什么啊?

攻击汽车的ECU可以获得非法访问ECU的权限,从ECU获取数据和控制或影响ECU的运行,这些数据和运行的控制可以先简单理解为应用和应用的数据,这些其实就是ECU的”财产”,或者理解为攻击者想获得的信息,如下图:

img

ECU的“财产”

有了攻击目标,如何对ECU进行攻击呢?通常的做法是分析出ECU中的脆弱点,例如一些安全漏洞,把它作为切入口,找出一条可以执行的攻击路径,各个击破,最大限度的获取它的财产。下面详细介绍ECU的风险点和如何对ECU进行攻击。一个典型的ECU通常具备多种接口,有线/无线通信接口,内部接口,debug接口等,大概分为两类:用户可访问的通道和受限制的通道,如下图的两边,一边是正常模式下用户可以正常使用的有线和无线的通信通道,另一边是针对特定对象受限的访问通道,例如一些特权,debug操作等。

img

ECU的接口和通道

OBD-II(on-board diagnostics connector)接口可以用来诊断整个汽车ECU状态信息,但可能被攻击者利用来操纵汽车网络或者窃取信息,这算是一个可能忽略的风险点,但规范SAE J3138和J3146已经规定需限制诊断接口权限和功能,一些车企为了使用方便,OBD-II接口设计有可能还会存在一定的风险。

除了利用外部接口攻击,攻击ECU内部电路的方面有可能会更多。功能与性能优先的ECU内部的信息安全的考虑与设计好比较少,有很多数据处于“裸数据”状态,明文传输和明文处理,是有一些安全强化机制,但主要是一些容错机制,是针对人身安全考虑的,信息安全防护机制基本处于缺失状态。ECU级、PCB级、IC级都可能存在一定的安全风险,给故障注入、测信道和物理侵入攻击提供了一定的可能性。可以利用故障注入、物理探针侵入或测信道的方法改变或影响ECU的运行状态和窃取数据,也可在这些攻击放些的基础上,结合其他攻击技术,例如逆向分析、固件提取,远程攻击等方法,利用脆弱点,多方面多层次深入对ECU进行攻击。

img

ECU的风险与攻击点

攻击者想要成功攻破一个汽车系统,大概可以尝试从以下四个层次进行攻击攻击:

  1. 远程攻击,通过汽车的外部通道或接口进行攻击;

  2. 本地攻击,通过ECU的用户或受限的外部接口进行攻击;

  3. 本地攻击,通过PCB上互连线,测试点等进行攻击;

  4. 本地攻击,通过对IC芯片(MCU或者电源芯片等)进行攻击。

img

攻击汽车系统的四个层次

如果只把攻击对象定位在ECU,有哪些可行的攻击方法呢?

  1. 通信攻击:是指私密通信监听,信息堵塞攻击,中间人攻击等。

  2. 暴露的功能模块攻击:Rowhammer,存储器溢出,栈溢出等软件攻击。

  3. 非侵入式攻击:时序攻击,SPA,DPA,EMA等。

  4. 半侵入式攻击:激光攻击,电压毛刺攻击等

  5. 侵入式攻击:修改PCB的连线,FIB攻击等。

img

ECU的攻击方法

攻击无止境,防护需及时!针对汽车系统或者ECU的攻击方法也会越来越多样,越来新颖,但很多新方法都很有可能是基于五类攻击方法衍生出来的,所以需要在芯片设计、PCB设计、ECU设计、系统设计等多级别都要把系统整体的安全性做重点,一招不慎,满盘皆输!