编辑
2025-11-08
Paper
00
请注意,本文编写于 33 天前,最后修改于 33 天前,其中某些信息可能已经过时。

目录

Structure-Aware, Diagnosis-Guided ECU Firmware Fuzzing
作者
背景知识
整体框架
SPI种子生成
结构化变异策略
CAN种子生成

🤒

Structure-Aware, Diagnosis-Guided ECU Firmware Fuzzing

作者

背景知识

  • ECU: Electronic Control Unit,主要负责车上具体功能控制
    • ECU通过Transceiver链接到其他ECU,Transceiver负责将差分信号转换成为数字信号
    • 专用集成电路(ASIC,Application Specific Integrated Circuit)负责处理和调节各种输入信号并转发给MCU,同时集成电源管理、系统监控、唤醒逻辑等支持功能为ECU操作提供支持
  • AUTOSAR框架:AUtomotive Open System ARchitecture,提供标准化软件框架
    • 应用层:包含实现ECU核心功能的软件组件(SWC,SoftWare Components)
    • 运行时环境层(RTE,RunTime Environment):负责SWC和BSW之间的通信
    • 基础软件层(BSW,Basic SoftwareWare):提供内存管理、诊断和通信接口等基本服务

  • SPI总线:Serial Peripheral Interface,串行外设接口,常用于MCU和外设之间的短距离通信;一次传输32位数据;大端序传输;

    • 全双工通信;主从配置运行;通常MCU为主设备;使用四根信号线进行通信
      • 主从输出从输入(MOSI):数据从主设备向从设备传输
      • 主从输入从输出(MOSO):数据从从设备向主设备传输
      • 芯片选择(CS):用于选择和启用目标从设备
      • 串行时钟(SCK):同步主从设备之间的时钟
    • 存在两种常见的传输方式
      • In-Frame Communication:帧内传输方式,主设备发起通信,从设备在同一个传输周期内做出响应
      • Out-Frame Communication:帧外传输方式,主设备发起通信,从设备在下一个传输周期做出响应
  • MCU与ASIC的通信:首先MCU对ASIC的设备通道、阈值、看门狗进行配置并进行状态检查。而后进行阈值需求检查,通过比较传感器值与配置的阈值来验证ASIC的功能完整性。安全关键功能必须通过此测试才能正常运行

整体框架

大致分为两条主线

  1. 初始记录的SPI -> 转化成为CAN序列 -> 输入到模拟外设中 -> 转化成为SPI -> 输入到MCU中
  2. 初始记录的CAN -> 输入到MCU中

Q1: 为什么要将SPI输入到模拟外设中转一圈?

Q2: 大多数车的CAN来说都是黑盒的,直接输入到MCU中意义何在?

SPI种子生成

ECU遵循固定的上电序列,所以使用逻辑分析仪来抓取MCU和ASIC之间从ECU上电到初始化阶段最后到运行阶段的完整SPI通信

对于捕捉到的每个SPI报文,将其整理为图中的格式L=<t,cs,mout,min>L=<t,cs,m_{out},m_{in}>,其中tt为时间戳,cscs为片选信号,moutm_{out}为MOSI信号,minm_{in}为MOSO信号

针对每组LL,对其进行解析为元组I=<inst,{fmosi1,...,fmosin},{pmosi1,...,pmosin},{fmiso1,...,fmison},{pmiso1,...,pmison},{rmiso1,...,rmisok}>I=<inst,\{{f^1_{mosi},...,f^n_{mosi}\}},\{{p^1_{mosi},...,p^n_{mosi}}\},\{{f^1_{miso},...,f^n_{miso}\}},\{{p^1_{miso},...,p^n_{miso}}\},\{{r^1_{miso},...,r^k_{miso}\}}> ,其中instinst表示MOSI的instruction_id,fmosinf^n_{mosi}表示MOSI中第n个字段的名称,pmosinp^n_{mosi}表示MOSI中第n个字段所在的bit,rmosikr^k_{mosi}表示第k个MOSI中字段的值域,在变异过程中仅变异MISO

结构化变异策略

对于每一个II,都提供一个变异元组M=<I,{Omiso1,...,Omisok}>M=<I,\{{O^1_{miso},...,O^k_{miso}}\}>,其中OmisokO^k_{miso}代表对于MISO中第k个字段的变异算子

  • AFL标准变异算子:位翻转
  • 边缘情况变异算子:生成正好在rmisokr^k_{miso}之外的值
  • 约束范围内变异算子:生成在rmisokr^k_{miso}之内的值

在变异之后重新计算CRC的值,防止CRC校验失败

CAN种子生成

从CAN DBC中构造

都有了CAN DBC相当于拥有了私有CAN的定义,这玩意怎么获取的?

本文作者:Du4t

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!