背景

随着智能网联汽车的发展,车辆的互联性大幅提高,与之相伴的则是大大上升的汽车网络安全风险。根据工信部车联网动态监测情况显示,2020年以来发现整车企业车联网信息服务服务提供商等相关企业和平台的恶意攻击达到280余万次,平台的漏洞、通信的劫持、隐私泄露等风险十分严重,造成的危害更加严峻。威胁由车外进入车内、影响程度加大、网络安全与功能安全要求矛盾等问题层出不穷。[1]

智能网联汽车信息安全事件统计(来源:Upstream Security,2020年)

为保障智能网联汽车的网络安全,需要充分了解智能网络汽车的典型攻击场景,其可大体分为远程入侵、短距离攻击、接触史攻击三大类。远程入侵场景中,攻击者可通过直连车辆或经过云端转发等方式恶意刷写车辆关键固件、发送控车指令、窃取个人敏感信息;近距离攻击场景中,攻击者可通过WiFi、蓝牙、NFC等通信方式,通过控车指令重放方式威胁用户车辆财产安全、使用未授权设备与车辆建立连接影响车内用户正常使用通信设备;接触式攻击场景中,攻击者通过攻入IVI工程模式,窃取车辆数据、分析车辆电子电气拓扑结构、捕获控车报文、解析车辆DBC文件等。

智能网络汽车典型攻击场景(来源:《智能网联汽车安全渗透白皮书(2020)》)

面对日益严峻的智能网联汽车网络安全问题,整车企业的安全意识逐步提升。而限于成本、技术成熟度等因素,整车企业在网络安全测评环节基础薄弱,对于车内部件、整车等方面的测试验证能力不足,整车渗透目前还主要依赖于人工测试,渗透深度和水平缺乏可量化评估标准。

为整车企业更好地进行渗透测试,中国软件评测中心智能网联汽车测评工程技术中心在《智能网联汽车安全渗透白皮书(2020)》中提出:在不损坏车辆、不拆解车辆、黑盒测试的前提下,给出用户侧安全渗透测试指标,主要包括车载信息交互安全、车内外通信安全、接口安全、APP安全等方面。

渗透测试指标(来源:《智能网联汽车安全渗透白皮书(2020)》)

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

对车载CAN/CAN FD网络系统实施渗透测试,是一个常用的用于评价目标系统安全性的一种方法,可以从攻击角度了解车辆是否存在隐性漏洞和安全风险,并可基于测试结果,进一步采取防护措施,以进一步提高系统的安全性能。对车载CAN/CAN FD总线实施渗透测试的工作内容可大致分为四类,其分别为:模糊攻击测试、重放攻击测试、DoS(Denial-of-Service)攻击测试及UDS(Unified Diagnostic Services)诊断协议栈探测。以下将详细介绍上述四类渗透测试工作。

渗透测试工作

【模糊攻击测试】

对总线实施模糊攻击是指通过软件自动地生成一系列的无效、非预期或随机的报文后,将所生成的报文注入到目标总线上,以使总线出现非预期行为的一种攻击。模糊攻击测试可在不同层面上实施。一是可对CAN/CAN FD原始报文进行模糊。在该层测试上,测试者可配置需要模糊的域,例如,CAN报文的仲裁域、控制域及数据域。二是可在系统网络的信号层进行模糊。基于目标网络的DBC文件(一种描述CAN网络中通信数据信息的文件)可解析CAN报文中搭载的信号,从而实现在信号层面实施模糊。三是可在特定协议层面上实施模糊。例如,在车载CAN网络中,常用UDS协议栈来实现车辆的诊断。因此,可以对UDS应用层协议(ISO14229-1)中的各项服务请求实施模糊。在上述三种模糊测试的层面上,均可按需选用不同的模糊策略,如随机模糊、遍历模糊、边界值模糊等。通过模糊攻击测试,可检测目标系统在有无效的、非预期的或随机的输入时,系统是否会发生不可逆的损害,或是否会有不可接受的行为等情况。

【重放攻击】

指恶意地将有效数据在目标网络中进行重复地或延迟地播放,从而达到恶意目的的一种攻击。重放时可按需采用1:1重放的方法,即每一个报文发送的时间间隔按照真实采集到的时间间隔发送。亦可采用快速重放方法,即以最快速率将输入文件中的报文快速发送至总线上。通过该测试,可检测系统是否有抵御重放攻击的能力。另外,还可利用重放的手段对部分网络信号实施逆向分析,从而找到目标信号。例如,测试者想要在网络报文中找到某个用于控制某扇车窗的信号,则测试者可通过不断地重放一段包含有控制车窗下降的报文记录,并逐渐缩小重放的范围,以最终找到搭载有控制该车窗升降信号的报文。

【DoS攻击】

在计算机领域中,DoS攻击(即拒绝服务攻击)指通过临时或无限期地干扰连接于网络的服务,以达到使设备或网络资源不可获得的一种攻击。在CAN/CAN FD网络中,可利用CAN协议的仲裁机制,通过频繁发送高优先级的报文来占满总线资源,以达到使正常报文不可传输的目的。通过该测试,可检测系统是否有抵御DoS攻击的能力。

【UDS协议栈探测】

指通过一系列的诊断请求及收到的响应报文,以探测目标网络或节点的UDS协议栈配置情况。该探测并不是一种攻击,而是一种在实施攻击前的信息收集手段。例如,可探测目标网络中所包含的诊断标识符,探测某一个目标节点所支持的服务及子服务,探测执行某个特定服务的前提条件等。然后,可利用所获得的信息,如目标节点诊断ID,内部数据ID,服务进入条件等,实施进一步的攻击。

以上四类渗透测试工作均在CAN/CAN FD总线的报文通信层面实施,即通过向目标总线上注入测试报文,来实现上述的攻击测试或探测。

为实现上述测试工作,可使用任意的车载CAN/CAN FD总线仿真测试工具,配以相关的测试脚本实现。上海控安针对上述测试需求,开发了用于实现上述功能的渗透测试工具,以帮助整车企业快速实施所需的渗透测试,发现目标系统潜在的相关安全漏洞,从而为后续的网络系统安全设计及改进提供依据,最终保障目标系统的网络安全。

渗透测试工具界面

参考文献:

[1] 《智能网联汽车安全渗透白皮书(2020年)》,中国软件评测中心