ZerberusAI/ZSBOM

GitHub: ZerberusAI/ZSBOM

ZSBOM 是一款自动化软件物料清单生成与依赖安全分析框架,通过一条命令即可完成多生态系统的依赖分类、漏洞检测、风险评分和标准合规 SBOM 输出。

Stars: 51 | Forks: 1

Zerberus

ZSBOM

自动化 SBOM 生成与依赖安全分析

Version Python 3.8+ License: MIT CycloneDX

## 什么是 ZSBOM? ZSBOM 可为您的软件项目自动化执行**依赖分类、安全验证和 SBOM(软件物料清单)生成**。它能够扫描多个生态系统中的依赖项,识别漏洞,评估风险,并生成符合标准的 [CycloneDX](https://cyclonedx.org/) SBOM —— 所有这些只需一条命令即可完成。 ### 为什么 SBOM 很重要? SBOM 对于追踪软件组成至关重要,且在以下软件安全法规中正日益成为强制要求: - **安全软件开发框架 (SSDF)** - **网络弹性法案 (CRA)** - **NIST 网络安全框架 (CSF)** - **NTIA SBOM 最低要素 (CISA)** ZSBOM 通过自动化从依赖提取到生成符合合规要求的 SBOM 的整个流程,帮助开发者、安全团队和 DevOps 工程师从容应对这些要求。 ### 主要特性 - **多生态系统扫描** — 支持 Python、JavaScript/NPM 和 Java (Maven & Gradle),具备完整的传递依赖解析能力 - **安全验证** — 通过 [OSV.dev](https://osv.dev/) 进行 CVE 检测,CWE 弱点映射,废弃包检测以及域名仿冒分析 - **风险评分** — 5 因子评分框架,支持可配置的权重和阈值 - **CycloneDX v1.6 SBOM** — 业界标准格式输出,包含嵌入的漏洞数据 - **单条命令** — 自动检测生态系统并运行完整流程 ## 快速入门 ``` # 安装 ZSBOM pip install git+https://github.com/ZerberusAI/ZSBOM.git # 导航到你的项目 cd your-project/ # 运行全面扫描 zsbom scan ``` ## 支持的生态系统 | 生态系统 | 检测文件 | 传递依赖 | |-----------|---------------|:---------------:| | **Python** | `requirements.txt`, `pyproject.toml`, `setup.py`, `setup.cfg`, `Pipfile` | 是 | | **JavaScript / NPM** | `package.json`, `package-lock.json`, `yarn.lock`, `pnpm-lock.yaml` | 是 | | **Java (Maven)** | `pom.xml` | 是 | | **Java (Gradle)** | `build.gradle`, `gradle.lockfile` | 是 | ## 工作原理 ``` Detect Ecosystems ➜ Extract Dependencies ➜ Validate Security ➜ Assess Risk ➜ Generate SBOM ``` 1. **检测** — 通过扫描 manifest 和 lock 文件,自动发现项目生态系统 2. **提取** — 解析完整的依赖树,包括传递依赖 3. **验证** — 根据漏洞数据库 (OSV.dev)、CWE 映射 (MITRE) 和启发式检查来验证每个包 4. **评分** — 通过五个加权维度计算每个包的风险得分 5. **生成** — 生成包含嵌入的漏洞和风险数据的 CycloneDX v1.6 SBOM ## 输出 ZSBOM 会在您的项目根目录中生成以下文件: | 文件 | 描述 | |------|-------------| | `sbom.json` | 包含组件和漏洞的 CycloneDX v1.6 SBOM | | `risk_report.json` | 涵盖所有维度的单依赖风险评分 | | `dependencies.json` | 包含生态系统和分类元数据的完整依赖树 | | `validation_report.json` | 安全验证中的 CVE 和 CWE 发现 | | `scan_metadata.json` | 扫描上下文 — 时间戳、配置、统计信息 |
示例 SBOM 组件 ``` { "bom-ref": "BomRef.1418539545444415.5659785824827717", "name": "@img/sharp-libvips-linuxmusl-arm64", "purl": "pkg:npm/%40img/sharp-libvips-linuxmusl-arm64@1.0.4", "type": "library", "version": "1.0.4" } ```
## 风险评分 ZSBOM 使用 **ZSBOM 风险评分框架 v1.0** 对每个依赖按 0–100 分进行评分: | 维度 | 权重 | 衡量内容 | |-----------|:------:|------------------| | 已知 CVE | 30% | 来自 OSV.dev 的活动漏洞 | | 包废弃情况 | 20% | 维护状态和提交活动 | | CWE 覆盖范围 | 20% | 来自 MITRE 的弱点模式 | | 域名仿冒风险 | 15% | 与流行包名的相似度 | | 版本不匹配 | 15% | 声明版本与安装版本的偏差 | **阈值:** 80–100 = 低风险,50–79 = 中风险,0–49 = 高风险 权重和阈值可通过 `config.yaml` 完全配置。 ## 命令行使用 ``` zsbom scan # Full scan (default) zsbom scan -c custom_config.yaml # Use a custom configuration file zsbom scan -o output.json # Override SBOM output path zsbom scan --skip-sbom # Run validation and risk assessment only zsbom scan --ignore-conflicts # Continue despite dependency conflicts ``` ZSBOM 具备合理的默认配置,开箱即用。有关完整的配置参考,请参阅 [`depclass/config/default.yaml`](depclass/config/default.yaml)。 ## 持续监控 如需持续监控、CI/CD 集成和团队仪表盘功能,请浏览 [Trace-AI 平台](https://trace-ai.dev)。 ## 路线图 - 支持 SPDX SBOM 格式 - 支持更多生态系统 — Go、Rust、Ruby、PHP、C#/.NET - 容器镜像扫描 - 搭载本地漏洞数据库的完全离线模式 - 跨语言依赖检测(例如捆绑在 Python wheels 中的 C/C++ 依赖) - 性能提升 — 多线程与结果分页 ## 贡献 欢迎贡献代码!有关指南请参阅 [CONTRIBUTING.md](CONTRIBUTING.md),了解社区标准请参阅 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)。 ## 安全 如需报告漏洞,请参阅 [SECURITY.md](SECURITY.md)。 ## 致谢 ZSBOM 的多生态系统依赖提取功能由 Google 的开源项目 [OSV-Scalibr](https://github.com/google/osv-scalibr) 提供支持。Scalibr 使 ZSBOM 能够在其原生支持 Python 的基础上,扫描并分析 NPM/JavaScript、Java (Maven/Gradle) 和 Go 生态系统中的依赖项。 ## 许可证 ZSBOM 采用 [MIT 许可证](LICENSE) 授权。 本项目使用的第三方依赖受其各自许可证的约束。详情请参阅 [THIRD_PARTY_LICENSES](THIRD_PARTY_LICENSES)。
标签:Cilium, CISA, Claude, CMS安全, CRA, CVE检测, CWE弱点映射, CycloneDX, DevSecOps, Gradle, JavaScript, Maven, MIT许可, NIST CSF, NPM, NTIA, OSV.dev, Python, Python 3.8+, SSDF, 上游代理, 云安全监控, 人工智能安全, 传递依赖解析, 依赖分类, 依赖安全分析, 合规性, 域名仿冒分析, 多生态扫描, 废弃包检测, 开源框架, 持续集成, 无后门, 漏洞测试, 漏洞验证, 网络弹性法案, 自动化SBOM生成, 跌倒检测, 软件供应链安全, 软件物料清单, 远程方法调用, 逆向工具, 静态分析, 风险评分