《汽车网关信息安全技术要求及试验方法》是中国的一项国家标准,编号为GB/T 40857-2021,于2021年10月11日发布,并从2022年5月1日起开始实施 。这项标准由全国汽车标准化技术委员会(TC114)归口,智能网联汽车分会(TC114SC34)执行,主管部门为工业和信息化部。
该标准主要起草单位包括广州汽车集团股份有限公司、中国汽车技术研究中心有限公司等多家企业和研究机构,主要起草人有尚进、孙航等多位专家。标准内容涵盖了汽车网关硬件、通信、固件、数据的信息安全技术要求及试验方法,目的在于保障汽车网关在车内多个网络间安全、可靠地进行数据转发和传输,满足数据保密性、完整性、可用性等基本安全要求。
本篇文章主要摘取规范中对汽车网关网络安全和信息安全要求和测试方法。其中基于以太网的网络安全和信息安全技术较为成熟,无需过多介绍,而针对CAN网关的安全要求基于本人对CAN-IDPS开发经验添加了说明。
目录
1 汽车网关网络拓扑结构
1.1 CAN网关
基于CAN和/或CAN-FD总线的车内网络结构中,大多数的ECU、域控制器之间都会通过CAN和/或CAN-FD总线进行通信。这类结构中的汽车网关主要有CAN和/或CAN-FD总线接口,可称为CAN网关。下图是典型的CAN网关拓扑结构。
1.2 以太网网关
基于以太网的车内网络结构中,大多数的ECU、域控制器之间会通过以太网进行通信。这类结构中的汽车网关主要有以太网接口,可称为以太网网关。下图是典型的以太网网关拓扑结构。
1.3 混合网关
部分新一代车内网络结构中,一部分ECU、域控制器之间通过以太网通信,而另一部分ECU、域控制器之间仍通过传统通信协议(例如:CAN、CAN-FD、LIN、MOST等)通信。这类结构中的汽车网关既有以太网接口,还有传统通信协议接口,可称为混合网关。下图是典型的混合网关拓扑结构。
2 技术要求
2.1 硬件信息安全要求
(1)网关不应存在后门或隐蔽接口。
测试方法:拆解被测样件设备外壳,取出PCB板,检查PCB板硬件是否存在后门或隐蔽接口。
(2)网关的调试接口应禁用或设置安全访问控制。
测试方法:检查是否有存在暴露在PCB板上的JTAG、USB、UART、SPI等调试接口,如存在则使用试验工具尝试获取调试权限。
2.2 通信信息安全要求
2.2.1 CAN网关通信信息安全要求
2.2.1.1 访问控制
网关应在各路CAN网络间建立通信矩阵,并建立基于CAN数据帧标识符(CANID)的访问控制策略,按照测试方法(a)应在列表指定的目的端口检测接收到源端口发送的数据帧;按照测试方法(b)应对不符合定义的数据帧进行丢弃或者记录日志。
测试方法:
(a)设置访问控制策略(若被测样件的访问控制策略无法通过软件配置修改,则由送样方提供已预置的访问控制策略列表),检测设备向列表指定的源端口发送符合策略规定的数据帧,并在列表指定的目的端口检测接收数据帧。
(b)设置访问控制策略(若被测样件的访问控制策略无法通过软件配置修改,则由送样方提供已预置的访问控制策略列表),检测设备向列表指定的源端口发送不符合策略规定的数据帧,在列表指定的目的端口检测接收到的数据帧,并收集样件日志。
个人观点:
文档中要求建立基于CANID的访问控制策略,其实就是CANID白名单功能,白名单中包含通信矩阵中规定网关所能接收的所有CANID,网关安全组件(例如CAN-IDPS)监控网关流量,并判断所接收的CANID是否在白名单中,如果在,则应执行丢弃或者记录日志。需要注意的是,一般ECU在CAN收发器处已经设置了报文过滤条件,即不是该ECU需要接收的CANID报文在底层就已经丢弃了。
2.2.1.2 拒绝服务攻击检测
网关应对车辆对外通信接口的CAN通道(例如:连接BD-I端口的通道和连接车载信息交互系统的通道)进行CAN总线DoS攻击检测。网关应具备基于 CAN总线接口负载的DoS攻击检测功能,宜具备基于某个或多个CAN ID数据帧周期的 DoS 攻击检测功能。按照测试方法(a)、(b)进行测试,当网关检测到某一路或多路CAN通道存在DoS攻击时,应满足以下:
(1)网关未受攻击的通道的通信功能和预先设定的性能不应受影响;
(2)网关对检测到的攻击数据帧进行丢弃或者记录日志。
测试方法:
(a)由送样方确认网关连接车辆对外通信接口的AN道,检测设备对此通道以大于80%总线负载率发送符合通信矩阵的泛洪攻击数据帧,在指定的目的端口检测接收到的数据帧,并收集样件日志。如果有多个此类通道,则依次分别试验。
(b)由送样方确认网关连接车辆对外通信接口的CAN通道,检测设备对此通道以1ms为周期发送符合通信矩阵的某个CANID数据帧,在指定的目的端口检测接收到的数据帧,并收集样件日志。如果有多个此类通道,则依次分别试验。
个人观点:
两个重点,一是文档中提到Dos攻击检测对象重点是车辆对外通信接口的CAN通道,例如OBD接口或者车机通道;二是提出了Dos攻击的两种检测方法,一种是通过判断总线负载率是否达到告警阈值,另一种就是监控某个CANID报文实际周期是否远小于通信矩阵中对其规定的正常周期。除此之外,在测试方法中提到以大于80%的总线负载率进行测试,网关安全组件(例如CAN-IDPS)在设置总线负载率告警阈值时,可以以此为参考设置成80%,也可以对实车总线负载率进行实时统计,并选则大于其峰值的合适值作为阈值,实施难度就是需要在统计过程中,模拟车辆所有的操作以及业务,这样计算出的阈值才可靠。
2.2.1.3 数据帧健康检测
网关宜根据通信矩阵中的信号定义,对数据帧进行检查,检查内容包括DLC字段、信号值有效性等,按照测试方法(a)进行试验,对不符合通信矩阵定义的数据帧进行丢弃或者记录日志。
测试方法:
(a)检测设备对网关发送一个或多个DCL字段值不符合通信矩阵定义的数据帧,在指定的目的端口检测接收到的数据帧,并收集样件日志。
(b)检测设备对网关发送一个或多个信号值不符合通信矩阵定义的数据帧,在指定的目的端口检测接收到的数据帧,并收集样件日志。
个人观点:
通信矩阵中规定了每个CAN报文的数据长度,即DLC字段值。ECU应严格遵循通信矩阵规定,收发的CAN报文数据域长度与通信矩阵中规定一致,因此网关安全组件(例如CAN-IDPS)可将DLC字段值作为数据帧健康状态的一个判定条件。
除此之外,通信矩阵中还规定了信号的属性,包括信号起始位置、长度、字节序、逻辑最大值、逻辑最小值、物理最大值、物理最小值、因子、偏移等信息,通过这些信息ECU从CAN报文中设置或者读取信号值。网关安全组件(例如CAN-IDPS)对信号值有效性检测的原理为判断信号值是否在逻辑最大值和逻辑最小值之间,如果在则说明信号值健康,否则说明信号值异常,应该对当前帧进行丢弃或者记录日志。需要注意的是,笔者遇到过通信矩阵中定义了信号的无效值,而信号为无效值的原因可能是ECU因缺少某个传感器导致无法读取相关数值,或者为了快速开发,同一份通信矩阵用在某个车型的不同型号等因素导致,因此网关安全组件(例如CAN-IDPS)也应该考虑到无效值是否应该算作异常值。
2.2.1.4 数据帧异常检测
网关宜具有数据帧异常检测功能,即检查和记录数据帧之间发送与接收关系的机制,按照测试方法(a)进行试验,对检测到异常的数据帧进行丢弃或者记录日志。
示例:
网关检测到一定时间内数据帧的发送频率与预定义的频率差距较大,或相邻时间同一数据帧的信号值内容冲突或者不正常跳跃时,对数据帧进行丢弃或者记录日志。
测试方法:
(a)检测设备对网关连续发送一个或多个周期不符合通信矩阵定义(与定义周期偏差士50%)的周期型数据帧,在指定的目的端口检测接收到的数据帧,并收集样件日志。如果有多个此类通道,则依次分别试验。
个人观点:
通讯矩阵中规定了CAN报文发送类型,如果是周期型报文还会规定其周期时间。因此网关安全组件(例如CAN-IDPS)可通过监测周期型报文周期是否符合通信矩阵规定即可。一般检测报文周期的算法有两种,一种是统计一段时间内所检测报文出现的数量,并计算相邻报文的平均时间间隔,此检测方法占用CPU较低,但是检测精确度也较低,另一种方法就是实时检测相邻两个报文之间时间间隔,CPU占用相比第一种较高,但是检测精确度也高。具体使用哪种算法可结合实际网关设备资源考虑,毕竟总线上报文周期一般为毫秒级(最低一般10ms),且数量众多,而且总线上攻击一般集中在某个时刻,第一种算法通常情况下能满足此异常检测。
在测试方法中,如何理解"连续发送一个或多个周期不符合通信矩阵定义(与定义周期偏差士50%)的周期型数据帧"?
由于CAN总线的ID仲裁机制(例如由于车辆执行某些业务,导致总线在一小段时间内出现大量高优先级报文),以及各种硬件、软件逻辑执行都可能导致报文发送周期无法严格精确遵循矩阵规定,即相邻两个报文之间时间间隔与规定的间隔存在误差,因此网关安全组件(例如CAN-IDPS)应该考虑到这些误差,通过设置合理的时间间隔范围在降低误报情况。测试方法中也提到不符合"与定义周期偏差士50%"的为异常周期报文,因此"士50%"可以作为报文间隔的合理范围。
在示例中还提到相邻报文对应的信号值突变或者不正常跳跃也算作异常报文,此类报文的检测需要结合报文周期和信号属性来编写检测规则,例如车速信号代表着当前车辆速度,相邻两个车速信号间隔10ms,如果相邻两个车速值从10km/h变成100km/h就属于信号值突变或者不正常跳跃。此检测项一般需要根据经验或者实车流量统计进行设置。
2.2.1.5 UDS会话检测
网关应检查 UDS会话发起的CAN通道是否正常(正常通道通常包括连接OBD-I端口的通道和连接车载信息交互系统的通道),按照测试方法(a)进行试验,对非正常通道发起的会话进行拦截或者记录日志。
测试方法:
(a)由送样方确认网关连接OBD-端口的通道和连接车载信息交互系统的通道,检测设备对除此类通道以外的通道,发送UDS诊断数据帧,在指定的目的端口检测接收到的数据帧,并收集样件日志。如果有多个此类通道,则依次分别试验。
个人观点:
UDS会话是UDS众多服务的一种,一般由诊断仪通过OBD口连接到车端网关,如果车辆支持远程诊断,例如车机支持DoIP协议,并将DoIP转换成UDS报文发送到网关。因此UDS会话通常情况下只能由连接网关的OBD通道或车机通道发送会话请求,如果会话请求报文的来源不是这两个通道,则应判定为异常报文进行丢弃或者记录日志。
2.2.2 以太网网关通信信息安全要求
2.2.2.1 网络分域
网关应支持网络分域,按照测试方法(a)进行试验,对不符合网络分域的数据包进行丢弃。例如用VLAN分隔车载网络内的不同域。
测试方法:
(a)对被测样件设置不同网络分域(如VLAN1与VLAN2)(若被测样件的网络分域策略无法通过软件配置修改,则由送样方提供已预置的网络分域策略列表),在选定区域(如VLAN1)发送符合网络分域策略和访问控制策略的广播数据包,检查不同区域(VLAN2)是否可以收到数据包;
2.2.2.2 访问控制
网关应配置访问控制列表(ACL),访问控制列表中的访问控制要素主要应包括源IP地址、目的IP地址、协议类型(例如 TCP、UDP、ICMP 等),协议源端口、协议目的端口,也可包括物理端口、通信方向(输人或输出)源MAC地址、目的MAC地址等。
访问控制列表应遵循默认拒绝原则,即丢弃所有不符合条件的数据包。
访问控制列表应遵循最小化授权原则,即只授予必要的权限。
按照测试方法(a)、(b)进行试验,对不符合访问控制列表的数据包进行丢弃或者记录日志
测试方法:
(a)设置访问控制策略(若被测样件的访问控制策略无法通过软件配置修改,则由送样方提供已预置的访问控制策略列表),检测设备向列表指定的源端口发送符合策略规定的数据包,在列表指定的目的端口检测接收数据包;
(b)设置访问控制策略(若被测样件的访问控制策略无法通过软件配置修改,则由送样方提供已预置的访问控制策略列表),检测设备向列表指定的源端口发送不符合策略规定的数据包,在列表指定的目的端口检测接收数据包,并收集样件日志;
2.2.2.3 拒绝服务攻击检测
网关应对车辆对外通信的以太网通道进行以太网DoS攻击检测。支持ICMP协议、TCP协议和UDP协议的网关,检测的 DoS攻击类型,应分别至少包括ICMP泛洪攻击、TCP泛洪攻击和 UDP 泛洪攻击。
按照测试方法(a),当网关检测到以太网DoS攻击时,应确保自身正常的功能和预先设定的性能不受影响,并对检测到的攻击数据包进行丢弃或者记录日志。
测试方法:
(a)检测设备对网关发送符合网络分域策略和访问控制策略的泛洪攻击数据包,攻击类型可选择ICMP泛洪攻击和UDP泛洪攻击,在目的端口检测接收数据包,并收集样件日志。
2.2.2.4 协议状态检测
网关宜具有对部分或全部的TCP/IP 会话流进行状态检查的功能。检查项包括TCP握手状态、数据包长度、包序列和TCP会话关闭状态等,按照测试方法(a),对检测到的攻击数据包进行丢弃或者记录日志。
测试方法:
(a)基于TCP协议,构造多个不符合协议标准的数据包或数据包序列,组成试验集,检测设备对网关发送该试验集,在目的端口检测接收数据包,并收集样件日志。
2.2.3 混合网关通信信息安全要求
对于混合网关,CAN通信和以太网通信的信息安全要求应分别符合2.2.1和2.2.2的规定。
2.3 固件信息安全要求
2.3.1 安全启动
网关应具备安全启动的功能,可通过可信根实体对安全启动所使用的可信根进行保护。按照测试方法(a)、(b)、(C),网关的可信根、Bootloader 程序及系统固件不应被篡改,或被篡改后网关无法正常启动。
测试方法:
(a)网关安全启动可信根防篡改试验:
1)获取网关安全启动可信根存储区域的访问方法和地址;
2)试验人员使用软件调试工具写人数据,重复多次验证是否可将数据写入该存储区域。
(b)网关安全启动Bootloader程序校验试验:
1)提取网关正常运行的 Bootloader 程序;
2)使用软件调试工具修改该Bootloader程序的签名信息;
3)将修改后的Bootloader程序写人到网关内的指定区域;
4)监测网关是否正常加载Bootloader及系统固件。
(c)网关安全启动系统固件校验试验:
1)获取网关正常运行的系统固件;
2)使用软件调试工具修改系统固件程序的签名信息;
3)将破坏后的系统固件写人到网关内的指定区域;
4)监测网关是否正常工作。
2.3.2 安全日志
如网关具有安全日志功能,则满足如下要求:
1)按照测试方法(a)、(b)、(c)进行试验,当网关探测到不符合通信信息安全要求(2.2章节要求)的通信、网关发生软件配置变更、网关软件完整性校验失败等各类事件时,应对相关信息进行记录;
2)按照测试方法(d)进行试验,网关的安全日志中,应至少包括触发日志的事件发生时间(绝对时间或相对时间)、事件类型和车辆唯一标识码;
3)按照测试方法(e)进行试验,网关应对安全日志进行安全存储,防止非物理破坏攻击情况下日志记录的损毁,同时防止未授权的添加、访问、修改和删除,安全日志记录存储的位置可在网关内、其他ECU内或云端服务器内:
4)按照测试方法(f)进行试验,网关的安全日志中,不应包含任何形式的个人信息。
测试方法:
(a)如果被测网关有安全日志记录功能,检查被测样件依次执行各测试用例所产生的日志。
(b)如果被测网关有安全日志记录功能,尝试对被测样件改变信息安全设置(如修改访问控制列表),检查产生的日志。
(c)如果被测网关有安全日志记录功能,尝试对被测样件改变系统关键配置(如路由表等),检查产生的日志。
(d)如果被测网关有安全日志记录功能,检查日志中是否包含触发日志的事件发生时间、事件类型和车辆唯一标识码。
(e)如果被测网关有安全日志记录功能,通过试验工具尝试访问、修改或删除已记录的安全日志。
(f)如果被测网关有安全日志记录功能,检查日志中是否包含个人信息。
2.3.3 安全漏洞
按照测试方法(a)进行试验,网关不应存在权威漏洞平台6个月前公布且未经处置(处置包括消除漏洞、制定减缓措施等方式)的高危及以上的安全漏洞。
测试方法:
(a)使用漏洞扫描工具对网关进行漏洞检测,检测是否存在权威漏洞平台发布6个月及以上的高危安全漏洞;若存在高危漏洞,则检查该高危漏洞处置方案的技术文件。
2.4 数据信息安全要求
网关中的安全重要参数应以安全的方式存储和处理,防止未经授权的访问、修改、删除和检索。按照测试方法(a)、(b)、(c)进行试验,网关内的安全区域或安全模块不被未经授权的破解,读取和写人。可通过使用提供适当授权程序的安全区域、安全模块或等效安全技术来实现。
测试方法:
(a)试验人员尝试对网关安全区域或安全模块的授权访问控制进行破解(例如:使用暴力破解或字典破解方式,尝试破解安全区域或安全模块的访问口令);
(b)被测样件送样方提供网关内部安全存储区域的地址范围或安全模块的访问方式,试验人员使用送样方授权的软件工具,尝试对安全区域或安全模块进行读取访问;
(c)试验人员使用非送样方授权的软件工具或访问方式,尝试对安全区域或安全模块进行读取和写人。
3 典型攻击举例
3.1 死亡之 Ping(Ping of death)
一种通过向计算机发送格式错误或其他恶意的ping协议数据包的攻击,也称死亡之ping。例如由攻击者故意发送大于65536比特的P数据包给被攻击者,导致被攻击者无法处理甚至系统崩溃。
3.2 ICMP 泛洪攻击
一种简单的拒绝服务攻击,也称作ping泛洪攻击,攻击者用ICMP“回应请求”(ping)数据包淹没被攻击者。
3.3 UDP泛洪攻击
使用 UDP协议(一种无会话、无连接的传输层协议)进行的拒绝服务攻击。
3.4 TCP SYN攻击
一种拒绝服务攻击形式,攻击者向目标系统发送一连串SYN请求,试图消耗足够的服务器资源,使系统对合法流量无响应。
3.5 Teardrop攻击
在IP数据包的包头中,其中有一个字段是片位移,该字段指示了该分片数据包在原始未分片数据包中的起始位置或偏移量。
Teardrop攻击是指利用恶意修改了IP分片偏移值的IP数据包进行攻击,从而使被攻击者无法正常进行IP数据包重组,甚至导致系统崩溃
3.6 ARP欺骗攻击
这种欺骗攻击是攻击者将欺骗性的地址解析协议(ARP)数据包发送到本地网络上。目的是将攻击者的MAC地址与另一个主机或网络设备的P地址相关联,从而导致网络上其他节点将该IP地址的任何流量发送给攻击者。
3.7 IP欺骗攻击
IP地址欺骗,指攻击者假冒某个合法主机的IP地址发送数据包,从而达到获取被攻击者信任或者隐藏攻击者真实IP地址的目的。
3.8 ICMP Smurf攻击
这种攻击方法结合使用了IP欺骗攻击和ICMP泛洪攻击。攻击者伪造ICMP数据包的源地址,并将数据包目的地址设置为网络的广播地址。如果网络设备没有过滤此流量,则该ICMP数据包将被广播到网络中的所有计算机,而网络中所有计算机将向被伪造的源地址发送应答请求包,从而淹没这个被伪造源地址的计算机,并可能使整个网络拥塞而降低可用率。此攻击以最初发动这种攻击的恶意程序“Smurf”来命名。
3.9 IP地址扫描
IP地址扫描是一种基本的网络扫描技术,用于确定地址范围内的哪些地址具有活动的计算机主机。典型的地址扫描是向某个地址范围中的每个地址发送ping请求以尝试获得应答。
3.10 端口扫描(Port scan)
端口扫描,指攻击者尝试与目标主机上的每个端口建立通信会话。如果在某个端口的会话连接成功,则说明目标主机在该端口有开放的服务。
3.11 恶意软件
恶意软件是指在计算机系统中安装执行恶意任务的勒索软件、病毒、蠕虫、特洛伊木马、广告软件间谍软件等程序。
3.12 CAN 数据帧泛洪攻击
CAN总线网络通信协议规定ECU间传输数据帧的优先级由CAN数据帧的ID决定,ID越小则数据帧优先级越高。因此,人侵者如果在一个CAN总线上以很高的频率发送一个高优先级的CAN数据帧,将很可能会阻塞其他数据帧的发送,从而实现DoS攻击。
3.13 CANID伪造
由于CAN总线网络通信是广播通信,入侵者可以很容易获取在一条CAN总线上发送的所有数据帧。通常 CAN数据帧是明文传输的,入侵者可以通过猜解、遍历或其他手段解析数据帧格式和内容,对车辆关键控制信号进行逆向破解,进一步在该CAN总线上以这些ID的名义发送非法的数据帧,从而干扰或阻塞ECU间的正常通信,乃至实际控制关键系统(如动力系统)的某一个或者多个 ECU。
3.14 CAN 数据帧重放攻击
由于CAN总线网络通信是广播通信,人侵者可以很容易按时序捕获某个特定CANID的所有数据帧,然后在CAN总线网络上重新注入这些数据帧,达到干扰和非法控制某一个或多个ECU 的目的。
3.15 CAN 网络扫描
攻击者可以通过结合网络管理数据帧和功能寻址的诊断服务,对每条CAN总线上ECU的数量信息进行探测,也可以利用通过遍历物理寻址的方式进行探测。这些信息可以被攻击者进一步利用,从而发现潜在的ECU安全漏洞,更准确地对特定ECU进行攻击。
3.16 ECU 认证破解
攻击者可以通过遍历的方式暴力破解ECU安全访问的密。
另外若某个ECU的认证算法存在漏洞,则攻击者可以利用漏洞绕过安全验证,进而实现对该ECU的非法控制。
3.17 UDS服务攻击
UDS协议(ISO14229-1和ISO27145-3所约定的协议)主要用于通过CAN网络读取ECU的信息和向ECU写人信息。UDS定义了若干应用层服务,人侵者如果能探测到ECU开启了哪些服务,并且通过暴力破解或其他方式获取了这些服务的身份认证信息,就可以利用这些服务进行攻击,例如向ECU注人非法固件、读取或修改敏感数据、不断地重启ECU等。