本文件规定了汽车网关产品硬件、通信、固件、数据的信息安全技术要求及试验方法。
本文件适用于汽车网关产品信息安全的设计与实现,也可用于产品测试、评估和管理。
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 37935—2019 信息安全技术 可信计算规范 可信软件基
GB/T 25069、GB/T 37935-2019、GB/T 40861界定的以及下列术语和定义适用于本文件。
主要功能为安全可靠地在车辆内的多个网络间进行数据转发和传输的电子控制单元。
注1:汽车网关通过不同网络间的隔离和不同通信协议间的转换,可以在各个共享通信数据的功能域之间进行信息交互。
能够绕过系统认证等安全机制的管控而进入信息系统的通道。
3.3 可信根实体entity of root of trust
用于支撑可信计算平台信任链建立和传递的可对外提供完整性度量、安全存储、密码计算等服务的功能模块。
[来源:GB/T 37935-2019,3.12]
ACL 访问控制列表(AccessControl Lists)
ARP 地址解析协议(Address Resolution Protocol)
CAN 控制器局域网络(Controller Area Network)
CAN-FD 灵活数据速率的控制器局域网络(CAN with Flexible Data-rate)
DLC 数据长度码(Data Length Code)
DoS 拒绝服务(Denial of Service)
ECU 电子控制单元(Electronic Control Unit)
ICMP 网际控制报文协议(Internet Control Message Protocol)
IP 网际互连协议(Internet Protocol)
JTAG 联合测试工作组(Joint Test Action Group)
LIN 局域互联网络(Local Interconnect Network)
MAC 媒体访问控制(Media AccessControl)
MOST 面向媒体的串列传输(Media Oriented System Transport)
OBD 车载诊断(On-Board Diagnostics)
PCB 印制电路板(Printed Circuit Board)
SPI 串行外设接口(Serial Peripheral Interface)
SYN 同步序列编号(Synchronize Sequence Numbers)
TCP 传输控制协议(Transmission Control Protocol)
TCM 可信密码模块(Trusted Cryptography Module)
T PCM 可信平台控制模块(Trusted Platform Control Module)
TPM 可信平台模块(Trusted Platform Module)
UART 通用异步收发器(Universal Asynchronous Receiver/Transmitter)
UDP 用户数据报协议(User Datagram Protocol)
UDS 统一诊断服务(Unified Diagnostic Services)
USB 通用串行总线(Universal Serial Bus)
VLAN 虚拟局域网(Virtual Local Area Network)
基于CAN和/或CAN-FD总线的车内网络结构中, 大多数的ECU、域控制器之间都会通过CAN和/或CAN-FD总线进行通信。
这类结构中的汽车网关主要有CAN和/或CAN-FD总线接口, 可称为CAN网关。
基于以太网的车内网络结构中, 大多数的ECU、域控制器之间会通过以太网进行通信。
这类结构中的汽车网关主要有以太网接口,可称为以太网网关。
部分新一代车内网络结构中, 一部分ECU、域控制器之间通过以太网通信, 而另一部分ECU、域控制器之间仍通过传统通信协议(例如:CAN、CAN-FD、LIN、MOST等) 通信。
这类结构中的汽车网关既有以太网接口,还有传统通信协议接口,可称为混合网关。
附录B中举例列出了针对汽车网关和车内网络通信的部分典型攻击。
6.1.1 按照7.1a)进行试验,网关不应存在后门或隐蔽接口。
6.1.2 按照7.1b)进行试验,网关的调试接口应禁用或设置安全访问控制。
网关应在各路CAN网络间建立通信矩阵, 并建立基于CAN数据帧标识符(CAN ID) 的访问控制策略,按照7.2.1 a)进行试验后,应在列表指定的目的端口检测接收到源端口发送的数据帧;按照7.2.1 b)进行试验后,应对不符合定义的数据帧进行丢弃或者记录日志。
网关应对车辆对外通信接口的CAN通道(例如:连接OBD-Ⅱ端口的通道和连接车载信息交互系统的通道) 进行CAN总线DoS攻击检测。
网关应具备基于CAN总线接口负载的DoS攻击检测功能, 宜具备基于某个或多个CAN ID数据帧周期的DoS攻击检测功能。
按照7.2.1 c) 、d) 进行试验, 当网关检测到某一路或多路CAN通道存在DoS攻击时, 应满足以下要求:
a) 网关未受攻击的CAN通道的通信功能和预先设定的性能不应受影响;
b) 网关对检测到的攻击数据帧进行丢弃或者记录日志。
网关宜根据通信矩阵中的信号定义, 对数据帧进行检查, 检查内容包括DLC字段、信号值有效性等,按照7.2.l e)、f)进行试验,对不符合通信矩阵定义的数据帧进行丢弃或者记录日志。
网关宜具有数据帧异常检测功能,即检查和记录数据帧之间发送与接收关系的机制,按照7.2.1 g)进行试验,对检测到异常的数据帧进行丢弃或者记录日志。
网关检测到一定时间内数据帧的发送频率与预定义的频率差距较大,或相邻时间同一数据帧的信号值内容冲突或者不正常跳跃时,对数据帧进行丢弃或者记录日志。
网关应检查UDS会话发起的CAN通道是否正常, 按照7.2.1 h) 进行试验, 对非正常通道发起的会话进行拦截或者记录日志。
注:正常通道通常包括连接OBD-ⅡI端口的通道和连接车载信息交互系统的通道。
网关应支持网络分域,按照7.2.2 a)进行试验,对不符合网络分域的数据包进行丢弃。
网关应配置访问控制列表(ACL) , 访问控制列表中的访问控制要素主要应包括源IP地址、目的IP地址、协议类型(例如TCP、UDP、ICMP等) 、协议源端口、协议目的端口, 也可包括物理端口、通信方向(输人或输出) 、源MAC地址、目的MAC地址等。
访问控制列表应遵循默认拒绝原则,即丢弃所有不符合条件的数据包。
访问控制列表应遵循最小化授权原则,即只授予必要的权限。
按照7.2.2 b)、c)进行试验,对不符合访问控制列表的数据包进行丢弃或者记录日志。
网关应对车辆对外通信的以太网通道进行以太网DoS攻击检测。支持ICMP协议、TCP协议和UDP协议的网关, 检测的DoS攻击类型, 应分别至少包括ICMP泛洪攻击、TCP泛洪攻击和UDP泛洪攻击。
按照7.2.2 d) 进行试验, 当网关检测到以太网DoS攻击时, 应确保自身正常的功能和预先设定的性能不受影响,并对检测到的攻击数据包进行丢弃或者记录日志。
网关宜具有对部分或全部的TCP/IP会话流进行状态检查的功能。检查项包括TCP握手状态、数据包长度、包序列和TCP会话关闭状态等, 按照7.2.2 e) 进行试验, 对检测到的攻击数据包进行丢弃或者记录日志。
对于混合网关, CAN通信和以太网通信的信息安全要求应分别符合6.2.1和6.2.2 的规定。
网关应具备安全启动的功能,可通过可信根实体对安全启动所使用的可信根进行保护。按照7.3 a) 、b) 、c) 进行试验, 网关的可信根、Bootloader程序及系统固件不应被篡改, 或被篡改后网关无法正常启动。
a) 按照7.3 d)、e)、f)进行试验,当网关探测到不符合6.2要求的通信、网关发生软件配置变更、网关软件完整性校验失败等各类事件时,应对相关信息进行记录;
b) 按照7.3 g)进行试验,网关的安全日志中,应至少包括触发日志的事件发生时间(绝对时间或相对时间)、事件类型和车辆唯一标识码;
c) 按照7.3 h)进行试验,网关应对安全日志进行安全存储,防止非物理破坏攻击情况下日志记录的损毁,同时防止未授权的添加、访问、修改和删除,安全日志记录存储的位置可在网关内、其他ECU内或云端服务器内;
d) 按照7.3 i)进行试验,网关的安全日志中,不应包含任何形式的个人信息。
按照7.3 j)进行试验,网关不应存在权威漏洞平台6个月前公布且未经处置的高危及以上的安全漏洞。
网关中的安全重要参数应以安全的方式存储和处理,防止未经授权的访问、修改、删除和检索。按照7.4进行试验,网关内的安全区域或安全模块不被未经授权的破解、读取和写人。可通过使用提供适当授权程序的安全区域、安全模块或等效安全技术来实现。
a) 拆解被测样件设备外壳, 取出PCB板, 检查PCB板硬件是否存在后门或隐蔽接口;
b) 检查是否有存在暴露在PCB板上的JTAG、USB、UART、SPI等调试接口, 如存在则使用试验工具尝试获取调试权限。
CAN网关通信信息安全试验按照下列流程及要求依次进行。
a) 设置6.2.1.1所规定的访问控制策略(若被测样件的访问控制策略无法通过软件配置修改,则由送样方提供已预置的访问控制策略列表),检测设备向列表指定的源端口发送符合策略规定的数据帧,并在列表指定的目的端口检测接收数据帧。
b) 设置6.2.1.1所规定的访问控制策略(若被测样件的访问控制策略无法通过软件配置修改,则由送样方提供已预置的访问控制策略列表),检测设备向列表指定的源端口发送不符合策略规定的数据帧,在列表指定的目的端口检测接收到的数据帧,并收集样件日志。
c) 由送样方确认网关连接车辆对外通信接口的CAN通道, 检测设备对此通道以大于80%总线负载率发送符合通信矩阵的泛洪攻击数据帧,在指定的目的端口检测接收到的数据帧,并收集样件日志。如果有多个此类通道,则依次分别试验。
d) 由送样方确认网关连接车辆对外通信接口的CAN通道, 检测设备对此通道以1ms为周期,发送符合通信矩阵的某个CAN ID数据帧, 在指定的目的端口检测接收到的数据帧, 并收集样件日志。如果有多个此类通道,则依次分别试验。
e) 检测设备对网关发送一个或多个DCL字段值不符合通信矩阵定义的数据帧, 在指定的目的端口检测接收到的数据帧,并收集样件日志。
f) 检测设备对网关发送一个或多个信号值不符合通信矩阵定义的数据帧,在指定的目的端口检测接收到的数据帧,并收集样件日志。
g) 检测设备对网关连续发送一个或多个周期不符合通信矩阵定义(与定义周期偏差士50%)的周期型数据帧,在指定的目的端口检测接收到的数据帧,并收集样件日志。如果有多个此类通道,则依次分别试验。
h) 由送样方确认网关连接OBD-ⅡI端口的通道和连接车载信息交互系统的通道, 检测设备对除此类通道以外的通道, 发送UDS诊断数据帧, 在指定的目的端口检测接收到的数据帧, 并收集样件日志。如果有多个此类通道,则依次分别试验。
以太网网关通信信息安全试验按照下列流程及要求依次进行:
a) 对被测样件设置不同网络分域(如VLAN 1与VLAN 2) (若被测样件的网络分域策略无法通过软件配置修改, 则由送样方提供已预置的网络分域策略列表) , 在选定区域(如VLAN l) 发送符合网络分域策略和访问控制策略的广播数据包, 检查不同区域(VLAN 2) 是否可以收到数据包;
b) 设置6.2.2.2所规定的访问控制策略(若被测样件的访问控制策略无法通过软件配置修改,则由送样方提供已预置的访问控制策略列表),检测设备向列表指定的源端口发送符合策略规定的数据包,在列表指定的目的端口检测接收数据包;
c) 设置6.2.2.2所规定的访问控制策略(若被测样件的访问控制策略无法通过软件配置修改,则由送样方提供已预置的访问控制策略列表),检测设备向列表指定的源端口发送不符合策略规定的数据包,在列表指定的目的端口检测接收数据包,并收集样件日志;
d) 检测设备对网关发送符合网络分域策略和访问控制策略的泛洪攻击数据包,攻击类型可选择ICMP泛洪攻击和UDP泛洪攻击, 在目的端口检测接收数据包, 并收集样件日志;
e) 基于TCP协议, 构造多个不符合协议标准的数据包或数据包序列, 组成试验集, 检测设备对网关发送该试验集,在目的端口检测接收数据包,并收集样件日志。
对于混合网关,CAN通信和以太网通信的信息安全试验分别按7.2.1和7.2.2执行。
1) 获取网关安全启动可信根存储区域的访问方法和地址;
2) 试验人员使用软件调试工具写入数据,重复多次验证是否可将数据写入该存储区域。
b) 网关安全启动Bootloader程序校验试验:
1) 提取网关正常运行的Bootloader程序;
2) 使用软件调试工具修改该Bootloader程序的签名信息;
3) 将修改后的Bootloader程序写入到网关内的指定区域;
4) 监测网关是否正常加载Bootloader及系统固件。
2) 使用软件调试工具修改系统固件程序的签名信息;
d) 如果被测网关有安全日志记录功能,检查被测样件依次执行7.2所产生的日志。
e) 如果被测网关有安全日志记录功能,尝试对被测样件改变信息安全设置(如修改访问控制列表),检查产生的日志。
f) 如果被测网关有安全日志记录功能,尝试对被测样件改变系统关键配置(如路由表等),检查产生的日志。
g) 如果被测网关有安全日志记录功能,检查日志中是否包含触发日志的事件发生时间、事件类型和车辆唯一标识码。
h) 如果被测网关有安全日志记录功能,通过试验工具尝试访问、修改或删除已记录的安全日志。
i) 如果被测网关有安全日志记录功能,检查日志中是否包含个人信息。
j) 使用漏洞扫描工具对网关进行漏洞检测,检测是否存在权威漏洞平台发布6个月及以上的高危安全漏洞;若存在高危漏洞,则检查该高危漏洞处置方案的技术文件。
a) 试验人员尝试对网关安全区域或安全模块的授权访问控制进行破解(例如:使用暴力破解或字典破解方式,尝试破解安全区域或安全模块的访问口令);
b) 被测样件送样方提供网关内部安全存储区域的地址范围或安全模块的访问方式,试验人员使用送样方授权的软件工具,尝试对安全区域或安全模块进行读取访问;
c) 试验人员使用非送样方授权的软件工具或访问方式,尝试对安全区域或安全模块进行读取和写入。
图A.1~图A.3给出了汽车网关相关拓扑结构的示例。
B.1 死亡之Ping(Ping of death)
一种通过向计算机发送格式错误或其他恶意的ping协议数据包的攻击, 也称死亡之ping。例如由攻击者故意发送大于65536比特的IP数据包给被攻击者,导致被攻击者无法处理甚至系统崩溃。
一种简单的拒绝服务攻击, 也称作ping泛洪攻击, 攻击者用ICMP“回应请求”(ping) 数据包淹没被攻击者。
使用UDP协议(一种无会话、无连接的传输层协议) 进行的拒绝服务攻击。
一种拒绝服务攻击形式, 攻击者向目标系统发送一连串SYN请求, 试图消耗足够的服务器资源,使系统对合法流量无响应。
在IP数据包的包头中,其中有一个字段是片位移,该字段指示了该分片数据包在原始未分片数据包中的起始位置或偏移量。
Teardrop攻击是指利用恶意修改了IP分片偏移值的IP数据包进行攻击, 从而使被攻击者无法正常进行IP数据包重组,甚至导致系统崩溃。
这种欺骗攻击是攻击者将欺骗性的地址解析协议(ARP) 数据包发送到本地网络上。目的是将攻击者的MAC地址与另一个主机或网络设备的IP地址相关联, 从而导致网络上其他节点将该IP地址的任何流量发送给攻击者。
IP地址欺骗,指攻击者假冒某个合法主机的IP地址发送数据包,从而达到获取被攻击者信任或者隐藏攻击者真实IP地址的目的。
这种攻击方法结合使用了IP欺骗攻击和ICMP泛洪攻击。攻击者伪造ICMP数据包的源地址, 并将数据包目的地址设置为网络的广播地址。如果网络设备没有过滤此流量, 则该ICMP数据包将被广播到网络中的所有计算机,而网络中所有计算机将向被伪造的源地址发送应答请求包,从而淹没这个被伪造源地址的计算机,并可能使整个网络拥塞而降低可用率。此攻击以最初发动这种攻击的恶意程序“Smurf”来命名。
IP地址扫描是一种基本的网络扫描技术,用于确定地址范围内的哪些地址具有活动的计算机主机。典型的地址扫描是向某个地址范围中的每个地址发送ping请求以尝试获得应答。
端口扫描,指攻击者尝试与目标主机上的每个端口建立通信会话。如果在某个端口的会话连接成功,则说明目标主机在该端口有开放的服务。
恶意软件是指在计算机系统中安装执行恶意任务的勒索软件、病毒、蠕虫、特洛伊木马、广告软件、间谍软件等程序。
CAN总线网络通信协议规定ECU间传输数据帧的优先级由CAN数据帧的ID决定, ID越小则数据帧优先级越高。因此, 人侵者如果在一个CAN总线上以很高的频率发送一个高优先级的CAN数据帧, 将很可能会阻塞其他数据帧的发送, 从而实现DoS攻击。
由于CAN总线网络通信是广播通信, 人侵者可以很容易获取在一条CAN总线上发送的所有数据帧。通常CAN数据帧是明文传输的, 入侵者可以通过猜解、遍历或其他手段解析数据帧格式和内容,对车辆关键控制信号进行逆向破解, 进一步在该CAN总线上以这些ID的名义发送非法的数据帧, 从而干扰或阻塞ECU间的正常通信, 乃至实际控制关键系统(如动力系统) 的某一个或者多个ECU。
由于CAN总线网络通信是广播通信, 入侵者可以很容易按时序捕获某个特定CAN ID的所有数据帧, 然后在CAN总线网络上重新注入这些数据帧, 达到干扰和非法控制某一个或多个ECU的目的。
攻击者可以通过结合网络管理数据帧和功能寻址的诊断服务, 对每条CAN总线上ECU的数量信息进行探测,也可以利用通过遍历物理寻址的方式进行探测。这些信息可以被攻击者进一步利用,从而发现潜在的ECU安全漏洞, 更准确地对特定ECU进行攻击。
攻击者可以通过遍历的方式暴力破解ECU安全访问的密钥。
另外若某个ECU的认证算法存在漏洞, 则攻击者可以利用漏洞绕过安全验证, 进而实现对该ECU的非法控制。
UDS协议(ISO 14229-1和ISO 27145-3所约定的协议) 主要用于通过CAN网络读取ECU的信息和向ECU写人信息。UDS定义了若干应用层服务, 人侵者如果能探测到ECU开启了哪些服务, 并且通过暴力破解或其他方式获取了这些服务的身份认证信息,就可以利用这些服务进行攻击,例如向ECU注入非法固件、读取或修改敏感数据、不断地重启ECU等。
[1] GB/T 28458—2020 信息安全技术 网络安全漏洞标识与描述规范
[2] GB/T 37027—2018 信息安全技术 网络攻击定义及描述规范
[3] ISO 14229-1 Road vehicles-Unified diagnostic services(UDS) —Part l:Application layer
[4] ISO 27145-3 Road vehicles一Implementation of World-Wide Harmonized On-Board Diag-nostics(WWH-OBD) communication requirements—Part3:Commonmessagedictionary