白泽带你读论文 | DriveFuzz

admin 2023年3月3日18:30:24评论21 views字数 3694阅读12分18秒阅读模式


如需转载请注明出处,侵权必究。


本文发表于CCS 22,第一作者是来自佐治亚理工学院的Seulbae Kim博士。

论文提出了一个将自动驾驶系统(ADS)作为整体进行模糊测试的框架——DriveFuzz,它不关注ADS中单层的细节,而是关注在驾驶环境中不断变化的车辆状态。DriveFuzz通过变换多种因素自动生成驾驶场景,在驾驶模拟器上进行测试,同时依据基于交通规则的测试标准来检测错误行为,通过驾驶质量分数引导fuzzer触发错误行为,进而发现ADS存在的bug。从实验结果来看,DriveFuzz在Autoware和Behavior Agent这两个ADS以及CARLA模拟器中共发现了30个新bug。

背景

现有工作大多关注ADS单个层中的bug,虽然这些工作大大提高了单个层的安全性,但是由于ADS系统具有多层结构,不同的层以级联方式协同工作,针对某一层的单独测试可能无法检测到某些bug。例如,某一层的bug在单独测试时不会造成可见的影响,但会引起其他层的不当行为。只有将所有层作为一个整体进行测试,才能检测到此类bug。
白泽带你读论文 | DriveFuzz
上图展示了通用的ADS框架,包括sensing, perception, planning, actuation四层结构,这些层以级联的方式一起工作,即每一层从前一层获取输入,产生的输出被下一层消耗。每一层的功能如下:
sensing:使用各种传感器获取周围环境的原始数据;
perception:融合捕获的传感器数据,以理解当前的位置和车辆周围的环境;
planning:根据感知到的状态,为给定的地图和目的地制定路径规划;
actuation:根据路径规划,建立一个具体的运动计划,包括方向盘角度、速度等,并将相应指令发送给车辆实现自动驾驶。

挑战

设计一个针对ADS整体的反馈引导的模糊测试框架需要解决以下三个挑战:
1. 测试ADS的输入是什么?
2. 如何确定系统触发了bug?
3. 用什么作为反馈引导的指标?

系统架构设计

下图是DriveFuzz的概述,下面将对该框架的工作流程和主要模块进行介绍。
白泽带你读论文 | DriveFuzz

工作流程

根据提供的输入驾驶场景,Mutation engine生成并变异与任务、天气、参与者、水坑相关的各个方面。Test executor启动待测试的ADS,协调驾驶模拟器,为突变的驾驶场景做准备,并将任务分配给ego车。当ego车执行任务时,Misbehavior detector利用交通法规来检测错误行为。如果ego车在没有任何错误行为的情况下完成了任务,那么Driving quality feedback engine将通过分析车辆状态来量化整体驾驶质量,从而引导进一步的突变,产生驾驶质量降低的场景。

Mutation engine

输入的驾驶场景包括一个预定义的3D地图、一个由起始位置和目标位置定义的任务、其他车辆与行人组成的参与者、无形水坑和天气条件。Mutation engine通过突变任务、参与者、水坑和天气,模拟真实世界中可能出现的场景。具体来讲,通过在给定地图上随机选择初始点和目标点产生任务;通过随机选择参与者的类型、初始位置和目的地、导航方法、目标速度和轨迹产生参与者;通过随机选择位置、大小和摩擦力产生水坑;通过改变雨、云、风、雾、湿度、水坑、太阳方位角和太阳高度八个方面产生天气条件。
同时,作者提出了以下几种变异策略,它们既可以单独使用,也可以在每一轮fuzzing结束后进行更换。
1. Adversarial maneuver-based:只引入并改变相邻参与者的移动,迫使与目标系统交互,例如,参与者车辆突然通过切换车道拦截ego车。
2. Congestion-based:只引入自动驾驶的参与者,使目标ADS在越来越拥挤但合法的情况下驱动。
3. Entropy-based:只引入一个线性或不移动的参与者,测试目标系统在鲁莽司机和非法行人周围安全驾驶的能力。
4. Instability-based:只插入一个不同大小和摩擦的水坑,测试运动控制器的鲁棒性。

Test executor

Test executor利用驾驶模拟器,在给定的驾驶场景下运行目标ADS,同时为模糊过程收集各种车辆状态。

Misbehavior detector

Misbehavior detector根据现实世界的交通法规检测自动驾驶过程中存在的错误行为,具体包括以下几种事件:碰撞、违规行为(包括超速、车道入侵、闯红灯)、非法停车。在检测到错误行为后,将生成bug报告,并在记录所有的车辆状态以进行后续检查后立即终止模拟过程。

Driving quality feedback engine

如果没有检测到错误行为,Driving quality feedback engine会对本次模拟的驾驶质量进行打分。作者参考了美国国家公路交通安全管理局运输部调查交通事故原因的报告和汽车保险公司的数据,确定了引发交通事故的几种主要的鲁莽驾驶行为,具体包括硬加速、硬刹车、硬转弯、转向过度和转向不足。DriveFuzz基于这些行为出现的次数,以及与其他参与者的最小距离来衡量驾驶质量。驾驶质量分数会作为反馈提供给Mutation engine,以引导下次突变产生更容易导致错误行为的输入场景。

实验评估

漏洞挖掘能力

DriveFuzz共发现了34个bug,其中,在Autoware中发现了17个新bug和1个已知问题;在Behavior Agent中发现了13个bug;在CARLA中检测到3个模拟器错误。下图展示了DriveFuzz发现的所有新bug、它们所在的组件、每个错误的影响和根本原因。作者对这些bug进行了深入分析,根据bug产生的根本原因将其分为四类:ADS跨层错误、ADS逻辑错误、ADS功能缺失、模拟器错误。
白泽带你读论文 | DriveFuzz

对比最先进的测试方法

作者从定量和定性两个角度分析了DriveFuzz在漏洞发掘方面的能力优于最先进的ADS测试方法——AV-Fuzzer。首先,从定量角度分析,AV-Fuzzer的输入空间是DriveFuzz的一个子集,覆盖的输入场景数量远不如DriveFuzz;而且,AV-fuzzer只能检测碰撞,DriveFuzz还可以检测违反交规的行为。其次,从定性角度分析,DriveFuzz提供的反馈质量高于AV-Fuzzer,DriveFuzz考虑了车辆的物理状态,提供对鲁莽行为的细粒度反馈,而AV-Fuzzer只关注了车辆互相接近的情况,没考虑车辆的物理状态。

驾驶质量评估的正确性与有效性

在相同条件下运行具有驾驶质量反馈和没有驾驶质量反馈的两种fuzzer,结果如下图,具有驾驶质量反馈的fuzzer在相同时间内能够发现更多错误行为,证明了驾驶质量反馈的有效性。

白泽带你读论文 | DriveFuzz

总结

本文提出了一个端到端的模糊框架,它将ADS的所有层作为整体进行测试,并提出了驾驶质量的概念以引导fuzzer的突变,从而检测ADS所有层中容易被攻击者利用的bug。从实验结果来看,DriveFuzz发现了两个ADS中的30个新漏洞以及CARLA模拟器中的3个漏洞,证明了该工具在漏洞挖掘方面的有效性,为提高ADS的整体安全性做出了贡献。

Q&A

Q1. 突变过程中施加的约束及目的是什么?

包括空间约束和时间约束,它们的目的是排除不切实际的场景,避免其引发错误行为导致的假阳性。具体来讲,空间约束通过规定不同参与者之间的最小距离实现,时间约束通过规定参与者的最大速度实现。

Q2. 为什么用驾驶质量作为反馈,而不用传统的代码覆盖度作反馈?

因为代码覆盖度主要应用于软件模糊测试,在这一场景下,代码覆盖度的提高确实能帮助发现更多的bug,而对ADS的模糊测试,目的是发现由bug引发的错误行为,错误行为不依赖于代码覆盖度,而是与驾驶过程中的鲁莽行为密切相关。驾驶质量综合考虑了几种容易引发事故的鲁莽行为,用其作反馈可以生成更容易触发错误行为的输入,有助于发现更多bug

Q3. 驾驶质量反馈机制的主要贡献是什么?

  1. 1.     使用车辆的物理状态,可以量化驾驶过程中的鲁莽行为,而不需要代码分析。

  2. 2.     提供了细粒度的反馈机制,为驾驶场景的生成提供了有效的指导,有利于检测到实际的错误行为。


Q4. 如何识别错误行为的根本原因?

通过重放触发错误行为的数据进行组件级的数据流和控制流分析,具体包括分析sensing层是否准确地读取了环境信息、perception层是否正确解释了传感器捕获的数据、planning层是否找到了一条可行的路径、actuation层是否发出了恰当的控制命令。

Q5. 本文工作存在哪些不足?

  1. 1.     反馈驱动的fuzzer存在局部最优问题,可能导致遗漏了与feedback关系较小的其他潜在错误。

  2. 2.     可能存在不影响驾驶质量评分,但仍会导致错误行为的攻击。比如攻击者在一条直道上伪造一个弯曲车道,并引导车辆行驶在这条虚假车道上,车辆的驾驶质量评分很好,但会导致车道入侵等错误行为。

文案:刘智晨

排版:LC

戳“阅读原文”即可查看论文原文哦~


复旦白泽战队
一个有情怀的安全团队




原文始发于微信公众号(复旦白泽战队):白泽带你读论文 | DriveFuzz

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月3日18:30:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   白泽带你读论文 | DriveFuzzhttp://cn-sec.com/archives/1586288.html

发表评论

匿名网友 填写信息