核心用法
agent-bom 是一款 Python 驱动的依赖漏洞扫描与情报聚合工具,通过统一 CLI 接口整合五大权威漏洞数据库:OSV(Open Source Vulnerabilities)、GitHub Security Advisories(GHSA)、NVD(National Vulnerability Database)、EPSS(Exploit Prediction Scoring System)及 CISA KEV(Known Exploited Vulnerabilities)。用户可通过 check-package 模式快速查询单个组件漏洞,scan-local 模式解析本地 inventory 或 SBOM 文件(CycloneDX/SPDX),或启用 offline-review 模式在完全隔离环境下基于本地缓存进行审查。
工具采用显式数据边界设计:仅向公共数据库发送包标识符(名称、版本、PURL、CVE ID),绝不外传源代码、配置文件、密钥或完整扫描报告。输出支持 JSON、SARIF 等多种格式,可直接对接 GitHub Code Scanning 或企业 DevSecOps 流水线。
显著优点
1. 多源情报融合:打破单一数据库局限,自动关联 CVE/GHSA/PYSEC 别名,聚合 CVSS、CWE、EPSS 概率、CISA 在野利用标签等多维字段
2. 零凭证起步:基础查询无需任何 API Key,可选 NVD_API_KEY/GITHUB_TOKEN 仅用于提升速率限制
3. 数据主权可控:explain-only 与 offline-review 模式满足敏感环境合规要求,明确告知用户何种数据会离开本地环境
4. 生态兼容:支持 PyPI、npm、Maven、Go、Rust 等主流生态,原生解析 CycloneDX/SPDX SBOM 标准格式
5. 开源可信:Apache-2.0 协议,源码公开可审计,无遥测、无持久化后门
潜在缺点与局限性
- 离线模式覆盖率受限:依赖本地缓存的漏洞库,新披露 CVE 可能存在滞后
- 私有组件盲区:内部/Nexus 私有仓库包名无法被公共数据库识别,需结合企业 SBOM 手动标记
- 版本解析歧义:复杂版本范围(如 Python 的
~=1.0)可能因生态差异产生误判 - 无自动修复:工具仅提供情报与修复版本建议,不执行依赖变更或补丁安装
- 速率限制:无 Token 时 NVD/GitHub 查询频次受限,大规模扫描需配置 API Key
适合人群
- 软件成分分析(SCA)工程师:需批量审计 SBOM 并生成 SARIF 证据链
- DevSecOps 平台团队:寻求可嵌入 CI/CD 的轻量级漏洞闸门工具
- 安全合规审计员:需离线审查能力以满足金融、政务等敏感环境监管要求
- 开源维护者:快速验证依赖升级是否引入已知高危漏洞
常规风险
| 风险维度 | 说明 |
|---------|------|
| 数据泄露 | 默认仅发送包标识符,但用户误用 `scan-local` 扫描含敏感路径的 inventory 可能暴露内部项目结构;建议先用 `explain-only` 确认边界 |
| API 令牌管理 | 虽声明不强制凭证,但用户自行导出环境变量时可能因日志配置不当泄露 `NVD_API_KEY`/`GITHUB_TOKEN`;工具本身已做脱敏处理 |
| 误报与漏报 | EPSS 为概率预测非确定性结论,离线模式可能遗漏最新漏洞;关键决策应交叉验证多源数据 |
| 供应链污染 | 从 PyPI 安装时需验证签名与哈希,避免 `agent-bom` 本身成为攻击向量(建议固定版本并校验 SHA256)|
| 合规误读 | 离线审查的"无漏洞"结果不等于"安全通过",需明确披露覆盖范围限制,避免审计报告误导 |
---
注:本简介基于技能元数据与文档生成,未执行动态安全扫描,实际部署前建议在隔离环境验证行为。