纵观近百年来汽车制造业的发展历程,产业跨进的每一步背后都有着技术创新作为支撑。汽车技术创新对世界经济、社会发展、人们的生产生活方式产生了极其深远的影响。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,传输控制协议/网际协议)通信的产品提供强大的测试支持。

开发者可以通过Fuzz测试重现安全攻击并理解产品的协议结构,从而判断协议的哪些部分更容易受到攻击,并采取更好的解决措施。当前阶段,Fuzz测试无疑是解决汽车自动驾驶安全问题必要且有效的测试方案。

参考链接:

1、https://blog.beyondsecurity.com/start-using-fuzzing-to-improve-autonomous-vehicle-security/

2、http://www.199it.com/archives/1192606.html

Fuzz测试:提升自动驾驶安全性相关推荐

  1. 测试归测试,自动驾驶向个人全面开放依然长路漫漫

    来源:网易智能 摘要在北京某地,乘客们正等待着乘坐百度"阿波罗"无人驾驶汽车.最近,百度与福特汽车启动了为期两年的L4级别自动驾驶联合测试项目,在特定的地理区域和特定天气条件下行驶 ...

  2. 外媒:苹果聘请更多司机在加州测试其自动驾驶汽车

    9月14日消息,据国外媒体报道,苹果公司继续扩大加州的自动驾驶汽车测试司机队伍.据报道,该公司最近聘请了更多司机在加州测试其自动驾驶汽车. 今年5月,苹果公司将加州的自动驾驶测试车队削减至54辆.此后 ...

  3. 谍照曝光!特斯拉正在测试完全自动驾驶

    Root 编译自 Inverse 量子位 出品 | 公众号 QbitAI 外媒Electrek昨天在推上逮到了一个用户泄露的特斯拉内测车的谍照↓ △ 该用户随后马上删掉了,结果手速还是不够Electr ...

  4. 安全与道路测试:自动驾驶系统安全性探究

    随着自动驾驶技术的迅速发展,如何确保自动驾驶系统的安全性已成为业界关注的焦点.本文将探讨自动驾驶系统的潜在风险.安全设计原则和道路测试要求. 潜在风险 自动驾驶系统在改善交通安全和提高出行效率方面具有 ...

  5. DeepMind助力Waymo!提升自动驾驶AI准确率,还能加快模型训练

    鱼羊 发自 凹非寺  量子位 报道 | 公众号 QbitAI 在自动驾驶领域,谷歌Waymo无疑是标杆一样的存在. 现实世界中,Waymo已经行驶了1000多万英里(约1600万公里),而在模拟驾驶中 ...

  6. 马斯克召集百名员工测试完全自动驾驶,1.3万美元大优惠!先到先得

    乾明 发自 凹非寺  量子位 报道 | 公众号 QbitAI 怎么快速提高公司的自动驾驶能力? 让员工自己去测试啊. 听起来可能有点匪夷所思,但正在大洋彼岸的特斯拉上演. 召集员工测试 就在马斯克与美 ...

  7. 智能驾驶视觉传感器测试:自动驾驶车辆如何进行传感器标定?

    为什么要进行标定? 一辆自动驾驶车辆会安装多个传感器,需要通过传感器标定来确定相互之间的坐标关系,从而将多个传感器数据整合为"一个传感器".因此,准确的传感器标定是实现智能车辆多传 ...

  8. 基于ISO 21448和STPA方法的自动驾驶安全性和可靠性设计

    摘要 目前,电控系统在汽车中的应用越来越多.这极大地增加了车辆设计的复杂性,并导致系统的故障增加,由于故障引起的安全问题正在成为一个新的挑战.基于与电气/电子/可编程电子产品的功能安全相关的IEC 6 ...

  9. “重感知·轻地图”重新定义自动驾驶

    / 导读 / 人类无人驾驶百年追梦,本是为了更加安全,用无人驾驶功能实现智能代驾,以减少道路交通伤亡率.今天,无人驾驶赛道被赋予了新的内涵:无人驾驶技术的意义不仅在于全社会生产力的跨越,更能让人们的消 ...

最新文章

  1. WebView 上传文件 WebChromeClient之openFileChooser函数
  2. App启动闪屏黑屏问题
  3. BAC--Downtime 凌晨时段设定
  4. 职业生涯:怎么样学好Oracle
  5. openssl与cryptoAPI交互AES加密解密
  6. 5-(基础入门篇)学会刷Wi-Fi模块固件(刷LUA版本固件)
  7. CF594D. REQ
  8. 2.2基本算法之递归和自调用函数_一文学会递归解题
  9. openstack 教程_OpenStack的新提示,技巧和教程
  10. Velocity教程 (zhuan)
  11. 小程序获取openid保存缓存吗_小程序获取openid踩坑
  12. python的十大算法_Python十大排序算法
  13. [编写高质量代码:改善java程序的151个建议]建议66 asList方法产生的List对象不可更改...
  14. SPSS——非参数检验——1-Sample K-S 单个样本(Kolmogorov-Smirnov)柯尔莫哥洛夫-斯米诺夫检验
  15. python正则查找_python正则匹配
  16. JAVA--计算长方体、四棱锥的表面积和体积
  17. 8.4 单片机按键介绍
  18. MSXML的不同版本使用
  19. h5底部输入框被键盘遮挡_搜遍整个谷歌, 只有我是在认真解决安卓端hybrid app键盘遮挡输入框的问题...
  20. 一道题讲懂SQL盲注 / [第一章 web入门]SQL注入-2

热门文章

  1. IDEA tomcat热部署
  2. System.err System.out 同步 输出顺序
  3. 绘制西北太平洋台风频数分布填色图
  4. python驱动工具: ddt
  5. XML格式文件详解及Java解析XML文件内容方法
  6. 算法导论——A*算法易懂的证明
  7. SMTP、POP3和IMAP邮件协议
  8. RouterOS(ROS)软路由PPPOE拨号上网配置指南(附授权镜像下载)
  9. 基于QtAv及ffmpeg开发的视频播放器
  10. 《MATLAB 入门之旅》知识点总结