CycloneDX/cyclonedx-buildroot
GitHub: CycloneDX/cyclonedx-buildroot
为 Buildroot 嵌入式项目生成符合 CycloneDX 标准的软件物料清单(SBOM)的 Python 命令行工具。
Stars: 17 | Forks: 7
# CycloneDX Buildroot
[![shield_pypi-version]][link_pypi]
[![shield_gh-workflow-test]][link_gh-workflow-test]
[![shield_coverage]][link_codacy]
[![shield_license]][license_file]
[![shield_website]][link_website]
[![shield_slack]][link_slack]
[![shield_groups]][link_discussion]
[![shield_twitter-follow]][link_twitter]
此 Python 应用程序用于生成 [CycloneDX][CDX_homepage] 软件物料清单
(SBOM),其中包含由 [Buildroot][Buildroot_homepage] 生成的项目的所有直接依赖项。
它也支持提供逗号分隔值 (.csv) 文件作为软件物料清单的项目。
因此,任何包含以下列信息的 CSV 文件的嵌入式项目或其他项目,都可以与本项目配合使用。
PACKAGE,VERSION,LICENSE,LICENSE FILES,SOURCE ARCHIVE,SOURCE SITE,DEPENDENCIES WITH LICENSES
OWASP CycloneDX 是一个全栈物料清单 (BOM) 标准,可为降低网络风险提供高级供应链功能。
Buildroot 提供了一个名为 "legal-info" 的构建目标,它会生成一组包含 manifest.csv 的文件。该 legal-info
是 Buildroot 项目的一个通用 "make" 目标。此外,Buildroot 还可选择支持一个名为
"show-info" 的 "make" 目标,以针对您的构建生成 CPE 数据。
## 环境要求
* `python >= 3.8`
## 安装说明
请使用您首选的 Python 包管理器,从 [Python Package Index (PyPI)][link_pypi] 安装此工具。
通过以下命令之一进行安装:
```
python -m pip install CycloneDX-Buildroot # install via pip
pipx install CycloneDX-Buildroot # install via pipx
poetry add CycloneDX-Buildroot # install via poetry
uv tool install CycloneDX-Buildroot # install via uv
# ... 慢慢就习惯了
```
## 使用说明
通过以下命令之一进行调用:
```
cyclonedx-buildroot # call script
python -m cyclonedx_buildroot # call python module CLI
```
### 帮助页面
```
$ cyclonedx-buildroot --help
usage: cyclonedx-buildroot [-h] [-i INPUT_FILE] [-o OUTPUT_FILE] [-n PRODUCT_NAME] [-v PRODUCT_VERSION] [-m MANUFACTURER_NAME] [-c CPE_INPUT_FILE]
CycloneDX BOM Generator
options:
-h, --help show this help message and exit
-i INPUT_FILE comma separated value (csv) file of buildroot manifest data
-o OUTPUT_FILE SBOM output file name for json and xml
-n PRODUCT_NAME name of the product
-v PRODUCT_VERSION product version string
-m MANUFACTURER_NAME name of product manufacturer
-s SUPPLIER_NAME name of SBOM Supplier
-a AUTHOR_NAME name of SBOM Author
-c CPE_INPUT_FILE cpe file from make show-info
```
### 示例
默认情况下,将从当前工作目录中读取 `manifest.csv`,
并且生成的 `bom.json` 也将创建在当前工作目录中。
可以按如下方式覆盖此行为:
```
cyclonedx-buildroot -i /manifest.csv -n "My Project" -v "1.2.3.4" -m "your manufacturing company name" -c cpe.json
```
## 集成
下图描绘了本项目在安全开发活动 pipeline 中的位置。请注意,虽然该图描绘的是一个线性的活动序列,
但整个序列通常是循环的。SBOM 管理的最终状态会接收产品版本的 SBOM 文件,以便妥善管理随时间推移而产生的漏洞状态。

## CycloneDX Schema 支持
下表提供了有关此模块的版本、受支持的 CycloneDX schema 版本以及输出格式选项的信息。
请在目标系统支持的 CycloneDX 版本兼容的前提下,使用本模块的最新版本。
| 版本 | Schema 版本 | 格式 |
|---------|----------------|-----------|
| 2.x | CycloneDX v1.6 | XML/JSON |
| 1.x | CycloneDX v1.4 | XML/JSON |
## 内部实现
此工具利用 [CycloneDX Python 库][cyclonedx-library] 来生成实际的数据结构,并对其进行序列化和验证。
此工具**不会**暴露任何额外的_公共_ API 或符号——所有代码均被视为内部代码,可能会在版本升级时发生变更且不作另行通知。
不过,CLI 是稳定的——您可以像下面这样以编程方式调用它:
```
from sys import executable
from subprocess import run
run((executable, '-m', 'cyclonedx_buildroot', '--help'))
```
## 版权与许可
CycloneDX Buildroot 的版权归 OWASP Foundation 所有。保留所有权利。
在 Apache 2.0 许可证的条款下,授予修改和重新分发的权限。有关完整的许可证内容,请参阅 [LICENSE 文件][license_file]。
标签:Buildroot, CycloneDX, Python, SBOM, WebSocket, 依赖分析, 无后门, 硬件无关, 逆向工具