车联网安全攻防之CAN总线安全

点击蓝字 关注我们

车联网安全攻防之CAN总线安全

01

 什么是CAN总线?

车联网安全攻防之CAN总线安全

CAN(Controller Area Network)总线是一种串行通信协议,最初由德国Bosch公司设计用于汽车中的实时控制系统。CAN总线通过两根线(CAN-H和CAN-L)进行通信,具有抗干扰能力强、数据传输可靠等特点。CAN总线常用于汽车、工业自动化等领域的数据传输和控制。

汽车行业为什么要用CAN?

在汽车产业中,出于对安全性、舒适性、方便性、低功耗、低成本的要求,各种各样的电子控制系统被开发出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO 11898及ISO 11519进行了标准化,在欧洲已是汽车网络的标准协议。

车联网安全攻防之CAN总线安全

因此CAN总线在汽车中发挥着举足轻重的作用,是汽车电子元件的神经系统。它支持发动机控制单元 (ECU)、变速箱控制单元 (TCU)、防抱死制动系统 (ABS) 等关键系统之间的数据交换。这种互联网络有利于实时监控、控制和通信,提高车辆的整体效率和安全性。

CAN总线的网络安全威胁分析

近年来,汽车行业见证了显著的技术进步,各种尺寸的车辆的技术比以往任何时候都更加先进。这一转变的一个关键组成部分是控制器局域网 (CAN) 总线,作为连接这些车辆内各种电子组件的重要通信系统,CAN网络不是一个封闭的内部网络,可直接通过车内的OBD诊断接口接入CAN总线,也可通过智能手机、云服务器等与T-Box建立连接间接接入CAN总线,然而,在我们拥抱这些创新的同时,我们还必须承认与汽车 CAN 总线系统相关的日益严重的安全问题,给不法者入侵CAN网络提供了可乘之机,通过对CAN总线协议与网络特性进行简要的TARA(Threat Analysis and Risk Assessment)分析,可将CAN网络的威胁安全属性总结为以下几方面:

(1)机密性

CAN总线的通信方式是全局广播,因此只要接入CAN总线的任一节点,就能轻易访问CAN总线上所有流量信息。CAN数据以明文形式传输,没有任何消息验证码、数字签名的保护。

加密不足:许多CAN总线协议缺乏强大的加密功能,导致敏感数据在传输过程中暴露。这可能包括与驾驶员行为、车辆诊断或信息娱乐系统相关的信息,使其成为网络犯罪分子的有吸引力的目标。

(2)可用性

CAN总线采用基于优先级的仲裁方式,即当有多条消息同时需要发出时,优先级高的先行发出,因此攻击者可以利用这一点,在某节点以高频发送具有高优先级的报文以阻塞其他节点的消息发出,进而导致ECUs无法正常工作。

物理攻击的脆弱性:在典型的汽车中,CAN 总线通常是暴露的并且可以物理访问。这种可访问性增加了对车辆进行物理访问的个人进行篡改或恶意攻击的风险。

(3)真实性

CAN报文数据内容不包含发送方的任何信息,这使节点无法判断消息的来源是其他合法节点还是攻击者,因此外部攻击者可以伪装成任一ECU节点发送恶意消息。

缺乏身份验证:传统的CAN总线系统缺乏内置的身份验证机制,使得它们容易受到未经授权的访问。此漏洞可能允许恶意行为者操纵关键的车辆功能,从而导致潜在的灾难性后果。

(4)完整性

CAN协议本身虽然有CRC校验对传输过程进行完整性验证,但不能防止数据被第三方恶意修改后重新注入。

有限的数据完整性检查:CAN 总线系统优先考虑实时通信而不是数据完整性检查。这可能会导致接受损坏或恶意的数据,从而导致不正确的车辆行为或系统故障。

车联网安全攻防之CAN总线安全

02

 CAN总线的渗透测试

车联网安全攻防之CAN总线安全

针对车内外通信安全,CAN/CAN FD总线作为当前汽车的主要车载通信总线,是攻击者实施网络攻击的目标之一。因此,在系统设计时,应采取相应的防护措施,以降低车载CAN/CAN FD网络被攻击的风险。

对车载CAN/CAN FD网络系统实施渗透测试,是一个常用的用于评价目标系统安全性的一种方法,可以从攻击角度了解车辆是否存在隐性漏洞和安全风险,并可基于测试结果,进一步采取防护措施,以进一步提高系统的安全性能。通常会遵循以下测试步骤:

1

信息收集

测试团队将收集有关目标系统的信息,主要包含以下任务:

1、在CAN网络中,需要识别所有的节点和设备,并映射它们之间的通信关系,这包括了解每个节点的功能和它们在网络中的作用。

2、对CAN通信数据包进行深入分析,了解其通信机制、帧类型(如数据帧、远程帧、错误帧和过载帧)以及报文的结构和含义。

3、对UDS服务进行探测。UDS报文与普通报文不同,通常情况下在CAN总线中不会存在大量的UDS报文;当用户需要对ECU请求服务时,才会向CAN总线发送UDS报文,在接收到UDS报文后,ECU会以相应的正响应或负响应进行回复,可以将这一过程理解为一种问答式的通信方式。基于这种问答式的通信,用户可以在CAN总线上实现基于ISO 14229协议中的许多服务,如诊断会话控制服务、通过ID读数据服务,暴力破解安全进入服务,进一步得到用户或者厂家的私密信息。故测试中会先探测目标网络诊断物理寻址请求ID与ECU的响应ID,为后续进一步的渗透提供前置条件。探测效果所下所示:

车联网安全攻防之CAN总线安全

2

威胁建模

威胁建模是一种系统化的方法,用于识别、量化和解决一个系统或应用程序中的潜在安全威胁。它涉及对系统的设计、架构和代码进行分析,以预测和防御可能的攻击。进行CAN总线的威胁建模涉及以下步骤:

1. 资产识别:首先,需要识别CAN总线系统中的所有资产,包括硬件(如ECU、传感器)、软件(固件、控制算法)和数据(传输的信息)。这一步骤的目的是确定哪些资产可能受到威胁。

2. 威胁识别:接着,识别可能针对这些资产的威胁。这包括物理攻击(如通过OBD-II端口)、远程攻击(如通过无线接口)、数据泄露、服务拒绝攻击(DoS)等。利用 CAN 连接,攻击者可以:

  • 安装恶意诊断设备,向 CAN 总线发送数据包

  • 直接插入 CAN 总线以不用钥匙启动车辆

  • 直接插入 CAN 总线,上传恶意软件

  • 安装恶意诊断设备,跟踪车辆

  • 安装恶意诊断设备,给 CAN 总线提供远程接入通道,令通常局限于内部的攻击变为外部威胁

  •  如果攻击者能够未授权地访问车辆的诊断系统,他们可能会执行非预期的诊断服务,如读取或修改ECU的参数,甚至可能控制车辆的某些功能。

  • 攻击者可能会滥用诊断服务,例如通过发送恶意的诊断请求来干扰车辆的正常运行,或者尝试绕过安全控制。

3. 脆弱性分析:分析CAN总线的脆弱性,这些脆弱性可能导致安全威胁的实现。CAN总线协议以及UDS服务存在的脆弱性主要包括以下几点:

  • 缺乏分割和边界防御:CAN总线架构未实现网络分段,这使得攻击者可以利用非敏感系统组件中的漏洞获取对网络其他部分的访问权限,从而威胁到关键和敏感的系统组件。

  • 缺乏设备认证:CAN网络上缺少设备身份验证系统,未经授权的设备可以加入CAN总线并广播消息,这可能导致攻击者发送欺骗消息,操纵车辆功能。

  • 缺乏加密和认证机制:CAN协议本身没有内置的加密方法来确保数据的保密性,这使得攻击者可以通过监听总线上的通信来获取敏感信息,甚至可能通过伪造报文来进行攻击84。

  • 基于ID的仲裁机制:CAN协议使用基于消息ID的仲裁机制来决定哪个节点可以控制总线。攻击者可以通过发送高优先级的报文来实施拒绝服务攻击,阻止其他低优先级报文的传输

  • 会话切换漏洞:遍历所有CAN ID并发送会话切换命令,如果存在响应,表明ECU可能未对会话切换进行适当的限制,可能允许未经授权的设备切换会话。

  • 服务支持遍历:通过遍历ECU支持的服务标识符(SID),可以发现ECU支持的服务。如果ECU对服务的遍历没有限制,攻击者可能发现并利用未公开的服务。

  • Session Control漏洞:未限制切换条件和未设定复归条件可能导致车辆在行驶过程中响应会话切换命令,或无法从编程模式恢复到正常模式。

  • 复位命令漏洞:未限制响应条件的复位命令可能导致车辆在不适当的时机响应复位命令,影响车辆的正常运行。

  • 安全访问漏洞:包括种子随机度不足、未限制Seed尝试次数、未限制Key尝试次数和安全算法泄露。这些漏洞可能导致攻击者破解安全访问机制,获取敏感信息或执行未授权的操作。

  • 固件刷写漏洞:如果固件刷写过程中未实施适当的限制条件,攻击者可能在不满足安全条件的情况下进行固件刷写,可能导致车辆无法启动或功能失效。

  • 内存分析和读写漏洞:通过特定的诊断协议(如CCP)进行内存分析和读写,可能发现固件中的漏洞,进而进行攻击。

  • DTC设备漏洞:通过分析通用的诊断设备(如X-431)的行为,可能发现解锁Seed Key的规律,从而绕过安全机制。

这些安全威胁和漏洞可能导致车辆控制失效、数据泄露、未授权的固件更新等严重后果。因此,需要对UDS协议的实现进行严格的安全测试和验证,确保车辆的安全性和可靠性。

3

漏洞分析

在确定出最可行的攻击通道之后,测试团队会考虑如何获取目标系统的访问控制权、后台管理权限等。在此阶段,渗透工程师会根据前几个阶段所获取并汇总的情报信息,特别是常见漏洞扫描结果、服务识别信息等,通过搜索可获取的渗透代码资源,找出可以实施渗透攻击的攻击点,并在实验环境中进行验证。使用专门的工具和技术来扫描目标系统,以查找 CAN 总线网络中的已知漏洞和弱点。这可能包括寻找不安全的通信通道、弱加密或身份验证机制或网络架构中的其他缺陷。

4

渗透攻击

将防御策略实施到CAN总线系统中,并进行测试以确保其有效性。这可以对每个已识别的威胁进行评估,确定其可能性和潜在影响,常用的测试方式如下:

4.1 模糊攻击

模糊攻击指的是通过生成一系列随机、无效或非预期的报文后,将这些报文发送至目标总线上,以达到目标总线出现非预期的行为的一种渗透测试方式。模糊攻击不需要了解攻击对象本身的数据特点(如CAN报文的某一数据位所表示的意义),只需要构建符合CAN报文格式的数据,因此可以通过模糊攻击挖掘系统的潜在漏洞。

模糊攻击可以测试当前被测对象是否有做报文数据完整性校验的安全防护措施,若无安全防护措施,则被测对象将可能产生非预期的行为。模糊可以在不同层面上进行,分别为:原始报文层、系统信号层、协议层。针对这三种层面,均可使用随机模糊、遍历模糊或自定义的模糊策略进行模糊攻击。

例如将报文ID设置为完全随机、报文DLC设置为4、报文Data设置为”1X 12 34 56”,其中X表示需要模糊的数据,对CAN总线进行模糊攻击,可以看到发送的模糊报文如图2所示。

车联网安全攻防之CAN总线安全

图2 模糊攻击报文信息

4.2 重放攻击

重放攻击指的是恶意地将有效报文发送至目标总线上,使目标系统重现该报文所控制的行为或对应的状态的一种渗透测试方式。重放攻击的前提即是上文介绍的CAN总线利用全局广播进行通信,攻击者利用这点能够轻而易举地获取到CAN总线上所有的报文信息。重放攻击也不需要了解攻击对象本身的数据特点或工作原理,只需原封不动地将报文发送即可达到攻击目的。重放攻击可以测试当前被测对象是否有做关于数据来源的真实性校验的安全防护措施,若没有则被测对象将会执行恶意重放报文的控制行为。

4.3 DoS攻击

DoS是Denial of Service的简称,即拒绝服务,指的是通过临时或无限期干扰连接于网络的服务。DoS攻击基于上文介绍的CAN总线以报文优先级进行仲裁得以实现,对于CAN总线,DoS攻击可以理解为频繁向目标总线发送高优先级报文来占满目标总线的资源,提高总线负载率,使其他正常报文不可传输。DoS攻击需要了解CAN报文的优先级仲裁机制,即CAN报文的id位越小,CAN报文的优先级越高;在具有相同id时,数据帧的优先级大于遥控帧的优先级、标准帧的优先级大于拓展帧的优先级。DoS攻击可以测试当前被测对象是否有做可用性保护的安全防护措施。

例如将报文ID设置为0x1、报文DLC设置为4、报文Data设置为“12 34 56 78”、期望负载率设置为40%,对CAN总线进行DoS攻击,可以看到总线负载率如图3所示。

车联网安全攻防之CAN总线安全

图3 DoS攻击时总线负载率图

4.4 UDS探测

UDS(统一诊断服务)安全测试是一种针对汽车电子系统中诊断通信协议的安全性评估过程。它的目的是确保车辆的电子控制单元(ECU)在面对潜在的网络攻击时能够保持其功能和数据的完整性。以下是UDS安全测试的关键步骤和方法:
  1. 会话切换测试:遍历所有CAN ID,发送会话切换命令(如02 10 01/02 10 02/02 10 03)来识别特定的ECU。观察在不同工况(如车辆静止、行驶、低电量等)下发送会话切换命令时ECU的响应情况,确保车辆在行驶时不会响应,且能从编程模式恢复到普通模式。

  2. 服务支持遍历:遍历ECU支持的服务(SID),通过发送特定的UDS命令(如03 【00-FF】 01 01)并观察是否有+0x40的响应来判断ECU是否支持该服务。

  3. DID或子服务ID遍历:对于特定的服务(如31 Routine Control、22 Read Data By DID),遍历DID或子服务ID,观察ECU的响应来确定服务支持情况。

  4. 安全访问测试:测试种子随机度及Seed尝试次数,通过多次发送02 27 01命令,观察Seed的长度和更新规律。测试Key尝试次数,遍历发送06 27 02 【AA BB CC DD】,观察错误码是否改变。检查安全算法是否泄露,通过分析诊断设备或固件逆向等手段来找出可能的规律。

  5. 固件刷写测试:在不同模式(如普通模式、编程模式、扩展模式)下发送固件刷写相关命令,检查是否存在未做限制条件的刷写操作。

  6. 内存分析和读写测试:发送28命令和85命令,在不同工况下观察ECU的响应和动作,检查是否存在内存地址泄露或不当的读写操作。

5

渗透报告

最后,测试团队会将发现的漏洞的详细信息以及如何修复这些漏洞的建议以报告形式提供。


03

 CAN总线的安全建议

车联网安全攻防之CAN总线安全
为了解决这些安全问题,汽车行业必须采取积极措施:

1. 实施强认证:引入认证机制,确保只有授权实体才能访问和修改CAN总线。这可以包括安全访问控制系统和数字签名。

2. 物理安全:通过限制授权人员的访问并采用防篡改外壳,增强 CAN 总线的物理安全性。

3. 引入SecOC组件:SecOC是一个AutoSAR软件包中补充的信息安全组件。它为传统的CAN总线引入了通信认证的方法,增加了加解密运算、秘钥管理、新鲜值管理和分发等功能,通过对CAN总线上传输的敏感数据实施强加密来增强数据保护,确保即使数据被截获也保持安全,从而提高了CAN总线的通信安全性。具体过程包括:

● 报文的原始数据切片,加上秘钥和新鲜值,通过算法生成128位的身份认证信息。

● 将身份认证信息和新鲜值切片插入CAN报文负载的指定字节中。

● 接收方通过逆过程校验,如果校验失败则丢弃报文。

随着汽车行业技术的不断进步,我们必须解决与 CAN 总线系统相关的安全问题,确保这些关键通信网络的完整性和安全性不仅对于驾驶员和乘客的安全至关重要,而且对于维护整个汽车生态系统的信任和完整性也至关重要,通过采取积极主动的措施来确保 CAN 总线的安全,我们可以在前进的道路上携手推动创新和安全。


原文始发于微信公众号(智车信安):车联网安全攻防之CAN总线安全

版权声明:admin 发表于 2024年4月12日 下午4:32。
转载请注明:车联网安全攻防之CAN总线安全 | CTF导航

相关文章