cwe_checker是一套用于检测常见错误类别(例如空指针取消引用和缓冲区溢出)的检查工具,这些错误类型可以将其称之为CWE。而该工具可以帮助广大研究人员快速找到潜在的易受攻击的代码路径,从而执行代码安全分析任务。
这些检查基于各种分析技术,从简单的启发式方法到基于抽象解释的数据流分析。它主要关注 Linux 和 Unix 操作系统中常见的 ELF 二进制文件。cwe_checker 使用Ghidra将二进制文件反汇编为一个通用的中间表示,并在此 IR 上实施自己的分析。
1、设置起来非常简单,只需构建 Docker 容器;
2、它分析了几种 CPU 架构的 ELF 二进制文件,包括 x86、ARM、MIPS 和 PPC;
3、由于其基于插件的架构,它具有可扩展性;
4、它是可配置的,例如将分析应用于新的 API;
5、查看 Ghidra 中注释的结果;
6、cwe_checker 可以作为插件集成到FACT中;
Docker
Rust >= 1.76
Ghidra >= 10.2
根据当前主分支生成镜像:
docker pull ghcr.io/fkie-cad/cwe_checker:latest
生成基于最新稳定发布版本的镜像:
docker pull ghcr.io/fkie-cad/cwe_checker:stable
生成基于 v0.9 稳定版本的镜像:
docker pull ghcr.io/fkie-cad/cwe_checker:v0.9
然运行下列命令构建镜像:
docker build -t cwe_checker .
cwe_checker以二进制文件作为输入,根据二进制文件的静态分析运行几项检查,然后输出分析过程中发现的 CWE 警告列表。
如果你使用官方的docker镜像,只需运行:
docker run --rm -v /PATH/TO/BINARY:/input ghcr.io/fkie-cad/cwe_checker /input
如果你在本地安装了cwe_checker,请运行:
cwe_checker BINARY
与其他工具集成
cwe_checker 附带一个 Ghidra 脚本,该脚本解析 cwe_checker 的输出并注释反汇编器中找到的CWE,以便于手动分析。该脚本位于ghidra_plugin/cwe_checker_ghidra_plugin.py,使用说明包含在文件中:
本项目的开发与发布遵循LGPL-3.0开源许可协议。
cwe_checker:
https://github.com/fkie-cad/cwe_checker
https://docs.cwe-checker.io/ https://cwe.mitre.org/ https://www.rust-lang.org/ https://ghidra-sre.org/ https://2019.pass-the-salt.org/talks/74.html https://www.blackhat.com/us-19/arsenal/schedule/index.html#cwe_checker-hunting-binary-code-vulnerabilities-across-cpu-architectures-16782 https://www.blackhat.com/us-22/arsenal/schedule/#cwe_checker-architecture-independent-binary-vulnerability-analysis-26960