汽车工业的发展已远远超出了机械系统本身,当今,许多基于先进嵌入式电子技术的智能功能已进入汽车行业。虽然电子配置和各个部件之间的相互关联提高了整个汽车的舒适性、功能性和安全驾驶,但同时也带来安全性攻击问题,此类攻击会渗透到最初是一个闭环系统的车内互连的通信网络中。对于这样的应用场景,通常会使用的通信协议是控制器区域网络(CAN)。由于缺乏加密和认证,这种网络依然受到各种攻击。因此,任何恶意/劫持的节点都可能造成灾难性的事故和经济损失。
针对此问题,本文全面分析了CAN总线,并对安全问题进行了展望。本文还介绍了CAN的安全漏洞和当前所面临的最新的攻击,并提供了已实施的攻击场景的案例,基于入侵检测系统(IDS),本文还通过不同的解决方案来协助预防攻击。
1.0 引言
在过去的几十年里,汽车工业已经发生了翻天覆地的变化,汽车实现了广泛的自动化,配备了一系列传感器和计算系统。这些传感器由嵌入式电子控制单元(ECU)控制,其设计目的是为了优化从发动机控制到防抱死制动(ABS)和高级驾驶辅助系统(ADAS)等一系列功能的管理。一辆现代汽车的ECU数量超过100个,而且这个数字预计在未来还会增加。这些ECU分布在汽车周围,通过车内通信网络(如控制器区域网(CAN))相互通信。作为车辆应用中最常见的车载通信协议,CAN具有成本低廉、不受电气干扰、自诊断和纠错等优点。
虽然CAN优点多多,但日益增长的车辆间和车辆内通信使CAN易受网络的攻击。现有的CAN总线内置安全功能主要是为了保证通信的可靠,而不是网络安全,因此,CAN无法防止车载网络免受网络攻击。那么,预估CAN会面临的网络攻击就显得意义重大。例如,预判会危及驾驶员和乘客安全的安全气囊或ABS系统受到攻击。最终,汽车受攻击的方式和严重层度会影响整车厂的声誉,会给汽车整车厂造成车辆召回等巨大经济影响。另外,篡改ECU(例如,二手车的里程表)是另一个可能给消费者和汽车整车厂带来严重后果的例子。
同样令人担忧的是,CAN中缺乏加密技术,数据未加密,会严重影响个人数据隐私。根据设计,CAN是一个广播网络,允许节点捕捉通过网络的报文。由于广播的数据没有加密,攻击者可以获得所需的数据。现代汽车具备获取驾驶员个人报文的权限,因此,攻击者可通过CAN来侵犯车主隐私。
根据2019年行业调查,在中短期内,安全保障是汽车行业所需要解决的最大的问题。为了解决CAN的脆弱性问题,寻找可能的解决方案,业内进行了广泛的研究。其中一些研究已经对乘用车和重型车进行了成功的实验攻击。同时,研究者们也对这类已知的攻击提出了预防方法。这些方法包括网络分割、加密、认证和入侵检测系统(IDS)。
鉴于此,本文对过往文献进行了全面的回顾,主要有以下几点:
a. 确定与现代车辆有关的最新的和最可能发生的安全挑战,包括一些已实施的物理和远程访问攻击;
b. 强调现代车辆的攻击面,并对未来可能发生的攻击进行评判。
c. 深入分析目前针对CAN网络安全问题的研究,以提高CAN网络的安全有效性,最大程度降低伤害。
2.0 控制器区域网(CAN)概述
CAN总线是Robert Bosch GmbH公司在20世纪80年代初开发的一种多主播通信协议。传统的CAN接口可以提供高达1 Mbps的数据速率。2012年,博世公司发布了(flexible data-rate),在实际应用中CAN FD可以达到5 Mbps,其有效载荷为64字节,而传统的CAN为8字节[18]。CAN FD可向后兼容,能与传统的CAN节点共存。传统CAN和CAN FD都是在ISO 11898-1:2015下进行标准化的。
如图1所示,CAN的单双线总线结构减少了布线。网络分布式结构便于维护,降低了系统的整体成本。此外,协议采用了以CAN_H和CAN_L为代表的差分布线模式,增强了抗噪声和电干扰的能力。从逻辑的角度看,信号有两种状态(电压水平):一个是显性逻辑 "0",一个是隐性逻辑 "1",也就是说,只要有一个节点向总线释放逻辑 "0",总线信号就保持 "0",即显性逻辑。
图1 单线控制器区域网(CAN)的例子。
CAN协议通过帧提供基于报文的通信,如图2所示。每个帧都有一个报文识别码、数据码、循环冗余校验码(CRC)和一些控制位。每个节点会监听每一帧,并根据报文识别字段处理相关的报文,这些报文也会用于仲裁。
图2 传统的CAN框架结构
CAN中的可靠通信
CAN协议有一套可提供稳定的通信的内置功能。如果两个节点同时开始传输,非破坏性仲裁机制通过允许最高优先级的节点继续传输而无须中断传输的方式来解决冲突(例如,图3中节点1赢得了仲裁,没有任何中断,因为主导位覆盖了隐性位)。另一个特点是带有避免碰撞的载波感知多址(CSMA/CA),该功能规定节点必须等待一定的不活动时间后才能进行传输。这个功能能感知总线是否闲置,以确保不会发生碰撞。
图3 节点1在没有任何干扰的情况下赢得仲裁。
CAN总线有一些位级和报文级的错误检查机制。在位级中,发送器节点监控总线,如果传输的位与总线上观察到的位之间存在不同,就会出现错误。另一方面,消息级的CAN-总线错误检查机制包括应答域检查(ACK)、循环冗余校验(CRC)和帧结束(EOF)域。在一帧传输后,发送节点在ACK域中写入显性位。如果节点正确接收到报文,则用显性位覆盖ACK域;否则,ACK域保持显性位,表示传输错误。为保证数据的完整性,在一个CAN帧中最多有一个21位的CRC域。如果任何节点计算的CRC与发送节点不同,就会发送错误标志。CRC定界符、ACK定界符和EOF位有固定的值,并且必须始终是隐性的。在帧形式检查中,如果这些位是显性的,就会产生错误。
通过误差修正模型(ECM),和将故障节点从总线通信中禁用的方式,CAN还可用来防止物理错误,如图4所示。ECM在每个节点中使用两个错误计数器,即接收错误计数器(REC)和传输错误计数器(TEC)来方便计数。如果在传输过程中出现错误,TEC增加8,如果在接收过程中出现错误,REC增加1。每成功发送或接收一帧,负责计数的计数器就会减少1。计数器的默认值为零,节点从错误主动状态开始。如果节点的计数器值超过127,节点将进入错误被动状态。在错误被动状态下,节点只能写入隐性错误标志,但不会影响总线流量。
如果TEC计数器超过255,节点转为总线关闭状态,意味着受影响的节点将不再参与总线通信。
图4 CAN总线中错误确认机制(ECM)的状态图
3.0 CAN协议的脆弱性评估
安全问题至关重大,因此,对网络进行脆弱性评估也非常必要。我们可通过确证性、完整性和可用性来对CAN协议的脆弱性进行评估。
保密性是指系统只向被授权的人提供数据。然而,CAN协议并没有固有的加密方法来确保保密性。这个漏洞就使得入侵者可以访问敏感的用户数据,侵犯隐私。
完整性是指数据的准确性、完整性和有效性。CAN总线有CRC对传输错误进行完整性验证,但不能防止数据被恶意方注入,破坏完整性。该协议没有全面的完整性检查,不能维持完整性。
可用性是指授权用户在任何时候都可以使用系统。鉴于基于优先级的报文传递的性质,如果传输/插入了优先级最高的报文,那么优先级较低的节点将无法访问网络。这种方式不符合可用性原则。
CAN总线不符合三个基本安全标准。因此,CAN协议没有任何防止攻击的安全措施。
4.0 汽车攻击面和存在的攻击
在20世纪50年代,汽车电子产品的成本仅占汽车总成本的1%,而目前已占35%,预计到2030年,这一比例将上升到50%。虽然电子产品的兴起提高了汽车的舒适性、功能性和驾驶安全性,但也产生了新的攻击面,如图5所示。协议本身对攻击是没有防御能力的,因此,当前/未来的远程报文处理单元或报文娱乐系统中的任何漏洞都可能破坏网络,如表1所总结。
可用性是指授权用户在任何时候都可以使用系统。鉴于基于优先级的报文传递的性质,如果传输/插入了优先级最高的报文,那么优先级较低的节点将无法访问网络。这种方式不符合可用性原则。
CAN总线不符合三个基本安全标准。因此,CAN协议没有任何防止攻击的安全措施。
图5 汽车攻击面
表1 CAN总线攻击汇总
2007年,Hoppe和Dittman两人对电动车窗进行了攻击。这是第一个对CAN总线的攻击。自此以后,发生了多起攻击事件。这些攻击可以分为物理访问攻击(攻击者需要物理访问车辆)和远程攻击(通过无线通信接口实现)。虽然文献中的攻击主要是物理访问的攻击,但有专家认为,物理访问CAN网络并不实用。因此,目前的研究主要集中在远程访问攻击方面。
4.1. 物理访问攻击
物理访问攻击需要直接或间接访问CAN总线网络。直接访问可以通过车载诊断(OBD)端口或恶意节点获得。OBD端口是主要的攻击面;因此,即使汽车中使用了网络分割,但攻击者也可以访问所有的节点。
Koscher等人通过车载诊断II(OBD-II)端口操纵CAN来控制各种模块,包括必要的制动控制和发动机控制模块。他们通过连续黑盒测试方法,在汽车以40 mph的速度行驶时,释放制动器并阻止其激活制动车辆。攻击方式还包括用虚假数据操纵仪表盘,改变发动机参数,并使发动机失效。
由于CAN的架构,攻击者课通过任何恶意节点监听或发送消息来破坏车载网络。通过OBD端口的攻击可以利用恶意节点复制。Palanca等人在未改装的2012年阿尔法罗密欧Giulietta上应用了分布式拒绝服务(DoS)对该车辆进行攻击。研究表明,任何有物理访问权的人,即使使用简单的工具,也可以对车载网络进行破坏。这种攻击不需要完整的报文传输,只需要覆盖到隐性位,产生传输错误即可。本研究的价值就在于说明了CAN标准的漏洞。在本研究公布之后,美国政府即发出警报(ICS-ALERT-17-209-01)。Murvay和Groza也进行了类似的研究分析,研究表明在不同位率上攻击的局限性,和攻击者如何突破认证方法。
Mukherjee等人对用于重型商用车的SAE J1939标准实施了DoS攻击。他们分别进行了三种DoS攻击。(i)给支持的参数组号(PGN)发送过量的请求消息,使接收方ECU过载;(ii)发送操纵的虚假请求发送(RTS),并在接收方缓冲区造成溢出;(iii)通过清除发送(CTS)消息保持连接开放,并占用整个网络。这三种DoS是最早利用SAE J1939标准的研究之一。Murvay和Groza成功的冒充了使用者,并实现了对SAE J1939的DoS攻击。这些攻击表明,除了CAN总线易受到攻击外,SAE J1939还容易受到特定协议攻击。
间接的物理访问攻击也是一个问题。这类攻击需要将实物插入车内,但攻击者不一定能直接接入网络。Checkoway等人开发了一种间接访问攻击模型,该模型包括黑客入侵汽车服务的IT系统,通过计算机访问CAN等。该攻击模型还包括通过多媒体设备(CD、USB或MP3播放器)进行攻击。Hoppe等人用多媒体光盘实现了对汽车系统的攻击。虽然该攻击没有攻破CAN,但可以通过在屏幕上闪烁警告和报警信号来吓唬驾驶员。
4.2. 远程访问攻击
当今的汽车,包含了与被动防盗、胎压监测系统(TPMS)、蓝牙、无线电数据、远程报文处理等系统通信所需的不同类型的无线接口。这些无线接口需要与CAN通信,通常通过网关ECU来保护网络。然而,有研究表明,黑客可以入侵网关ECU并获得隔离CAN的访问权限。
研究员通过逆向工程入侵了汽车的TPMS、蓝牙、FM通道和蜂窝网络,并称小偷可以通过CAN报文解锁车门,轻松盗取车辆。另有研究团队提出了可通过恶意自诊断应用对车辆进行远程攻击。如果有人使用恶意应用程序监测/诊断车辆的情况,攻击者就可以远程控制车辆,实现远距离攻击。
还有两位白帽黑客对12个汽车品牌和21辆商用车开展了远程攻击调查,确定了远程攻击面和攻击对每辆车的危害程度。攻击分为三个阶段。第一阶段是入侵负责无线接口的ECU。第二阶段是注入报文,与安全关键的ECU进行通信。最后一个阶段是修改ECU,使ECU表现出恶意行为。研究人员表示,虽然汽车中的日益增多的网络物理系统会增加车辆的脆弱性,但由于汽车中拥有很多不同种类的应用,因此,研究人员无法实际验证车辆的脆弱性。此外,2014年,他们还成功地远程入侵了一辆Jeep切诺基,并使该车的发动机失灵。在发动本次攻击后,他们发布了一则公告,指出了机动车在面对远程攻击时的脆弱。
2016年,通过商用远程报文处理控制装置,Savage和他的团队成功地控制了一辆雪佛兰科尔维特的刹车和挡风玻璃雨刷。这一攻击表明,售后设备可渗透到CAN的漏洞中,而对于此,汽车整车厂却无能为力。
2016年,通过无线和蜂窝接口,Nie等人对特斯拉Model S实现了远程攻击。腾讯的Keen安全实验室发现了宝马汽车的多个攻击面,这表明即使是高端的商用车也会无法完全避免网络攻击。
另一种无线攻击方法是通过更新OTA软件。OTA是一种低成本、可扩展的解决方案。制造商可远程更新该软件。但同时,这也成为其受攻击的一面。黑客可以通过此软件潜入车辆的通信网络。Beek和Samani通过OTA更新实现了勒索软件攻击。
和物理攻击面相比,现代汽车的远程攻击面所面临的问题更严重。随着汽车连接性的不断增多,无线攻击面的数量也与日俱增。在不久的将来,汽车将配备车对车(V2V)和车对基础设施(V2I)通信,从而组成车载特设网络(VANETs)。VANETs旨在优化交通、避免碰撞。为了实现上述功能,VANETs使用车辆的传感器并进行无线连接。在车联网中,车辆会接收或传输欺骗报文,车内通信网络可能会因此受到干扰。
4.3. CAN中的隐私
获取CAN网络数据不仅会造成安全问题,还会侵犯隐私。当今的汽车可收集与驾驶员有关的数据,这些数据需要通过脆弱的CAN网络中来储存和传输。调查显示,实验人员可从与汽车连接的手机中获得汽车的精确位置历史记录和其他个人数据(电话记录、联系人列表、电子邮件地址和照片)。攻击者只需要通过总线,就能窃取个人报文。此外,研究人员的研究说明,可利用通过CAN总线的传输路径的传感器数据来识别驾驶员,从而监控车内情况,侵犯个人隐私。