鉴源实验室丨智能网联汽车协议模糊测试技术概述

作者 | 乔琪 上海控安可信软件创新研究院工控网络安全组

来源 | 鉴源实验室

社群 | 添加微信号“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)增强协议安全模型。随着汽车功能的增多以及更多新技术的应用,协议安全模型需要进行持续更新。目前已有许多公司在进行相关研究,但是这些公司大多为传统汽车厂商,未来可以考虑和互联网企业合作,开发新的协议安全模型来提高协议安全性能。

智能网联汽车协议模糊测试技术是保障智能网联汽车安全的重要手段之一。随着智能网联汽车技术的不断发展和演进,模糊测试技术也将不断完善和改进,以应对日益复杂和多样化的安全威胁。未来,我们可以期待模糊测试技术在智能网联汽车领域的更广泛应用,为汽车行业的安全发展贡献力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/552846.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

javaweb http

1、http简介 HTTP 超文本传输协议(HTTP-Hyper Text transfer protocol),是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过十几年的使用与发展&…

【绘图软件】solidworks2022版本安装强制卸载(清理干净版!)全流程~超详细+报错避坑

安装包可以去【盒子部落】下载,也可以用下面网盘直接下载: 夸克网盘链接:https://pan.quark.cn/s/f2c110617bfa(无密码) 1.解压后进入文件夹 2.进入_SolidSQUAD_文件夹 3.复制SolidWorks_Flexnet_Server文件夹 4.打开C…

MySQL 的事务

事务概念 MySQL事务是一个或者多个的数据库操作,要么全部执行成功,要么全部失败回滚。 事务是通过事务日志来实现的,事务日志包括:redo log和undo log。 事务状态 事务有以下五种状态: 活动的部分提交的失败的中止的…

基于SpringBoot+Vue社区医院服务平台(源码+文档+包运行)

一.系统概述 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了社区医院信息平台的开发全过程。通过分析社区医院信息平台管理的不足,创建了一个计算机管理社区医院信息平台的方案。文章介绍了社区医院信息…

2024Guitar Pro 8.1 Mac 最新下载、安装、激活、换机图文教程

吉他爱好者必备神器:Guitar Pro v8.1.1 Build 17深度解析 随着数字音乐制作和学习的日益普及,越来越多的吉他爱好者开始寻找能够帮助他们提升技能、创作音乐的专业工具。在众多吉他制作软件中,Guitar Pro因其强大的功能和易用的界面备受推崇…

Qt 6子窗口全屏显示

一、全屏显示效果 二、全屏相关函数 1,全屏显示函数 QWidget::showFullScreen(); // 此方法只对顶级窗口有效,对子窗口无效 2,恢复显示函数 QWidget::showNormal(); // 此方法也只对顶级窗口有效,对子窗口无效 3,最小化显示函…

使用Flask和Flask-JWT-Extended保护API免受跨站请求攻击

在本文中,我们将探讨如何使用Flask和Flask-JWT-Extended库来保护您的API免受跨站请求攻击(CSRF)。我们将首先简要介绍CSRF攻击的概念,然后详细说明如何使用Flask-JWT-Extended库来保护您的API。 什么是跨站请求攻击(C…

【C++题解】1565. 成绩(score)

问题:1565. 成绩(score) 类型:基本运算、小数运算 题目描述: 牛牛最近学习了 C 入门课程,这门课程的总成绩计算方法是: 总成绩作业成绩 20% 小测成绩 30% 期末考试成绩 50%。 牛牛想知道&am…

聊聊应用商城评分4.9的Apipost IDEA插件

Apipost Helper,作为IDEA插件,可以快速生成和查询API文档,直观友好地在IDE中调试接口。它简化了开发流程并提升效率,即使新手也能够迅速掌握。Apipost Helper提供了诸多便捷功能,如通过代码查找接口或者通过接口查找代…

C++教你如何模拟实现string,如何实现string写时拷贝

文章目录 前言成员变量默认成员函数默认构造函数拷贝构造函数析构函数赋值运算符重载 容量相关函数(Capacity)reserve函数resize函数size函数capacity 函数clear函数 修改函数(Modifiers)swap函数insert函数字符插入字符串插入 ap…

论文阅读-Federated-Unlearning-With-Momentum-Degradation

论文阅读-Federated Unlearning With Momentum Degradation 联邦忘却与动量退化 Yian Zhao IEEE Internet of Things Journal 2023 年 10 月 2 日 CCF-C momentum degradation-MoDe 动量退化 memory guidance-记忆引导 knowledge erasure-知识擦除 Deep-learning neural n…

【笔记】vscode debug进入site-packages包源码

选择左侧栏第三个图标,点击创建 launch.json 文件 选择 Python Debugger 选择Python文件 这里可以看到launch.json 文件 在configurations中添加键值对 "justMyCode": false在文件中打上断点,点击"三角符"号开始调试 按F11或者红框…

ROS 2边学边练(27)-- 创建一个launch文件

前言 ROS 2中的启动系统负责帮助用户描述其系统的配置,然后按描述执行。系统的配置包括运行什么程序,在哪里运行,传递什么参数,以及ROS特定的约定,这些约定通过为每个组件提供不同的配置,使其易于在整个系统…

[stm32]DMA使用

自动重装和M2M(软件trig)不能一起使用,否则会停不下来 void MyDMA_Init(uint32_t AddrA,uint32_t AddrB,uint16_t Size){RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);DMA_InitTypeDef DMA_InitStructure;DMA_InitStructure.DMA_PeripheralBaseAddrAddrA;//外…

go语言并发实战——日志收集系统(三) 利用sarama包连接KafKa实现消息的生产与消费

环境的搭建 Kafka以及相关组件的下载 我们要实现今天的内容,不可避免的要进行对开发环境的配置,Kafka环境的配置比较繁琐,需要配置JDK,Scala,ZoopKeeper和Kafka,这里我们不做赘述,如果大家不知道如何配置环境&#x…

STM32芯片flash被锁导致Error Flash Download failed Cortex-M4,解决办法(全)亲测有效

STM32芯片flash被锁导致Error: Flash Download failed - "Cortex-M4",解决办法(全)亲测有效🤩! 方法1:由于Keil 中debug的仿真器配置出错导致的下载失败(这种问题虽然是低级错误&…

友思特应用 | 红外视角的延伸:短波红外相机的机器视觉应用

导读 短波红外SWIR在不同波段针对不同材料的独特成像特征为各领域检测应用的拓宽提供了基础。本文将展现短波红外成像技术在水分检测、塑料检测、太阳能电池板检查和矿场开采等领域的丰富应用案例,讨论短波红外相机在未来的发展方向。 SWIR 背景简介 短波红外 &am…

基于SpringBoot+Vue的IT技术交流平台(源码+文档+包运行)

一.系统概述 我国科学技术的不断发展,计算机的应用日渐成熟,其强大的功能给人们留下深刻的印象,它已经应用到了人类社会的各个层次的领域,发挥着重要的不可替换的作用。信息管理作为计算机应用的一部分,使用计算机进行…

PHP货运搬家/拉货小程序二开源码搭建的功能

运搬家/拉货小程序的二次开发可以添加许多功能,以增强用户体验和提高业务效率。以下是一些可能的功能: 用户端功能: 注册登录:允许用户创建个人账户并登录以使用应用程序。货物发布:允许用户发布他们需要搬运的货物信息…

OpenHarmony实战开发-如何通过分割swiper区域,实现指示器导航点位于swiper下方的效果。

介绍 本示例介绍通过分割swiper区域,实现指示器导航点位于swiper下方的效果。 效果预览图 使用说明 1.加载完成后swiper指示器导航点,位于显示内容下方。 实现思路 1.将swiper区域分割为两块区域,上方为内容区域,下方为空白区…