kazu11max17/shieldbom

GitHub: kazu11max17/shieldbom

面向嵌入式与 IoT 场景的离线优先 SBOM 漏洞扫描器,帮助团队在物理隔离环境中检测供应链漏洞与许可证冲突。

Stars: 0 | Forks: 0

# ShieldBOM **嵌入式/IoT 软件的 SBOM 漏洞扫描器和许可证检查器。** [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3dc4624a25170231.svg)](https://github.com/kazu11max17/shieldbom/actions) [![Crates.io](https://img.shields.io/crates/v/shieldbom.svg)](https://crates.io/crates/shieldbom) [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)

ShieldBOM demo

ShieldBOM 解析 SBOM 文件(SPDX, CycloneDX),将组件与已知漏洞进行匹配,并检测许可证冲突 —— 所有这些都通过一个可离线工作的二进制文件完成。专为处理 C/C++ 供应链、交叉编译依赖和物理隔离构建环境的嵌入式及 IoT 团队构建。 ## 功能特性 - **SBOM 解析** -- SPDX 2.3 (JSON, Tag-Value) 和 CycloneDX 1.4/1.5 (JSON, XML) - **漏洞匹配** -- 基于基于 CPE 查询 NVD/OSV 数据,并提供 CVSS 严重性评分 - **许可证冲突检测** -- 标记已知的不兼容组合(例如:GPL-3.0 + 专有软件) - **多种输出格式** -- 人类可读的表格、JSON 和 SARIF 2.1.0 - **离线优先** -- 下载一次漏洞数据库快照,即可在无网络访问的情况下进行扫描 - **单一二进制文件** -- 无运行时依赖;支持 Linux、macOS 和 Windows - **非零退出码** -- 当发现策略违规时中断构建(严重性阈值可配置) ## 支持的格式 | 标准 | 版本 | 文件类型 | |----------|----------|------------| | SPDX | 2.3 | `.spdx.json`, `.spdx` (Tag-Value) | | CycloneDX | 1.4, 1.5 | `.cdx.json`, `.cdx.xml` | ## 快速开始 ### 安装 ``` cargo install shieldbom ``` 或从源码构建: ``` git clone https://github.com/kazu11max17/shieldbom.git cd shieldbom cargo build --release # Binary 位于 ./target/release/shieldbom ``` ### 首次扫描 ``` # 扫描任何您已有的 SPDX 或 CycloneDX 文件 shieldbom scan your-product.spdx.json # 或者尝试包含的示例(如果您克隆了 repo) git clone https://github.com/kazu11max17/shieldbom.git shieldbom scan shieldbom/examples/smart-gateway-firmware.spdx.json ``` 输出示例(扫描一个示例 IoT 网关固件 SBOM): ``` $ shieldbom scan examples/smart-gateway-firmware.spdx.json ShieldBOM Scan Results File: examples/smart-gateway-firmware.spdx.json Format: SPDX 2.3 (JSON) Components: 9 0 Critical 0 High 0 Medium 0 Low License Issues -------------------------------------------------------------------------------- [Copyleft] busybox @ 1.36.0 - Copyleft license 'GPL-2.0-only' detected - may conflict with proprietary distribution ``` 默认情况下,ShieldBOM 查询 [OSV.dev](https://osv.dev/) 获取漏洞信息。对于离线/物理隔离环境: ``` shieldbom db update # Download vulnerability DB (once) shieldbom scan --offline product.spdx.json ``` ## 使用方法 ### `scan` -- 分析 SBOM 的漏洞和许可证问题 ``` # 基本扫描(表格输出,严重性 >= 中等) shieldbom scan product.spdx.json # 用于 CI pipelines 的 JSON 输出 shieldbom scan product.spdx.json --format json # 用于 GitHub Code Scanning / IDE 集成的 SARIF 输出 shieldbom scan product.cdx.xml --format sarif > results.sarif # 仅在 critical/high 严重性时失败 shieldbom scan product.cdx.json --severity high # 使用特定 DB 路径进行完全离线扫描 shieldbom scan product.spdx.json --offline --db /path/to/vuln.db ``` ### `validate` -- 检查 SBOM 格式和完整性 ``` shieldbom validate vendor-sbom.cdx.json ``` ### `db` -- 管理本地漏洞数据库 ``` # 下载或更新漏洞数据库 shieldbom db update # 显示数据库状态 shieldbom db info ``` ### 退出码 | 代码 | 含义 | |------|---------| | 0 | 未发现高于严重性阈值的问题 | | 1 | 检测到漏洞或许可证冲突 | | 2 | 输入错误(SBOM 格式错误、文件缺失) | ## 输出格式 **表格**(默认)-- 终端中人类可读的摘要,包含严重性计数和受影响的组件。 **JSON** (`--format json`) -- 用于下游工具和仪表板的结构化报告。 **SARIF** (`--format sarif`) -- SARIF 2.1.0,用于集成 GitHub Code Scanning、VS Code 和其他兼容 SARIF 的工具。 ## 为什么选择 ShieldBOM? 大多数 SCA 工具是为 Web 应用程序和容器生态系统构建的。如果您从事嵌入式软件工作,您已经了解这些差距: - **C/C++ 供应链是不可见的。** 像 Conan 和 vcpkg 这样的包管理器对 SBOM 的支持有限。供应商提供的二进制文件不包含元数据。大多数工具假设存在 npm/pip/Maven 依赖树。 - **物理隔离环境很常见。** 工厂构建服务器、汽车 CI 系统和涉密环境无法在每次构建时连接云端 API。 - **成本是一个障碍。** 具有真正嵌入式覆盖范围的商业工具定价面向大型企业。ShieldBOM 的核心功能是免费且开源的。 ShieldBOM 是为这种现实构建的:离线优先、单一二进制文件、无运行时依赖,并专注于嵌入式团队实际使用的格式和工作流。 ### 欧盟网络弹性法案 (CRA) [欧盟网络弹性法案(法规 2024/2847)](https://eur-lex.europa.eu/eli/reg/2024/2847/oj/eng) 将于 2027 年 12 月生效,要求制造商识别并记录数字元素产品的漏洞和组件,包括通过制定 SBOM(附件 I,第 II 部分)。ShieldBOM 帮助您立即领先于此项要求。针对 CRA 的特定合规性报告计划在第三阶段推出。 ## 路线图 | 阶段 | 重点 | 状态 | |-------|-------|--------| | **第一阶段** | OSS CLI:SBOM 解析、漏洞匹配、许可证检查 | **v0.1.0 已发布** | | **第二阶段** | SaaS 仪表板,CI/CD 集成(GitHub Actions, GitLab CI) | 计划中 | | **第三阶段** | 嵌入式专业化:二进制 SBOM,RTOS 支持,欧盟 CRA 报告 | 计划中 | | **第四阶段** | 平台:多项目管理,团队功能,API 集成 | 计划中 | ### 当前限制(第一阶段) - 尚不支持二进制/固件 SBOM 生成(第三阶段) - 许可证冲突规则是内置集;尚不支持自定义策略 - 无 Web UI 或团队功能(第二阶段) ## 贡献 欢迎贡献。以下是入门方法: ``` git clone https://github.com/kazu11max17/shieldbom.git cd shieldbom cargo build cargo test ``` 在提交 PR 之前: 1. 运行 `cargo fmt` 和 `cargo clippy` 2. 为新功能添加测试 3. 保持提交专注 -- 每次提交一个逻辑变更 如果您不确定某个变更是否符合项目方向,请先开一个 issue 进行讨论。 ## 许可证 根据 Apache License 2.0 版授权。详见 [LICENSE](LICENSE)。 ### 贡献 除非您明确声明,否则根据 Apache-2.0 许可证的定义,您提交给本项目的任何有意包含的贡献,均应按照相同的条款进行许可,不附带任何额外条款或条件。
标签:C/C++, CI/CD 安全, CRA, CVSS, CycloneDX, Linux安全, NVD, OSV, Rust, SARIF, SBOM, SPDX, Vercel, 事务性I/O, 云安全监控, 供应链攻击检测, 可视化界面, 嵌入式安全, 数据投毒防御, 文档安全, 文档结构分析, 欧盟网络弹性法案, 物联网安全, 硬件无关, 离线扫描, 组件分析, 网络流量审计, 许可证合规, 跌倒检测, 软件物料清单, 通知系统, 静态分析