工具
cwe_checker 二进制漏洞模式检查工具
Fraunhofer FKIE 开发的静态分析工具,在二进制可执行文件(主要是 Linux 和 Unix 的 ELF 文件)中查找符合通用缺陷枚举(CWE)漏洞类别的代码路径,例如缓冲区溢出、释放后使用与重复释放、空指针解引用、格式化字符串和整数溢出。它先由 Ghidra 把二进制反汇编为统一的中间表示,再在其上运行从简单启发式到基于抽象解释的数据流分析等各类检查,因此适用于 Ghidra 支持的 CPU 架构,包括 x86、ARM、MIPS 和 PowerPC。告警以文本或 JSON 输出,随附的 Ghidra 脚本可把告警标注在反汇编中,便于人工复核。
使用条件与局限
- 审阅时最新稳定版为 v0.9,于 2024-08-20 以源码形式发布。GitHub 容器注册表上的预构建 Docker 镜像有 latest(master 分支)、stable 和 v0.9 三个标签,仅提供 x86 版本,但可在 ARM 机器上本地构建原生镜像。所审阅的 master 提交比 v0.9 晚 97 个提交;CHANGES.md 将其标为 0.10-dev,包括重写的 P-Code 提取器以及随 Ghidra 更新而增加的架构支持,而各 crate 清单仍标为 0.9.0,在线文档对应的也是稳定版。
- 本地构建需要 Rust 1.82+ 和 Ghidra 10.2+;未指定 GHIDRA_PATH 时,make all 会自动查找 Ghidra 安装位置。Docker 镜像基于 Ghidra 11.2.1 无界面基础镜像构建,另提供 Nix flake。各项检查可通过 src/config.json 调整。对 Linux 可加载内核模块的分析(使用单独配置运行部分检查)和对裸机二进制的分析(需要针对具体设备的配置,仓库附有 STM32F407VG 示例)均为实验性功能。
- 每次运行分析一个由使用者提供的二进制。README 提醒误报和漏报都在所难免,CWE-78 操作系统命令注入检查在标准运行中默认关闭,因此告警只是需要人工复核的代码路径,而不是已确认的漏洞。该工具也以插件形式集成在 FACT 中。
- 采用 LGPL-3.0 许可;README 中的声明允许使用第 3 版或任何更新版本。本次未构建,也未分析任何二进制。
关于此条目
- 类型
- 工具
- 类别
- 原生分析工具
- 关联
- 基础工具
- 目标
- 二进制 · 固件
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · fkie-cad/cwe_checker · 修订 7288311
- README.md#L35-L97 GitHub · fkie-cad/cwe_checker · 修订 7288311
- README.md#L105-L140 GitHub · fkie-cad/cwe_checker · 修订 7288311
- CHANGES.md GitHub · fkie-cad/cwe_checker · 修订 7288311
- Dockerfile GitHub · fkie-cad/cwe_checker · 修订 7288311
- src/caller/Cargo.toml GitHub · fkie-cad/cwe_checker · 修订 7288311
- bare_metal/stm32f407vg.json GitHub · fkie-cad/cwe_checker · 修订 7288311
- LICENSE GitHub · fkie-cad/cwe_checker · 修订 7288311
- https://github.com/fkie-cad/cwe_checker/releases/tag/v0.9
- https://docs.cwe-checker.io/index.html