Fuzz测试:提升自动驾驶安全性

news2025/2/21 19:25:53

目录

什么是Fuzz测试?

自动驾驶的潜在风险

Fuzz测试:自动驾驶和车联网

Fuzz测试方法有以下几种:

资料获取方法


纵观近百年来汽车制造业的发展历程,产业跨进的每一步背后都有着技术创新作为支撑。汽车技术创新对世界经济、社会发展、人们的生产生活方式产生了极其深远的影响。1908年,福特公司正式推出T型车,背后是其首创的汽车生产流水线;1981年,汽车第一次具备了车载导航系统——“Electro Gyrocator”,Electro Gyrocator(电子陀螺仪导航器)由日本本田和阿尔派公司合作推出,装配在第二代本田雅阁汽车上,该导航系统在当时售价为2750美元,约占车辆总体售价的1/4;时至今日,车辆都已配备了泊车辅助系统,汽车产业在技术层面持续革故鼎新。

随着汽车新技术和新变革加速落地,安全漏洞问题也随之产生,通过物联网实现网络连接的汽车正暴露在和手机、笔记本电脑一样的网络安全威胁中。Fuzz测试,又被称为模糊测试,是一种相对简单的解决方案,可为汽车安全问题提供必要的预防措施。

什么是Fuzz测试?

Fuzz的释义为“绒毛、起毛、做绒毛状飞散、使模糊、变得模糊”,在软件测试领域一般指代“模糊测试”,又称Fuzzing。本文将统一称作Fuzz测试。

Fuzz测试是用于检测软件或计算机系统安全漏洞的自动化软件测试技术,其核心思想是将自动或半自动生成的随机数据列入到DUT(Device Under Test,被测设备)中并监视其异常,以发现可能存在的错误。Fuzz测试可被用作白盒、灰盒或黑盒测试,其工具通常分为变异测试(mutation-based)和生成测试(generation-based),能够发现先前未能发现的漏洞,即零日漏洞。Fuzz工具通常会针对协议缓冲区发送字节、字母或整数序。

自动驾驶的潜在风险

当前的汽车技术已远远发展至发动机以外更复杂的范畴,车载设备通过无线通信技术,可以对信息网络中车辆的动态信息进行有效利用,从而在车辆运行中提供各种功能服务,自动驾驶也应运而生。这一概念被称为车联网,是IoT(Internet of Things,物联网)的一种。车联网带来方便快捷的同时,也成为了黑客攻击汽车控制系统的主要渠道,存在可被利用的安全漏洞。

Upstream Security 发布的《2021 年全球汽车网络安全报告》预测称,在 2021-2023 年,网络黑客攻击或将导致汽车业折损近 240 亿美元。报告指出:“汽车生态中的网络威胁尤为令人担忧,因为此类威胁可能直接影响道路使用者的安全。车辆本身就很危险;再加上联网,现代汽车就更加危险了。”

▲2010-2020年汽车安全影响因素

数据来源:Upstream《2021年全球汽车网络安全报告》

由于自动驾驶尚未得到广泛应用,且汽车制造商通常会在既定的平台标准上开发自己的安全协议,相对应的安全漏洞也未得到适当的研究和记录。美国国家标准与技术研究所 (National Institute of Standards and Technology,NIST) 在其自动驾驶汽车系统和组件的漏洞检测(Common Vulnerabilities & Exposures,CVE)数据库中记录的问题数量虽然较少,但随着近几年特斯拉等涉及智能驾驶的汽车事故频频发生,自动驾驶的安全隐患问题不容忽视。

Fuzz测试:自动驾驶和车联网

想象一下这样的情况:当您正在高速公路上驾驶自动驾驶汽车——引擎正在与传感器通信,发送和接收数千个数据包。突然,另一个不明节点向您的引擎发送了数千个数据包。该节点没有遵守规则,不按协议规定的字节数来发送。虽然您的引擎已经过测试并具备抵抗这些数据包的能力,但是随着节点不断发送整数或十六进制组合的数据包,这些不被处理的数据可能导致缓冲区溢出,汽车引擎就将被关闭。这是安全漏洞被利用的情况下,随时都可能出现的可怕场景。为了防止这种情况,可以使用模糊器来测试协议中的每个指定区域和缓冲区,从而确保每辆自动驾驶的汽车都具备抵御那些试图破坏程序、绕过登录直接进行远程操作的攻击者的能力。

Fuzz测试方法有以下几种:

1. 基于变异:有效代码样本被随机变异并以错误的格式输入,虽然可以满足基本测试需求,但变异可能无法提供导致程序崩溃的缓冲区的明确输出,且难以重现,很难找到确切的漏洞。

2. 基于重放:Fuzz测试工具使用已保存的数据样本,对其进行变异后重放以创建攻击,然而这种方法在双向的汽车动态协议中效果也并不理想。

3. 基于语法生成:在这种方法中,Fuzz测试工具将学习RFC(Request For Comments,参考标准)并理解其语法,明确哪些字段可能不会发生变异、哪些字段可以测试。基于语法生成用例的Fuzz测试工具将构建有效的输入序列,对通信的特定部分进行测试,确保数据包不会立即被被测设备阻塞——不会产生序列错误的测试用例。

尽管Fuzz测试并不是唯一的解决方案,但确实是自动驾驶行业最合适的选择:它不像静态分析工具,需要被测设备信息和源代码才能检测潜在漏洞,而是将整个堆栈进行黑盒化的模糊处理。这样,无需任何关于被测设备的信息和测试访问权限,开发者在开发阶段和预发布阶段就能发现漏洞。Fuzz测试能在每个协议、每个独特的场景下进行。

Fuzz测试的另一个关键优势,与利用IP通信发现漏洞的不同之处,在于其能够通过需要串行连接的协议进行通信,为没有TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)通信的产品提供强大的测试支持。


资料获取方法

【留言777】

各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

openCV-python安装

同样在anaconda下创建一个opencv-python环境 首先,打开anaconda navigator,然后创建一个环境来放opencv-python。 先点击下面的create,然后创建一个新环境。 选择你的python版本,这里我选择的是Python3.6。你也可以根据你的需要和习惯来选择…

【前后端数据交互】原生JS的Fetch请求封装

一、 AJAX 和 Fetch 对比 1.1 AJAX 概述 AJAX 是最早出现请求数据的方式,它不需要不需要刷新整个页面即可更新部分数据。 属于原生 JS 范畴 ,技术核心是 XMLHttpRequest 对象。 AJAX 请求过程:创建 XMLHttpRequest 对象、连接服务器、发送请…

持续上新丨美格智能推出高算力AI模组SNM930,支持运行Linux Ubuntu

近日,美格智能宣布推出最新的高算力AI模组SNM930。该模组基于高端SoC高通QCS6490平台研发设计,支持WiFi 6E和蓝牙5.2连接,AI算力高达14Tops,是行业首款除支持Android外,还可以运行 Linux Ubuntu的智能模组,…

k8s常见的资源对象使用

目录 一、kubernetes内置资源对象 1.1、kubernetes内置资源对象介绍 1.2、kubernetes资源对象操作命令 二、job与cronjob计划任务 2.1、job计划任务 2.2、cronjob计划任务 三、RC/RS副本控制器 3.1、RC副本控制器 3.2、RS副本控制器 3.3、RS更新pod 四、Deployment副…

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块7

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

js路由跳转时放弃正在pending的请求

在单页面应用中通常会对请求进行catch处理,如果用户打开a页面后页面发出了一个请求去获取aaa,但是由于某种原因请求一直在pending。此时用户又进入了b页面,在浏览时a页面的请求失败了,然后页面弹出提示:“数据aaa请求失…

pearcmd.php文件包含妙用

文章目录 pearcmd.php文件包含妙用利用条件原理利用config-createinstalldownload pearcmd关键词被ban参考 pearcmd.php文件包含妙用 利用条件 php.ini中register_argc_argvOn开启安装pecl/pear pecl是PHP中用于管理扩展而使用的命令行工具,而pear是pecl依赖的类…

【stable diffusion】保姆级入门课程05-Stable diffusion(SD)图生图-涂鸦重绘的用法

1.什么是涂鸦重绘 涂鸦重绘又称手涂蒙版。 简单来说,局部重绘手涂蒙版 就是涂鸦局部重绘的结合体,这个功能的出现是为了解决用户不想改变整张图片的情况下,对多个元素进行修改。 功能支持: 1.支持蒙版功能 2.笔刷决定绘制的元素…

如何在win10环境下配置强化学习gym库(使用vscode)

我是通过anacondavscode完成的gym库的使用,只是把案例跑起来了,具体步骤如下: 1、安装anaconda,参考链接:https://www.jianshu.com/p/2f3be7781451 我其实就是生安装的,也没有去配置环境啥的,就是下载安…

贪心算法重点内容

贪心算法重点内容 4.1部分背包 按照单位重量的价值排序 4.2最小生成树 两种算法 4.3单源最短路径 4.4哈夫曼树

Vector3.Dot

如图:cube在cube(2)的前方、 public class DotTest : MonoBehaviour {public GameObject a;public GameObject b;// Start is called before the first frame updatevoid Start(){var vVector3.Dot(a.transform.forward,b.transform.position…

丑数 II 力扣(动态规划)JAVA

给你一个整数 n ,请你找出并返回第 n 个 丑数 。 丑数 就是只包含质因数 2、3 和/或 5 的正整数。 示例 1: 输入:n 10 输出:12 解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。 示例 2&#xff…

MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明

文章目录 前言 一 MySQL数据库 1.1 什么是数据库? 1.2 RDBMS 术语 1.3 DBMS解释 1.4 数据库分类 1.5 MySQL现状 二 在Linux/UNIX 上安装 MySQL 2.1 安装 MySQL 2.2 验证 MySQL 安装 2.3 使用 MySQL Client(Mysql客户端) 执行简单的SQL命令 2.4 Mysql安装…

153、仿真-基于51单片机四相步进电机正反转控制系统设计(程序+Proteus仿真+参考论文+流程图+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、设计功能 二、Proteus仿真图​ 三、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一:ST…

代码随想录算法训练营一刷总结

第一次系统地刷leetcode 经过两个多月终于一刷完结 虽然不是按部就班每天都写 但总算坚持下来了 夸夸自己!! 非常感谢卡哥 题目的解析都写的很清楚易懂 才让我能够坚持这么一题一题做下来 没有卡住不前 训练营的学习氛围让我感受到很多小伙伴在和我一起…

服务器数据库中了Locked勒索病毒,企业应该如何正确处理并采取后续防护措施

网络技术的发展极大地方便了人们的工作生活,但同样带来了一定的网络安全威胁,其中较为危险的威胁就是勒索病毒攻击,勒索病毒不仅会给我们的计算机系统带来破坏,还会加密我们的重要文件数据来敲诈勒索,只有用户支付的赎…

灾备基础学习

灾备 灾备:灾备是容灾和备份的简称,它是利用科学的技术手段和方法,提前建立系统化的数据应急方式,以应对灾难的发生。其内容包括:数据备份、系统备份、业务连续规划、人员架构、通信保障、危机公关、灾难恢复规划、灾…

ES6基础知识五:你是怎么理解ES6新增Set、Map两种数据结构的?

如果要用一句来描述,我们可以说 Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构 什么是集合?什么又是字典? 集合 是由一堆无序的、相关联的,且不重复的内存结构【数学中称为元素】组成的组合 字典 是…

unity的asmdef报错GUID(这个报错记得重现一下,报错信息作为标题记录一下)

这应该是unity给这个程序集分配的guid unity基于2020开发的科骏插件1.0.8,放到了2017.首先出现的这个报错。 解决方法是将这个asmdef删除。asmdef简单来说是 库的描述信息文件。相关参考 初步理解Unity的asmdef 删掉就没分库直接所有源码在工程。简单来说就是编译…

深度学习:Pytorch最全面学习率调整策略lr_scheduler

深度学习:Pytorch最全面学习率调整策略lr_scheduler lr_scheduler.LambdaLRlr_scheduler.MultiplicativeLRlr_scheduler.StepLRlr_scheduler.MultiStepLRlr_scheduler.ConstantLRlr_scheduler.LinearLRlr_scheduler.ExponentialLRlr_scheduler.PolynomialLRlr_sched…