作者 | 乔琪 上海控安可信软件创新研究院工控网络安全组
来源 | 鉴源实验室
社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区”
摘要:随着智能网联汽车的快速发展,其协议安全性和稳定性成为了关注焦点。智能网联汽车协议特点主要表现为:数据格式不统一、传输速率不统一、通信协议复杂以及通信内容不确定等。这些特点对智能网联汽车的安全性能提出了更高要求,同时也给协议安全性测试带来了更大挑战。模糊测试技术因其高效发现协议漏洞和缺陷的特性,在智能网联汽车领域备受关注。本文旨在对智能网联汽车协议模糊测试技术进行综述,探讨其原理、方法和应用,以期为智能网联汽车协议安全研究提供参考。
01
引 言
在“智慧交通”初具模型的大背景下,智能网联汽车作为汽车产业的重要发展方向,其基于网络通信的协议安全问题日益受到重视。智能网联汽车是指由车载传感器、控制器、执行器等车载组件以及云平台等基础设施,融合互联网、云计算、大数据和人工智能等新兴技术形成的一种新型汽车。智能网联汽车是未来汽车发展的必然趋势,但是由于其具有“智能”和“网联”两大特点,在其实际运行过程中,系统与系统之间的通信安全问题成为制约其发展的重要因素。
近年来,汽车网络安全攻击事件层出不穷。例如2013年研究人员通过OBD-II(第二代车载自动诊断系统)成功入侵车载CAN(控制器局域网)总线,从而控制了福特翼虎、丰田普锐斯的方向盘、刹车、油门、仪表盘等汽车组件。2015年研究人员证明可以通过软件漏洞无线侵入Jeep切诺基系统,导致该公司召回了一大批汽车。现代智能汽车巨头之一的特斯拉也曾被科恩实验室通过远程方式入侵,实现了解锁车辆、打开天窗及转向灯、调节座椅等多项汽车功能的控制。
传统的功能测试如协议一致性测试等,通常无法评估系统在非预期输入下的行为表现,不能有效保障智能网联汽车的安全目标实现与其设计的符合性。目前国内外对于智能网联汽车协议栈的安全保障主要通过对其进行全面的网络安全测试来实现,具体包括渗透测试、模糊测试和合规性测试三大类。其中,渗透测试通过模拟攻击者的行为来发现系统中的漏洞和弱点,重点关注协议和系统的安全漏洞以及脆弱性;模糊测试通过向系统输入随机、异常或者无效的数据来发现协议栈在处理非预期输入时可能出现的崩溃和安全漏洞,测试重点是协议栈实施的正确性以及协议本身的漏洞,相对渗透测试更为全面;合规性测试则侧重于确认系统是否符合特定的安全标准、行业规范或者法规要求。因此,本文将模糊测试与传统安全测试进行比较,重点阐述模糊测试在智能网联汽车协议安全保障方面的应用情况和研究现状,为开展智能网联汽车协议安全测试提供参考。
02
模糊测试原理
模糊测试(Fuzzing Test)是一种通过将随机数据(非预期输入)输入到目标系统以评估是否会出现非预期行为的测试方法,已经在计算机网络安全测试领域获得了广泛应用,在自动化漏洞挖掘方面具备优异表现。
按照测试者对于被测系统的了解程度,模糊测试可以分为三种类型:黑盒测试、白盒测试和灰盒测试。这三种测试方式同时也会影响对于测试结果的分析。
· 黑盒测试(Black Box Testing)
图1 黑盒测试图示
不了解系统内部工作原理时可以采用黑盒测试。测试者只需关注系统的输入和输出,而不用考虑系统的内部逻辑或实现细节。黑盒测试是最接近真实世界攻击事件的方式,因为它的假设条件与真实攻击者能力一致,即只能观察系统的外部行为,而无法获取系统的内部信息。对测试结果的监控也只能通过黑盒方式来观测被测件的外部变化,例如协议连接中断、硬件耗能异常、设备断电等。
· 白盒测试(White Box Testing)
图2 白盒测试图示
在获得了系统内部工作原理的情况下,可以采取白盒测试。测试者可以通过访问系统的源代码、设计文档等内部信息,设计更具针对性的测试用例,以覆盖系统的各个路径和逻辑分支,发现潜在的漏洞和错误。白盒测试的实施通常对设计者的技术能力和专业知识有一定的考验。白盒测试的结果监控则较为清晰明确,可以通过源代码/二进制插桩等方法获取系统信息反馈,以及测试覆盖率、效率等关键指标参数。
· 灰盒测试(Gray Box Testing)
灰盒测试介于黑盒测试和白盒测试之间,测试者在一定程度上了解系统的内部工作原理,但并不具备完整的系统信息。灰盒测试在测试效率和覆盖范围之间取得了平衡,可以更全面地发现系统的漏洞和弱点,同时又不需要测试者完全了解系统的所有细节。通常的灰盒测试是从一个黑盒被测件开始,由专业测试人员利用逆向工程获取系统的内部知识,具有较高的复杂性和技术门槛。
协议模糊测试通过模拟通信节点与被测件建立通信信道,通过发送对应协议模糊报文、观察系统的响应情况,来发现潜在的漏洞和异常行为。协议模糊测试虽然已经获得了广泛应用,但是在智能网联汽车安全评估中的应用相对较少。这主要是因为智能网联汽车在通信过程中使用了复杂的协议栈,不仅包括以太网类型的协议(例如SOME/IP协议)还包括现场总线类型的协议(例如CAN总线协议),这些协议在数据格式、传输速率、通信内容等方面具有较大差异,对模糊测试工具的设计提出了较大挑战。但很明显地,协议模糊测试在自动化漏洞挖掘方面具有巨大潜能,具备较高的研究价值。
03
模糊测试方法
按数据产生方式不同,模糊测试数据的生成可以分为生成式(Generation)和变异式(Mutation)两种主要方式:
1. 生成(Generation)
生成是一种从头开始创建测试数据的方法。在生成过程中,测试者根据目标系统的特征和预期的输入格式,使用各种算法和技术生成符合条件的测试数据。这种方法可能包括使用随机生成器、模型驱动生成、语法驱动生成等技术来生成测试数据。测试者可以根据系统的需求和特性,设计出具有特定结构和属性的测试数据。生成的测试数据可能更具有代表性,因为它们是根据系统的特征和预期的输入格式精心设计和生成的。然而,生成测试数据可能需要更多的时间和资源来创建。
2. 变异(Mutation)
变异是一种在现有测试数据的基础上进行修改和变化,生成新的测试数据的方法。在变异过程中,测试者会对现有的测试数据进行一系列的随机或有针对性的变换操作,以生成新的测试数据。这种方法通常包括对测试数据进行随机变换、替换、删除、添加等操作,以创建与原始测试数据相似但又稍有不同的新测试数据。变异可以快速生成大量的测试数据,因为它利用了现有测试数据的信息和结构。然而,由于变异过程是基于现有数据进行修改的,因此生成的测试数据可能不够多样化,可能无法覆盖所有可能的边界情况。
生成和变异是两种常见的模糊测试数据生成方式。生成方法从头开始创建测试数据,可能更具代表性但需要更多时间和资源;而变异方法则是基于现有数据进行修改,可以快速生成大量测试数据,但可能缺乏多样性。在实际应用中,可以根据具体的测试需求和情况选择合适的生成方式,更广泛使用的方式可能是采用两种方法的结合。
图 3 模糊测试主要阶段
04
智能网联汽车协议模糊测试应用
智能网联汽车融合使用车载总线与车载以太网已经成为了下一代车载网络架构的发展趋势。以典型车载诊断协议DoIP为例,其下层传输协议可以为CAN总线,也可以为TCP或者UDP等标准以太网协议。车载协议种类的多样性使得开发人员在实现汽车通信协议栈时,可能因为直接使用了开源代码或者个人疏忽导致软件代码存在漏洞,需要对其进行详尽的模糊测试。由于汽车领域存在激烈的行业竞争,为保护自身企业的利益和知识产权,仍有相当一部分厂商在委托第三方安全测试时不愿意提供源代码。因此黑盒测试是目前智能网联汽车领域最适用的模糊测试方法。
车载通信协议通常运行在汽车行业专有的嵌入式设备,很难在进行测试时提取被测程序或者事先进行插桩,因此基于协议字段规则变异的黑盒模糊测试格外适用于智能网联汽车协议安全测试。测试人员只需要通过某种方法获取协议知识并设置合适的监控组件,就能通过分析测试的输入输出来获取测试结果反馈。
获取协议知识的方法目前大致可以分为3类:①利用领域专家经验或者分析协议标准文本;②利用机器学习方法;③利用协议逆向工程方法。第一种方法主要适用于公开协议,通过梳理协议报文格式等信息来定义协议报文数据模型以及状态转换模型,然后可以利用Peach、Sulley、Boofuzz等知名模糊测试框架进行测试。
图 4 表示了基于Peach框架的IP协议数据模型描述,包括每个协议字段的类型、定义、赋值、变异情况以及某些字段的关联关系,例如长度关系
第二种方法主要针对协议信息未公开的情况。针对单条协议报文,对抗神经网络GAN能够从截获的协议通信流量数据中学习协议知识并构造符合协议报文结构分布特征的测试数据。而长短期记忆网络LSTM能够学习序列报文的内置关系,可以有效描述协议状态的转移。基于机器学习的协议知识获取可以在未知协议结构的情况下提高生成模糊测试用例的效率。
第三种方法与前两种不同,需要前期针对某个特定协议进行大量分析工作,不具备普适性,但能大幅提高对特定协议的测试效率。研究者曾通过模式识别的方式分析某私有通信协议的报文格式,并通过报文相似性对比重建该协议握手过程。然后使用学习到的协议知识构建模糊测试原型系统,发现了该协议多个严重漏洞。可用的私有协议逆向工程包括基于报文序列对齐分析Netzob、Discoverer等和基于程序执行的分析Dispatcher、Replayer等。
除了获取协议知识,如何监控黑盒模糊测试结果也是车载协议栈测试一大重点。常见的黑盒监控包括连接检查、主机存活检查等,发现漏洞能力极其有限,还可能存在大量误报。目前出现了一些基于电量波动或者报文信号误差的监测方式,相较于存活检查等更为精确,但需要硬件分析工具的支持。
05
结论与展望
目前,智能网联汽车协议安全测试还处于发展中期,测试场景还不够丰富,测试技术还比较欠缺,同时,随着新技术的应用,协议安全测试面临着更多的挑战。未来智能网联汽车协议安全测试研究应从以下几个方面开展:
(1)提升模糊测试的自动化程度。当前模糊测试工具大多只支持单步和单步的执行,未支持多步执行。未来可以引入多步执行模型来提升模糊测试的自动化程度,同时也可以结合深度学习来提高模糊测试效率。
(2)提高模糊测试的覆盖率。当前的模糊测试技术大多基于机器学习算法对协议进行分析,但是由于机器学习算法的训练数据集较大,导致其结果准确率较低。未来可以研究基于深度学习算法进行协议分析,提升模糊测试结果准确率。
(3)增强协议安全模型。随着汽车功能的增多以及更多新技术的应用,协议安全模型需要进行持续更新。目前已有许多公司在进行相关研究,但是这些公司大多为传统汽车厂商,未来可以考虑和互联网企业合作,开发新的协议安全模型来提高协议安全性能。
智能网联汽车协议模糊测试技术是保障智能网联汽车安全的重要手段之一。随着智能网联汽车技术的不断发展和演进,模糊测试技术也将不断完善和改进,以应对日益复杂和多样化的安全威胁。未来,我们可以期待模糊测试技术在智能网联汽车领域的更广泛应用,为汽车行业的安全发展贡献力量。