OTARIS/FirmwareCheck

GitHub: OTARIS/FirmwareCheck

一款面向CI流水线的IoT固件自动化动态安全分析工具,通过QEMU模拟运行实现持续安全检测与加固。

Stars: 13 | Forks: 0

# FirmwareCheck [![SCRATCh - 由 BMBF 资助](https://img.shields.io/badge/part%20of-SCRATCh-yellow)](https://scratch-itea3.eu/) ![SCRATCh - 由 BMBF 资助](https://img.shields.io/badge/funded%20by-BMBF-blue) [![ITEA3](https://img.shields.io/badge/supported%20by-ITEA3-orange)](https://www.itea3.org) FirmwareCheck 是一个用于对由 [buildroot](https://buildroot.org/) 生成的固件镜像进行自动化动态安全分析的工具。它在 CI-pipeline 中运行,允许开发者在开发 IoT 固件时识别安全风险。 FirmwareCheck 使用 [QEMU](https://www.qemu.org/) 来模拟固件。 为了能够在尽可能多的系统上运行,被分析系统的依赖项很少,任何具有 `sh` 和核心 linux 工具的系统都应该能够运行 FirmwareCheck。 在 CI-pipeline 中的集成流程如下: * 🔧👷 使用 buildroot 生成固件镜像 * ✅❌ 对生成的固件运行检查 * 🆗🔧 如果检查通过则发布固件 ### 功能 FirmwareCheck 会扫描固件中典型的 IoT 安全问题,包括: * 过期的组件 (CVEs) * 开放的串口 (Debug-Ports) * 数据库上的默认密码或匿名登录 * 开放的端口 * 以 root 身份运行的进程 * 黑客可用来在设备上获取 reverse shell 的可执行文件 FirmwareCheck 也可以用于实时系统,以进行加固。 ### 用法 ##### 如果您正在(在 CI 中)使用 buildroot 生成固件:
点击这里 ## 持续集成 [drone.io](https://www.drone.io/) pipelines 的示例设置位于 [.drone.yml](.drone.yml)。 通常步骤如下: * 使用 buildroot 构建固件,并在构建中启用 serial shell,以允许 FirmwareCheck 访问固件。 * 为此,您必须进入 Buildroot 配置,在 System configuration 中,修改 Run a getty (login prompt) after boot,并在 getty options 子菜单中设置适当的端口和波特率。这将自动调整生成系统的 /etc/inittab 文件,以便在正确的串口上启动 shell。 * 您为之生成固件的开发板必须受 QEMU 支持,以便 buildroot 生成必要的 `run_qemu.sh` 文件。 * 在镜像生成后让 FirmwareCheck 运行。`--ports` 参数指定允许开放的端口,否则 Pipeline 将失败。 * 镜像可以从 `srath/firmware_check:latest` 拉取,或者您可以使用 [Dockerfile](./CI/Dockerfile) 构建自己的镜像。 * 如果检查通过,再次构建固件,这次不带 debug port,准备发布
##### 如果您想加固一个 Linux 系统:
点击这里 ## 在实时系统上 ##### 依赖 在您的主机(而非被分析的系统)上安装以下依赖。 如果您使用的是 kali linux: ``` pip3 install -r requirements.txt sudo apt install linux-exploit-suggester exploitdb wkhtmltopdf` ``` 对于 ubuntu/debian/其他系统,您需要自行安装 exploitdb 和 linux-exploit-suggester。最简单的方法是在 ubuntu 中添加 kali 软件源并导入签名密钥: ``` sudo apt install gnupg wget 'https://archive.kali.org/archive-key.asc' sudo apt-key add archive-key.asc && rm archive-key.asc sudo sh -c "echo 'deb https://http.kali.org/kali kali-rolling main non-free contrib' > /etc/apt/sources.list.d/kali.list" sudo apt update ``` ##### 运行 要分析一个实时 Linux 系统: 1. 在目标 Linux IoT 设备上运行 `firmware_check_yml.sh` 此外,如果您想生成 html/pdf 报告: 2. 获取输出文件 `fc_output.yaml` 或将其内容复制到您的主机 3. 运行 `generate_report.py ` 以获取报告
### 截图 ![Report](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/1012c020e5100700.png) ### 在本地 docker 容器中测试 存在一个示例易受攻击的容器,可以通过以下方式运行: `sudo docker build . -t vulnerable_firmware && sudo docker run -it vulnerable_firmware:latest /bin/bash` 然后按照上述“在实时系统上”描述的步骤操作。 ## 致谢 * buildroot (https://buildroot.org/) * QEMU (https://www.qemu.org/)
标签:Buildroot, CI/CD 安全, CISA项目, Cutter, CVE 扫描, DevSecOps, GitHub Advanced Security, IoT 安全, PE 加载器, QEMU, 上游代理, 仿真, 内联执行, 反向 Shell 检测, 固件分析, 固件安全, 安全加固, 嵌入式系统, 数据投毒防御, 数据统计, 物联网, 端口扫描, 请求拦截, 身份验证强制, 逆向工具