工具

FwAnalyzer 固件文件系统规则检查工具

针对固件中文件系统镜像的规则检查工具:读取 ext2/3/4、FAT/VFAT、SquashFS 和 UBIFS 镜像、cpio 归档或目录,并以 JSON 报告列出所有违反 TOML 配置规则的文件。规则涵盖 SUID 与全局可写文件、允许的属主、SELinux 标签与 Linux capabilities、单个文件的元数据、内容正则、SHA-256 摘要、JSON 字段,以及外部脚本(例如附带的 checksec 包装脚本);还能提取版本字符串等数值,并把文件树或指定文件与上一次运行的结果比较。Cruise 将其定位为固件安全检查流程的一环,check.py 搭配 Android OTA 解包脚本可对固件包中的每个镜像逐一运行检查。

使用条件与局限

  • 审阅时最新版本为 1.4.4,发布于 2022-10-24,未附带二进制文件;1.4.1 至 1.4.3 版附有预编译的 Linux 版 fwanalyzer。所审阅的 master 提交日期为 2023-10-08,仅在该版本之后修正拼写错误,也是最新提交;仓库未归档,Makefile 中的 VERSION 仍为 1.4.1。
  • 需用 Go 从源码构建(go.mod 声明 Go 1.13,Makefile 默认 GOOS 为 linux),执行 make deps 和 make 后得到 build/fwanalyzer。各文件系统后端都调用外部程序:ext 镜像用 e2tools 的 e2ls 和 e2cp,FAT 用 mtools 的 mdir 和 mcopy,另需 unsquashfs、ubi_reader 的 ubireader_list_files 以及 cpio。读取 SELinux 与 capability 信息需要作者打过补丁的 e2tools 和 squashfs-tools 分支,处理 ext 中的符号链接需要 e2tools 的 link_support 分支;Dockerfile 在 golang:1.13 镜像上列出了完整依赖。
  • 输入为使用者已有的文件系统镜像或已解包目录;FwAnalyzer 本身不解包固件包。check.py 需要一个把配置映射到镜像的解包脚本,附带的 Android OTA 解包脚本依赖独立的 extract_android_ota_payload 与 mkbootimg_tools 项目。检查结果完全取决于使用者的配置:devices 目录提供 Android user 构建、Android 属性和通用 Linux 根文件系统的示例规则,报告列出的是违反规则的文件,而非经过评估的漏洞。
  • make test 运行 Go 单元测试,集成测试目标运行为 Python 2 编写的 test/test.py,所用夹具均位于 test/ 中:小型 ext2、SquashFS、UBIFS、VFAT 和 cpio 镜像,ARM32、ARM64 与 x86-64 的 hello-world ELF 构建,以及预编译的 e2cp 和 unsquashfs 辅助程序;make testsetup 会用到 sudo setcap。CircleCI 在 Docker 镜像中构建并测试,GitHub 工作流仅用 golangci-lint v1.29 做代码检查。
  • 采用 Apache-2.0 许可,版权属 Cruise LLC;外部文件系统工具各自适用其许可。所审来源未提及 REA 的使用,本收录未构建或运行该工具,也未分析任何镜像。

关于此条目

类型
工具
类别
固件工具
关联
基础工具
目标
固件

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. Readme.md GitHub · cruise-automation/fwanalyzer · 修订 a0db450
  2. Building.md GitHub · cruise-automation/fwanalyzer · 修订 a0db450
  3. Changelog.md GitHub · cruise-automation/fwanalyzer · 修订 a0db450
  4. Checksec.md GitHub · cruise-automation/fwanalyzer · 修订 a0db450
  5. Dockerfile GitHub · cruise-automation/fwanalyzer · 修订 a0db450
  6. Makefile GitHub · cruise-automation/fwanalyzer · 修订 a0db450
  7. go.mod GitHub · cruise-automation/fwanalyzer · 修订 a0db450
  8. devices/Readme.md GitHub · cruise-automation/fwanalyzer · 修订 a0db450
  9. devices/android/Readme.md GitHub · cruise-automation/fwanalyzer · 修订 a0db450
  10. pkg/extparser/extparser.go#L40-L43 GitHub · cruise-automation/fwanalyzer · 修订 a0db450
  11. test GitHub · cruise-automation/fwanalyzer · 修订 a0db450
  12. .circleci/config.yml GitHub · cruise-automation/fwanalyzer · 修订 a0db450
  13. LICENSE GitHub · cruise-automation/fwanalyzer · 修订 a0db450
  14. https://github.com/cruise-automation/fwanalyzer/releases/tag/1.4.4

同分区更多条目:固件与硬件

固件与硬件分区全部 42 项资源