相关论文

方案

2013

Fie on firmware: Finding vulnerabilities in embedded systems using symbolic execution, USENIX 2013

  • 方案:Fie
  • 技术:符号执行,静态分析,基于C源码,KLEE,基于MSP430系列微控制器
  • 点评:对于某些固件,完整的分析是难以处理的,分析中的各种不精确来源可能会导致误报或漏报。改进符号执行技术来适应固件特定的功能。结果表明Fie可以发现许多内存错误。FIE anticipates and describes the peripherals symbolically using symbolic execution。使用符号执行符号化的描述外围设备?
  • 资源:https://www.usenix.org/conference/usenixsecurity13/technical-sessions/paper/davidson

2014

A Large-scale Analysis of the Security of Embedded Firmwares, USENIX 2014

  • 技术:静态分析(其实没有进行任何静态代码分析,只是简单的通过关键字等进行分析),基于解包后的文件
  • 点评:一项大规模的嵌入式设备固件安全分析。自动识别固件发行版中漏洞,解包为可分析的组件,分析所有组件。比较文件和模块。
  • 资源:https://www.usenix.org/conference/usenixsecurity14/technical-sessions/presentation/costin
  • 五个挑战:构建代表性的数据集;正确识别单个固件镜像;解压自定义的存档格式;限制所需的计算资源;自动的分析方法。

Avatar: A framework to support dynamic security analysis of embedded systems’ firmwares, NDSS 2014

  • 方案:Avatar
  • 技术:半模拟,动态分析,符号执行,施加了强假设或依赖调试端口,白盒模糊测试
  • 点评:一个框架,通过将固件仿真与真实硬件一起编排,可以对嵌入式设备进行复杂的动态分析。指令在模拟器执行,外围设备IO被转发到真是设备,允许研究者应用高级动态分析技术,如跟踪,污染,符号执行等。
  • 资源:https://www.ndss-symposium.org/ndss2014/programme/avatar-framework-support-dynamic-security-analysis-embedded-systems-firmwares/

2015

Firmalice-Automatic Detection of Authentication Bypass Vulnerabilities in Binary Firmware, NDSS 2015

  • 方案:Firmalice(和angr有啥关系???)
  • 技术:静态分析,单独分析,黑盒,二进制,基于符号执行和程序切片
  • 点评:提供了一个框架,用于检测基于符号执行和程序切片的二进制固件中的身份验证绕过漏洞(后门)。 然而,它受到约束求解器的压倒性影响。一个通用模型来描述二进制固件中的后门,并结合动态符号执行来识别它们。先使用静态分析提取数据依赖图,然后提取从入口点到手动确定的特权操作位置的程序切片,应用符号执行引擎找到可能成功的路径。支持多个架构。
  • 资源:https://www.ndss-symposium.org/ndss2015/ndss-2015-programme/firmalice-automatic-detection-authentication-bypass-vulnerabilities-binary-firmware/

2016

Towards Automated Dynamic Analysis for Linux-based Embedded Firmware, NDSS 2016

  • 方案:FIRMADYNE
  • 技术:动态分析,基于固件模拟,全模拟,分析所有组件
  • 点评:依靠基于软件的完整系统仿真和检测内核来实现自动分析数千个固件二进制文件所需的可扩展性。FIRMADYNE 实施了一种自动化方法来评估大量嵌入式设备固件映像中新发现的安全漏洞的普遍性。自动化方法只是运行已知的漏洞利用作为 Metasploit 模块和他们自己的概念验证 (PoC) 来手动发现漏洞。尽管运行一组预定义的漏洞利用有助于发现已知漏洞,但它不能有效地发现新漏洞,因为同一漏洞在不同类别的设备和供应商中调用不同漏洞的可能性很低。
  • 资源:https://www.researchgate.net/publication/316904631_Towards_Automated_Dynamic_Analysis_for_Linux-based_Embedded_Firmware

Automated dynamic firmware analysis at scale: A case study on embedded web interfaces, ACM ASIACCS 2016

  • 技术:基于全模拟,静态和动态分析工具(应用级别模拟qemu),强假设,分析所有组件
  • 点评:用于发现嵌入式固件web中的漏洞。任何给定的功能通常都依赖于多个程序的执行,分析所有组件。提供了一个混合静态分析和仿真来分析嵌入式 Web 界面的框架。 然而,他们的技术不是通用的,不能检测以前未知的内存损坏漏洞,并且依赖于各种启发式模拟。

技术改进

  1. Driller: Augmenting Fuzzing Through Selective Symbolic Execution, NDSS 2016
  • 方案:Driller
  • 技术:模糊测试和选择性混合执行(符号执行),避免了模糊测试的不完整和混合分析中的路径爆炸,单个模块或二进制
  • 点评:严格来说不算固件漏洞挖掘,改进了软件漏洞挖掘方法。只关注一个程序或模块的程序分析,关注内存破坏漏洞。在AFL的基础上加入了动态符号执行引擎

Scalable graph-based bug search for firmware images, ACM CCS 2016

  • 方案:Genius
  • 技术:基于代码分析;基于模式匹配(代码相似性)的静态分析方法
  • 点评:将CFG转换为高级数字特征向量,对跨架构的代码鲁棒性更强

2017

BootStomp: On the Security of Bootloaders in Mobile Devices, USENIX 2017

  • 方案:BootStomp
  • 技术:单独分析,污点分析,多标签的污点追踪,KARONTE基于这个做的,静态分析
  • 点评:探讨移动引导加载程序设计和实现中的漏洞,静态分析和动态符号执行的新颖组合产生的多标签污点分析

2018

IoTFuzzer: Discovering Memory Corruptions in IoT Through App-based Fuzzing, NDSS 2018

  • 方案:IoTFuzzer
  • 技术:动态分析,基于生成的模糊测试,只关注面向网络的二进制文件,黑盒fuzz,通过配套app指导fuzz
  • 点评:通过应用程序来指导fuzz,会遗漏其他组件中包含的错误。IoTFuzzer 缺乏对生成输入质量的了解,导致对低质量输入的资源浪费。分析 Android 应用程序以检测物联网设备中与内存相关的漏洞。 IoTFuzzer 采用基于污点的方法并改变用于生成协议消息的数据流。因此,IoTFuzzer 不需要协议模板。通过改变应用程序中的数据流,IoTFuzzer 跳过了协议分析。此外,变异策略不仅可以触发内存损坏,还可以触发逻辑损坏。由于设备监控困难,使用IoTFuzzer来发现明显的固件崩溃。

DTaint: Detecting the Taint-style Vulnerability in Embedded Device Firmware, IEEE DSN 2018

  • 方案:DTaint
  • 技术:静态二进制分析,污点追踪
  • 点评:第一个提出不依赖于源码或模拟固件运行的;专注于recv等类似函数生成的数据,但忽略了前端文件的语义。

2019

SRFuzzer: an automatic fuzzing framework for physical SOHO router devices to discover multi-type vulnerabilities, ACSAC 2019

  • 方案:SRFuzzer
  • 技术:动态分析,模糊测试,对web输入语义进行建模

FirmFuzz: Automated IoT Firmware Introspection and Analysis, IEEE IoT S&P 2019

  • 方案:FirmFuzz
  • 技术:动态分析,基于输入生成的模糊测试,
  • 点评:FirmFuzz 通过 Web 界面检测物联网设备漏洞。它是一种用于语法合法输入生成的分代模糊器,它利用静态分析来帮助对仿真固件图像进行模糊测试,同时监控固件运行时间。 FirmFuzz 通过收集可触发漏洞的有效载荷来改变通信消息。但是,它没有考虑变异策略,因此检测到漏洞的机会相对较低。

FIRM-AFL: High-Throughput Greybox Fuzzing of IoT Firmware via Augmented Process Emulation, USENIX 2019

  • 方案:FIRM-AFL
  • 技术:动态分析,基于变异的fuzz,结合了AFL和Firmadyne
  • 点评:一种基于变异的物联网固件灰盒模糊测试平台。 Firm-AFL 采用增强过程仿真来最小化每次模糊迭代的开销。它通过在用户模式模拟器中运行目标程序并在目标程序调用具有特定硬件依赖性的系统调用时切换到全系统模拟器来实现高吞吐量模糊测试。这项工作解决了性能瓶颈。但是,Firm-AFL 侧重于单个程序的覆盖范围,并没有考虑沟通过程。单一程序覆盖范围的增加使得程序间漏洞难以触发。
  • 资源:Firm-AFL:高效的IoT固件灰盒fuzz - 看雪学院

2020

KARONTE: Detecting Insecure Multi-binary Interactions in Embedded Firmware, IEEE S&P 2020

  • 方案:KARONTE
  • 技术:静态分析,关联考虑跨二进制
  • 点评:关注跨二进制,后端,忽略了前端可能会漏报。 Web 服务器和二进制文件之间的通用进程间通信 (IPC) 范式作为分析的起点。然而,大量的IPC接口带来了大量的过度分析,从而导致许多误报。

P2IM: Scalable and hardware-independent firmware testing via automatic peripheral interface modeling

  • 方案:P2IM
  • 技术:动态分析,固件模拟,模糊测试
  • 点评:实现独立于硬件和可扩展的固件测试。抽象了各种外设,并基于自动生成的模型动态处理固件 I/O。 P2IM 无视外设设计和固件实现的通用性,因此适用于各种嵌入式设备。

技术改进

  1. GREYONE: Data Flow Sensitive Fuzzing, USENIX 2020
  • 方案:GREYONE
  • 技术:使用污点分析更好的利用数据流来指导fuzz,基于静态代码检测
  • 点评:严格来说不算固件漏洞挖掘,改进了模糊测试。一种模糊测试驱动的污点推理解决方案 FTI,用于获取更多污点属性以及输入偏移和分支之间的精确关系。根据FTI提供的污点分析结果来确定要突变的字节和要探索的分支的优先级及如何突变。GREYONE补充了数据流特征来调整fuzzing的方向,使用另一种基于数据流特征的约束一致性,即污染变量与未接触分支中期望值的距离,向种子队列中添加一致性更高的测试用例从而提升突变效率。
  • 资源:https://blog.csdn.net/Eastmount/article/details/107825286,https://blog.csdn.net/zhang14916/article/details/102802713
  1. Neutaint: Efficient Dynamic Taint Analysis with Neural Networks, IEEE S&P 2020
  • 方案:Neutaint
  • 技术:基于神经网络的高效动态污点分析
  • 点评:严格来说不算固件漏洞挖掘,改进了动态污点分析。使用神经程序嵌入来跟踪信息流,并利用符号执行生成高质量的训练数据以提高流覆盖率。然而,累积的错误和巨大的开销仍然是 Dynamic Taint Track 的一大挑战。

2021

Sharing More and Checking Less: Leveraging Common Input Keywords to Detect Bugs in Embedded Systems, USENIX 2021

  • 方案:SaTC
  • 技术:利用前后端共享关键字作为污点分析开始位置,降低符号执行复杂度
  • 点评:基于前后端共享关键字来指导漏洞挖掘

DIANE: Identifying Fuzzing Triggers in Apps to Generate Under-constrained Inputs for IoT Devices, IEEE S&P 2021

  • 方案:DIANE
  • 技术:利用静态+动态方法找到fuzzing triggers,利用fuzzing triggers生成输入对IoT设备做检测
  • 点评:通过使用网络流量和控制目标物联网设备的应用程序的混合分析来解决输入生成问题。与IoTFuzzer很像,在第二节说了IoTFuzzer的缺点
  • 资源:Gossip - DIANE笔记,雪溯 - 论文笔记

综述

Automatic Vulnerability Detection in Embedded Devices and Firmware: Survey and Layered Taxonomies, ACM Computing Surveys 2021

物联网固件安全缺陷检测研究进展, 信息安全学报 2021

嵌入式设备固件安全分析技术研究, 计算机学报 2021

物联网设备漏洞挖掘技术研究综述, 信息安全学报 2021

物联网设备软件安全综述, 广州大学学报 2019

对比

这部分记录一些文章中出现的各种方案对比的话术:

  • 受限于物联网生态碎片化问题,很难有统一、高效的动态分析方法
  • 静态分析主要基于语义相似性
  • 覆盖引导的模糊测试很难在真实设备上执行,因为它需要在对分析的固件进行模糊测试时跟踪到达的代码位置。可以使用硬件调试功能来执行这种跟踪,但不幸的是,它们通常在消费设备中被禁用
  • 静态分析比动态分析放缩性更好,因为无需访问物理设备
  • 动态解决方案无法保证覆盖所有程序状态,可能错过很多bug
  • 动态分析可以利用执行时的信息,
  • 数据流分析(例如,动态污点分析)被证明对指导模糊化是有用的。TaintScope[40]利用它来定位校验和。vuzzer[30]使用它来标识分支指令中使用的字节和值。angora[10]使用它来绘制与路径约束相关的输入字节的形状。这些解决方案利用污点来确定在哪里以及如何以不同的方式变异,并在一些应用程序中显示出良好的性能。

相关工作分类方法

karonte:按动态污点追踪;模糊测试;静态分析
fuzz相关的方法:基于变异的分析;基于生成的fuzz
前后端共享:动态分析;静态分析;污点追踪
一般的分类方法:静态分析,动态分析(模糊测试,动态污点分析,基于模拟),符号执行

基于固件的漏洞挖掘方法梳理相关推荐

  1. 施耐德NOE77101以太网模块固件逆向漏洞挖掘

    MIS 固件逆向漏洞挖掘 实验目的 选取任意一个路由器.摄像头或者其它智能设备的固件漏洞,对目标固件进行逆向工程和漏洞分析,剖析漏洞机理,找到漏洞利用方法,编写漏洞利用代码,展示漏洞利用效果,简述漏洞 ...

  2. 毕业设计-基于机器学习的软件漏洞挖掘方法

    目录 前言 课题背景和意义 实现技术思路 一.基于机器学习的软件漏洞挖掘流程 二.代码的表征形式 实现效果图样例 最后 前言

  3. SSRF原理以及漏洞挖掘方法

    转载自:http://www.freebuf.com/articles/web/20407.html 转载自:http://bobao.360.cn/learning/detail/240.html ...

  4. 银行系统 0day 漏洞挖掘与分析 方法研究——期刊读后心得

    读后心得 全文的总体概括 0day漏洞的重要性 0day挖掘方法和模型 0day 漏洞挖掘的未来展望 全文的总体概括 漏洞是网络攻防的武器,是力量提升的重要战略资源,而 0day 漏洞更是核武器,谁掌 ...

  5. 路由器漏洞挖掘(栈,危险函数,方法)

    MIPS32架构堆栈: 和x86 架构一样,都是由高地址向低地址增长,无EBP. 进入函数调用时,把栈指针(sp)向下移动n比特,这个大小为n比特的存储空间为此函数的stack Frame. 此后栈指 ...

  6. 漏洞 立即留言_漏洞挖掘小白入坑指南

    文章出处:FreeBuf 文章链接:http://www.freebuf.com/articles/neopoints/144967.html 写在前面的话在此之前,很多朋友都曾通过电子邮件在我直播的 ...

  7. 对目前物联网设备的漏洞挖掘技术的学习记录

    物联网设备漏洞挖掘技术 目前物联网设备的使用越来越普遍,而对应的漏洞攻击现象也越来越频繁,究其原因主要有两点: ① 物联网设备开发过程中, 在设计上忽略了安全性的考虑; ② 由于设备硬件资源受限, 难 ...

  8. c++ 界面交互影响处理代码执行速度_原创 | 某SCADA的远程代码执行漏洞挖掘与利用...

    作者 | 绿盟科技格物实验室 陈杰 前言 近年来网络安全形势日渐严峻,国内外都开始对工控安全越来越重视,而工控领域由于常年来对安全的忽视,导致暴露出数量惊人的严重安全漏洞,更为严重的是,相当一部分厂商 ...

  9. 二进制漏洞挖掘_漏洞挖掘的艺术-面向二进制的静态漏洞挖掘

    本文首发于"合天智汇"公众号 作者: 萌新 0 本文是本系列的第二篇,将对面向二进制程序的静态漏洞挖掘技术进行介绍与分析. 面向二进制程序的静态漏洞的挖掘技术由于缺少源代码中的结构 ...

最新文章

  1. 《转载》Java异常处理的10个最佳实践
  2. linux编译模块时怎么包含其他c文件夹,如何在导入符号出现在已编译的Linux内核模块中时,可选地使用它们?...
  3. AndroidのUI设计研究(一)——自定义ProgressBar
  4. 【408预推免复习】计算机组成原理之指令系统
  5. 职场减压妙计:主动降职
  6. JS一起学03:js组成、下拉+text、字符串拼接、分号问题、数据类型、变量类型、作用域和闭包、命名、运算符、流程判断、调试、iNow、onchang
  7. 加入收藏 lsk的BLOG
  8. HD 1525 Euclid's Game
  9. 部署不能产生class文件的问题
  10. [转载]使用awk进行数字计算,保留指定位小数
  11. 安装FFmpeg后,发现没有生成ffplay的解决办法
  12. kinect1+depthimage_to_laserscan
  13. oracle:时间数据的处理
  14. 清除所有多余的桌面右键菜单
  15. python数据归一化代码_Python 数据归一化/标准化
  16. java架构师_阿里P8架构师分享:想成为Java架构师,必须掌握的几点技术
  17. 内核错误怎么解决?Win11系统内核错误解决方法
  18. 2020年全国大学生数学建模B题题目概要
  19. 高德地图Web端JavaScript API开发(二)---在地图上绘制(点标注)
  20. 媒体查询支持ie浏览器各版本的方法

热门文章

  1. 浅谈iPhone OS(iOS)架构
  2. C++中fstream 的使用一
  3. 生物信息学之抗癌药物反应论文阅读四:MD-WDNN
  4. 阿里顶级架构师倾情推荐:国内首本大型分布式架构笔记《凤凰架构》
  5. SAP 模块中文解释 英文全称
  6. 全网首发 | Mac版 PS2022 终于来了,支持M1芯片,五大新黑科技
  7. getchar函数的用法
  8. 学习笔记7--车辆控制平台
  9. 数据挖掘之关联规则挖掘的一些定义
  10. java本地缓存简介