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/
- 自己的yuque笔记:切片技术
- 概括总结:Firmalice提出了一个新颖的认证旁路漏洞模型,通过程序切片技术将程序分析的目标缩小到认证逻辑相关的范围,使得可以对轻量级的切片程序进行符号化执行分析,解决了符号化执行无法分析复杂程序的问题。而且Firmalice提高了在检测固件认证旁路漏洞的自动化程度,减少了大量的人力工作。
- 轻量级的切片程序,专注于关注的问题,缩小程序分析的范围 eg: FIoT专注于内存损坏型的代码,Firmalice专注于“认证逻辑”相关的代码
- Firmalice提出了一个新颖的认证旁路漏洞模型,通过程序切片技术将程序分析的目标缩小到认证逻辑相关的范围,使得可以对轻量级的切片程序进行符号化执行分析,解决了符号化执行无法分析复杂程序的问题。而且Firmalice提高了在检测固件认证旁路漏洞的自动化程度,减少了大量的人力工作。
Automated dynamic firmware analysis at scale: A case study on embedded web interfaces, ACM ASIACCS 2016
- 技术:基于全模拟,静态和动态分析工具(应用级别模拟qemu),强假设,分析所有组件
- 点评:用于发现嵌入式固件web中的漏洞。任何给定的功能通常都依赖于多个程序的执行,分析所有组件。提供了一个混合静态分析和仿真来分析嵌入式 Web 界面的框架。 然而,他们的技术不是通用的,不能检测以前未知的内存损坏漏洞,并且依赖于各种启发式模拟。
Scalable graph-based bug search for firmware images, ACM CCS 2016
- 方案:Genius
- 技术:基于代码分析;基于模式匹配(代码相似性)的静态分析方法
- 点评:将CFG转换为高级数字特征向量,对跨架构的代码鲁棒性更强
- https://github.com/qian-feng/Gencoding 16年。
- 该项目提供了基于图形的错误搜索框架Genius的两个组成部分。第一个组件是原始特征提取。第二个是在线错误搜索引擎。
⭐️DTaint: Detecting the Taint-style Vulnerability in Embedded Device Firmware, IEEE DSN 2018
方案:DTaint
技术:静态二进制分析,污点追踪
点评:第一个提出不依赖于源码或模拟固件运行的;专注于recv等类似函数生成的数据,但忽略了前端文件的语义。
针对固件,未开源
执行的是自底向上的过程间数据流分析,是为了减小重复遍历被调用函数的开销
⭐️Saint: Sensitive Information Tracking in Commodity IoT, USENIX 2018
- 方案:Saint
- 技术:静态源码分析,污点分析
- 点评:针对物联网应用程序(非C/C++语言编写),开源针对IOT的数据集IOTBench
- 没把工具开源,公开的工具网页不能用
- 反向污点分析+剪枝的思想,可以借鉴
- 针对的是SmartThings,不普适
- NDSS 21有一篇基于SmartThings的工作,叫IoTSafe(未开源)。主要是采用静态和动态测试技术去识别运行时的物理交互。
- IOTSAFE: Enforcing Safety and Security Policy with Real IoT Physical Interaction Discovery,
- yuque笔记:Saint
⭐️KARONTE: Detecting Insecure Multi-binary Interactions in Embedded Firmware, IEEE S&P 2020
- 方案:KARONTE
- 技术:静态分析,关联考虑跨二进制
- 点评:关注跨二进制,后端,忽略了前端可能会漏报。 Web 服务器和二进制文件之间的通用进程间通信 (IPC) 范式作为分析的起点。然而,大量的IPC接口带来了大量的过度分析,从而导致许多误报。
⭐️Sharing More and Checking Less: Leveraging Common Input Keywords to Detect Bugs in Embedded Systems, USENIX 2021
方案:SaTC
关注固件:路由器(37个)、摄像头(2个)
关注协议:HTTP、UPnP
技术:利用前后端共享关键字作为污点分析开始位置,降低符号执行复杂度
点评:基于前后端共享关键字来指导漏洞挖掘
代码:在Karonte污点分析的基础上,加上了前后端相关的分析,也用了一些开源工具
- KARONTE专注于二进制文件之间的共享数据,而SaTC专注于用户输入的入口点。
- SaTC路径选择部分是基于Ghidra库实现的[31]。
未来期望
- SaTC未来的工作,对于加密或模糊后的数据,不能很好的识别,关注现有的反混淆技术
- 隐式关键字处理,尝试寻找隐藏模式,更好的处理前后端之间的关系
实现
- 编程语言 –> python
- XML解析 –> 标准库
- JavaScript –> Js2py
- input Recongnition –> Ghidra & extended kartonte’s cpf
- taint engine –> angr
- MIPS fix
综述
Automatic Vulnerability Detection in Embedded Devices and Firmware: Survey and Layered Taxonomies, ACM Computing Surveys 2021 pdf yuque笔记
物联网固件安全缺陷检测研究进展, 信息安全学报 2021
嵌入式设备固件安全分析技术研究, 计算机学报 2021
物联网设备漏洞挖掘技术研究综述, 信息安全学报 2021
物联网设备软件安全综述, 广州大学学报 2019