What You Corrupt Is Not What You Crash Challenges in Fuzzing Embedded Devices 总结笔记

[[What You Corrupt Is Not What You Crash Challenges in Fuzzing Embedded Devices]]
参考:浅谈固件Fuzz_黑客技术 (hackdig.com)

嵌入式设备分类

  1. 基于 Linux OS 的嵌入式设备:对于初次接触固件漏洞挖掘的读者往往接触的都是这类嵌入式设备,如大部分的摄像头、路由器。
  2. 自定义操作系统的嵌入式设备:可能不存在内存管理单元(MMU),不过内核和用户层仍然存在逻辑分离。
  3. 没有抽象操作系统的嵌入式设备:编译后的代码系统空间和用户空间是混在一起的,不存在内核与用户层的逻辑分离。
    1. 参考的博客给出了这样一个观点:对这种类型的设备进行 fuzz 似乎本来就比较少见,因为该种类型的设备代码量一般较小,只用逆向说不定都可以还原。

对嵌入式设备 fuzz 的难点

  1. 错误检测:嵌入式设备的防御机制少,即使触发了漏洞,但是系统没有崩溃,fuzz 器就得不到反馈,就以为没有触发漏洞。
  2. 性能和可扩展性:难以并行,每轮都要重启设备
  3. 插桩

后续作者针对错误检测这一个问题,将嵌入式设备分为三类进行测试,将它们的反应分为了 6 种情况。![[What You Corrupt Is Not What You Crash Challenges in Fuzzing Embedded Devices#Observed Behavior]]

启发式方法加强错误检测

  1. 段追踪
  2. 格式说明符跟踪
  3. 堆对象追踪
  4. 调用栈追踪
  5. 调用帧追踪
  6. 栈对象追踪

针对嵌入式设备 fuzz 问题的一些方法

(作者原文中对每种方法都给出了需要的工具和资源)

  1. 静态插桩
  2. 二进制重写
  3. 物理重托管
  4. 全仿真
  5. 部分仿真
  6. 硬件支持的插桩

启示

这篇文章的主要工作在于两部分

  1. 针对嵌入式设备缺乏错误检测机制的实验论证和解决方案
  2. 嵌入式设备 fuzzing 的现状综述

我觉得第一部分就是这篇文章的亮点,切入点很好。其次这篇文章相对于其他开发一套 fuzz 框架,或者提出某种方法的论文学术意味更强,因为工作量主要在实验上,文章最后的启发式发方法更像是展望,而不是一个具体的成果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值