离线单二进制 Web 应用,可导入 CycloneDX、SPDX 和 syft SBOM,运行 CVE 扫描器集成,使用 EPSS、CISA-KEV 和 nuclei 丰富发现结果,并导出 SARIF、CSAF 和 PDF。
一个单二进制、离线的 Web 应用程序,用于调查 SBOM(软件物料清单)文件。上传一个 SBOM 或导入一个包含它们的文件夹,使用一组独立工具对每个进行分析,在一个本地 UI 中查看规范化后的发现结果,并以八种格式导出结果。无需安装,无需网络访问,无遥测。
NOASSERTION 与单纯缺失的字段。主页(/)列出每个已存储的 SBOM,并随着语料库增长保持可用:
log4j 或 openssl 的查询会找到所有包含该组件的 SBOM。查询有长度上限,并以宽松方式解析。每个工具在运行时都是可选的,并在 PATH 上检测(可通过 SBA_TOOL_<NAME>_BIN 覆盖二进制文件)。发现结果绝不依赖任何单一工具。
前八个工具贡献 CVE 形态的漏洞发现结果;provenant 则不同 — 它报告许可证、版权、持有者和作者来源信息,审计器将其存储并作为自身形态的发现结果展示(每次运行有一个“许可证与来源”部分,包含在 Markdown 导出中),而不是将其丢弃。
扫描器无法直接读取每一种格式:bomber 仅消费 CycloneDX ≤ 1.6,且没有任何扫描器能读取 SPDX 3.0 JSON-LD。在这两种情况下,审计器会先通过 syft convert 将输入规范化为 CycloneDX,并在 syft 不可用时以有记录的原因跳过,而不是让工具报告零个包。grype 的漏洞数据库每次运行刷新一次(带外进行),因此例行的数据陈旧会触发一次全新扫描,而不是一次失败的扫描。
分析之后,每个 CVE 形态的发现结果都会用从 vulnlookup 服务(默认 https://vulnlookup.ndaal.eu)拉取的三个真实信号进行富化:
每个发现结果都会显示其 KEV、Nuclei、EPSS 和 Source 值,其中 Source 链接回 vulnlookup 记录,发现结果按最紧急优先排序:已知被利用(KEV)条目排在最前,其次是 EPSS 百分位较高的条目;没有富化信息的发现结果保持分析器产生它们的顺序。富化信息会进入每一种导出格式 — SARIF 2.1 / 2.2、Markdown、ODT、DOCX、PDF 和 CSAF 2.1 / 2.2,其中 CSAF 将 EPSS 作为原生指标携带,并将 CISA-KEV 和 nuclei 记录为备注 — 且导出表单现在默认勾选每一种格式。
在 Settings → Vulnerability enrichment 下配置它:一个开/关切换(默认启用)以及最多三个 vulnlookup 源,每个源都有基础 URL、TCP 端口和 QUIC 端口(端口留空视为 443)。源 1 和源 2 默认使用公共的 https://vulnlookup.ndaal.eu 端口 443;源 3 默认使用回环地址 https://127.0.0.1,位于本机自身的 8680(TCP)/ 8681(QUIC)端口,因此同机部署的 vulnlookup 开箱即是一个可用的回退。这些源按顺序尝试 — 第一个是主源,其余是回退。
#![forbid(unsafe_code)];lint 策略禁止生产代码中的 panic 快捷方式、未检查的算术和未检查的索引。--encryption-key-file)。--tls-key 拒绝 PKCS#1 RSA 密钥(无 RSA 策略),并且在 Unix 上拒绝组可读或全局可读的密钥文件。GET /export/download 仅提供具有可识别的导出或校验和附属文件扩展名的名称,因此配置错误的导出目录无法交出系统文件。cargo audit 干净。从 crates.io 安装已发布的版本 — cargo install 从源码构建,cargo binstall 从 GitLab release 获取预构建二进制文件:
cargo install sbom-auditor # build from source
cargo binstall sbom-auditor # prebuilt GitLab-release binary
或直接构建此检出(需要较新的稳定版 Rust 工具链):
cargo build --release
./target/release/sbom-auditor
然后打开 https://127.0.0.1:8680(浏览器会就自签名证书警告一次)。顶部导航依次为 Home、Upload、Import、Export、Components、Tools、Settings,右侧随后是深色/浅色主题切换、语言菜单和信息菜单。界面提供 49 种语言 — 英语、德语和法语,加上所有欧洲官方语言、挪威尼诺斯克语、挪威三种官方萨米语(北萨米语、吕勒萨米语和南萨米语),以及三种亚洲新增语言 — 中文、印地语(हिन्दी)和乌尔都语(اردو,从右到左)— 可从语言菜单选择(并按浏览器记忆)。下面的“支持的 GUI 语言”部分有完整细分。
--port <PORT> Listen port (default 8680, env SBA_PORT)
--bind <ADDR> Bind address (default 127.0.0.1, env SBA_BIND)
--data-dir <DIR> Data directory (SQLite store + stored SBOMs)
--db <PATH> Database path (default <data-dir>/auditor.db)
--encryption-key-file <F> Enable storage encryption with this 32-byte key
--tls-cert <F> --tls-key <F> Operator certificate instead of self-signed
--allow-non-loopback Permit binding a non-loopback address
--check-update Check gitlab.com for a newer release, then exit
--self-update Download + verify + install the latest release
--help Full option list
端口:8680 通过 TLS 1.3(HTTP/1.1 + HTTP/2)提供 API 和 Web UI;8681 保留给未来的 QUIC / HTTP-3 监听器(尚未实现)。
Web UI 提供 49 种语言。英语、德语和法语是维护中、由人工撰写的集合,并被固定在语言切换器的前面;其他每种语言按其英文名称的字母顺序排列。
本周期加入了三种亚洲语言:中文(普通话,简体)、印地语 / हिन्दी 和乌尔都语 / اردو。乌尔都语是从右到左的 — 选中它时应用程序渲染 <html dir="rtl">。
除固定的三种语言外,每种语言都是机器翻译,尚待母语者审校;翻译中缺失的任何字符串都会自动回退到英语。页面内切换器以每种语言自身的母语名称(内名)列出它,并且是权威列表 — 请查阅它,而不是此处的枚举。
这仅适用于 Web UI。生成的报告(SARIF、CSAF 和 PDF 导出)以及 HTTP API 仍仅提供英语。
cargo nextest run # unit + integration suite
cargo test --doc # doctests
其他测试装置:loom-harness/(并发排列模型)、test/bruno/(API 集合)、test/playwright/(浏览器 E2E)、test/example-corpus/(针对捆绑的 example/ SBOM 语料库进行 API + GUI 上传→分析→导出)以及 loadtest/(Goose 负载场景)。tests/scripts/test_examples_upload_via_api.sh(配有对应的 .bats)针对运行中的实例上传每个 example/ SBOM,并断言每个都通过流式 POST /export/download ZIP 产生一个 SARIF、一个 CSAF 和一个 PDF;对非回环主机验证 TLS,对 localhost 的自签名证书则跳过,且 --base-url 可指向任意实例(例如 https://sbom.ndaal.eu/)。test/magnitude/ 套件(Magnitude,*.mag.ts)增加了对导航栏顺序和导出默认值以及 Start download 的 AI 驱动视觉检查;它补充确定性测试,需要 LLM 才能运行,且不属于阻塞性 CI 门禁。 目录包含 651 个公共测试 SBOM(Git LFS);参见 。模块图和请求流程参见 。
代码以 Apache-2.0 许可。捆绑的 UI 资源带有各自的许可证(Bootstrap MIT、htmx 0BSD、Roboto OFL-1.1);参见 src/static/ 下按文件的 .license 附属文件。
| 工具 | 作用 |
|---|
| syft | SBOM 规范化器 / CycloneDX 1.6 转换器 |
| grype | CVE 匹配器 |
| trivy | 漏洞扫描器 |
| osv-scanner | OSV 数据库查询 |
| bomber | 独立组合匹配器 |
| bomdrift | 供应链漂移 / 域名抢注(SARIF) |
| inspektr | SBOM 漏洞扫描器(JSON) |
| shieldbom | 离线嵌入式/IoT CVE 扫描器(SARIF) |
| provenant | 许可证 / 版权 / 来源(ScanCode) |
example/