cdxgen/cdxgen

GitHub: cdxgen/cdxgen

一个通用的多语言 SBOM 生成器,支持从源代码、容器镜像和运行系统创建 CycloneDX 格式的软件物料清单,并可与 Dependency Track 集成进行持续漏洞管理。

Stars: 913 | Forks: 230

[![JSR](https://img.shields.io/jsr/v/%40cyclonedx/cdxgen)][jsr-cdxgen] [![NPM](https://img.shields.io/npm/v/%40cyclonedx%2Fcdxgen)][npmjs-cdxgen] [![GitHub Releases](https://img.shields.io/github/v/release/cyclonedx/cdxgen)][github-releases] [![NPM Downloads](https://img.shields.io/npm/dy/%40cyclonedx%2Fcdxgen)][npmjs-cdxgen] [![GitHub License](https://img.shields.io/github/license/cyclonedx/cdxgen)][github-license] [![GitHub Contributors](https://img.shields.io/github/contributors/cyclonedx/cdxgen)][github-contributors] [![SWH](https://archive.softwareheritage.org/badge/origin/https://github.com/cdxgen/cdxgen/)][swh-cdxgen] # CycloneDX Generator (cdxgen) cdxgen 是一个 CLI 工具、库、[REPL](./ADVANCED.md) 和服务器,用于创建有效且合规的 [CycloneDX][cyclonedx-homepage] Bill of Materials (BOM),其中包含 JSON 格式的所有项目依赖项的聚合。CycloneDX 是一种全栈 BOM 规范,易于创建,人类和机器可读,且易于解析。该工具支持 1.4 到 1.7 版本的 CycloneDX 规范。 支持的 BOM 格式: - 软件 (SBOM) - 适用于多种语言和容器镜像。 - 加密 (CBOM) - 适用于 Java 和 Python 项目。 - 运维 (OBOM) - 适用于 Linux 容器镜像以及运行 Linux 或 Windows 操作系统的虚拟机。 - 软件即服务 - 适用于 Java、Python、JavaScript、TypeScript 和 PHP 项目。 - 证明 (CDXA) - 使用多种标准的模板生成 SBOM。在细粒度级别对 BOM 文档进行签名,以提高真实性。 - 漏洞披露报告 (VDR) - 将 cdxgen 与 [OWASP depscan](https://github.com/owasp-dep-scan/dep-scan) 结合使用,以大规模自动化生成 VDR。 ## 为什么选择 cdxgen? 大多数 SBOM 工具就像简单的条形码扫描仪。对于简单的应用程序,它们可以解析一些包清单,并仅基于这些文件创建组件列表,而无需任何深度检查。此外,一个典型的应用程序可能有多个存储库、组件和库,且具有复杂的构建要求。按语言或包清单生成 SBOM 的传统技术要么在企业环境中不起作用,要么无法提供合规性和自动化分析所需的置信度。所以我们构建了 cdxgen —— 一个通用、多语言、用户友好、精确且全面的 SBOM 生成器! **我们的理念:** - _可解释性:_ 不要只是列出,要用证据解释。 - _精确性:_ 尝试使用多种技术来提高精确度,即使这需要额外的时间。 - _角色:_ 满足各类角色的需求,例如安全研究人员、合规审计师、开发人员和 SOC。 - _生命周期:_ 支持各种产品生命周期的 BOM 生成。 - _机器学习:_ 通过考虑各种模型属性,针对机器学习 (ML) 目的优化生成的数据。 ## 文档 请访问我们的 [GPT 应用][cdxgen-gpt] 或 [文档站点][docs-homepage] 以获取详细的使用方法、教程和支持文档。 章节包括: - [入门指南][docs-homepage] - [CLI 用法][docs-cli] - [服务器用法][docs-server] - [支持的项目类型][docs-project-types] - [环境变量][docs-env-vars] - [高级用法][docs-advanced-usage] - [权限][docs-permissions] - [支持(企业版与社区版)][docs-support] ## 用法 ## 对于贡献者 / 开发者 ``` pnpm install pnpm dlx cdxgen ``` ## 安装 ``` npm install -g @cyclonedx/cdxgen ``` 要在不安装的情况下运行 cdxgen(热加载),请使用 [pnpm dlx](https://pnpm.io/cli/dlx) 命令。 ``` corepack pnpm dlx @cyclonedx/cdxgen --help ``` 如果您是 [Homebrew][homebrew-homepage] 用户,也可以通过以下方式安装 [cdxgen][homebrew-cdxgen]: ``` $ brew install cdxgen ``` 如果您是 Windows 上的 [Winget][winget-homepage] 用户,也可以通过以下方式安装 cdxgen: ``` $ winget install cdxgen ``` Deno 和 bun 运行时可以在有限的支持下使用。 ``` deno install --allow-read --allow-env --allow-run --allow-sys=uid,systemMemoryInfo,gid,homedir --allow-write --allow-net -n cdxgen "npm:@cyclonedx/cdxgen/cdxgen" ``` 您也可以使用带有 node、deno 或 bun 运行时版本的 cdxgen 容器镜像。 默认版本使用 Node.js 23 ``` docker run --rm -e CDXGEN_DEBUG_MODE=debug -v /tmp:/tmp -v $(pwd):/app:rw -t ghcr.io/cyclonedx/cdxgen:master -r /app -o /app/bom.json ``` 要使用 deno 版本,请使用 `ghcr.io/cyclonedx/cdxgen-deno` 作为镜像名称。 ``` docker run --rm -e CDXGEN_DEBUG_MODE=debug -v /tmp:/tmp -v $(pwd):/app:rw -t ghcr.io/cyclonedx/cdxgen-deno:master -r /app -o /app/bom.json ``` 对于 bun 版本,请使用 `ghcr.io/cyclonedx/cdxgen-bun` 作为镜像名称。 ``` docker run --rm -e CDXGEN_DEBUG_MODE=debug -v /tmp:/tmp -v $(pwd):/app:rw -t ghcr.io/cyclonedx/cdxgen-bun:master -r /app -o /app/bom.json ``` 在 deno 应用程序中,cdxgen 可以直接导入而无需任何转换。请参阅关于[作为库集成](#integration-as-library)的章节 ``` import { createBom, submitBom } from "npm:@cyclonedx/cdxgen@^11.0.0"; ``` ## 获取帮助 ``` cdxgen [command] Commands: cdxgen completion Generate bash/zsh completion Options: -o, --output Output file. Default bom.json [default: "bom.json"] -t, --type Project type. Please refer to https://cdxgen.github.io/cdxgen/#/PROJECT_TYPES for supp orted languages/platforms. [array] --exclude-type Project types to exclude. Please refer to https://cdxgen.github.io/cdxgen/#/PROJECT_TY PES for supported languages/platforms. -r, --recurse Recurse mode suitable for mono-repos. Defaults to true. Pass --no-recurse to disable. [boolean] [default: true] -p, --print Print the SBOM as a table with tree. [boolean] -c, --resolve-class Resolve class names for packages. jars only for now. [boolean] --deep Perform deep searches for components. Useful while scanning C/C++ apps, live OS and oc i images. [boolean] --server-url Dependency track url. Eg: https://deptrack.cyclonedx.io --skip-dt-tls-check Skip TLS certificate check when calling Dependency-Track. [boolean] [default: false] --api-key Dependency track api key --project-group Dependency track project group --project-name Dependency track project name. Default use the directory name --project-version Dependency track project version [string] [default: ""] --project-tag Dependency track project tag. Multiple values allowed. [array] --project-id Dependency track project id. Either provide the id or the project name and version tog ether [string] --parent-project-id Dependency track parent project id [string] --required-only Include only the packages with required scope on the SBOM. Would set compositions.aggr egate to incomplete unless --no-auto-compositions is passed. [boolean] --fail-on-error Fail if any dependency extractor fails. [boolean] --no-babel Do not use babel to perform usage analysis for JavaScript/TypeScript projects. [boolean] --generate-key-and-sign Generate an RSA public/private key pair and then sign the generated SBOM using JSON We b Signatures. [boolean] --server Run cdxgen as a server [boolean] --server-host Listen address [default: "127.0.0.1"] --server-port Listen port [default: "9090"] --install-deps Install dependencies automatically for some projects. Defaults to true but disabled fo r containers and oci scans. Use --no-install-deps to disable this feature. [boolean] [default: true] --validate Validate the generated SBOM using json schema. Defaults to true. Pass --no-validate to disable. [boolean] [default: true] --evidence Generate SBOM with evidence for supported languages. [boolean] [default: false] --spec-version CycloneDX Specification version to use. Defaults to 1.6 [number] [choices: 1.4, 1.5, 1.6, 1.7] [default: 1.6] --filter Filter components containing this word in purl or component.properties.value. Multiple values allowed. [array] --only Include components only containing this word in purl. Useful to generate BOM with firs t party components alone. Multiple values allowed. [array] --author The person(s) who created the BOM. Set this value if you're intending the modify the B OM and claim authorship. [array] [default: "OWASP Foundation"] --profile BOM profile to use for generation. Default generic. [choices: "appsec", "research", "operational", "threat-modeling", "license-compliance", "generic", "machine-learning", "ml", "deep-learning", "ml-deep", "ml-tiny"] [default: "generic"] --include-regex glob pattern to include. This overrides the default pattern used during auto-detection . [string] --exclude, --exclude-regex Additional glob pattern(s) to ignore [array] --export-proto Serialize and export BOM as protobuf binary. [boolean] [default: false] --proto-bin-file Path for the serialized protobuf binary. [default: "bom.cdx"] --include-formulation Generate formulation section with git metadata and build tools. Defaults to false. [boolean] [default: false] --include-crypto Include crypto libraries as components. [boolean] [default: false] --standard The list of standards which may consist of regulations, industry or organizational-spe cific standards, maturity models, best practices, or any other requirements which can be evaluated against or attested to. [array] [choices: "asvs-5.0", "asvs-4.0.3", "bsimm-v13", "masvs-2.0.0", "nist_ssdf-1.1", "pcissc-secure-slc-1.1", "scv s-1.0.0", "ssaf-DRAFT-2023-11"] --json-pretty Pretty-print the generated BOM json. [boolean] [default: false] --min-confidence Minimum confidence needed for the identity of a component from 0 - 1, where 1 is 100% confidence. [number] [default: 0] --technique Analysis technique to use [array] [choices: "auto", "source-code-analysis", "binary-analysis", "manifest-analysis", "hash-comparison", "instrume ntation", "filename"] --auto-compositions Automatically set compositions when the BOM was filtered. Defaults to true [boolean] [default: true] -h, --help Show help [boolean] -v, --version Show version number [boolean] ``` 所有布尔参数都接受 `--no` 前缀来切换行为。 ## 示例 最小示例。 ``` cdxgen -o bom.json ``` 对于 Java 项目。cdxgen 会自动检测 maven、gradle 或 sbt 并相应地构建 bom ``` cdxgen -t java -o bom.json ``` 要将 SBOM 打印为表格,请传递 `-p` 参数。 ``` cdxgen -t java -o bom.json -p ``` 要递归地为所有语言生成单个 BOM,请传递 `-r` 参数。 ``` cdxgen -r -o bom.json ``` cdxgen 使用的默认规范是 1.6。要为不同的规范版本(例如 1.5 或 1.4)生成 BOM,请使用 `--spec-version` 参数传递版本号。 ``` # 1.5 受大多数工具支持 cdxgen -r -o bom.json --spec-version 1.5 ``` 要为 C 或 Python 生成 SBOM,请确保已安装 Java >= 21。 ``` # 安装 java >= 21 cdxgen -t c -o bom.json ``` 注意:已知 cdxgen 在 Java 8 或 11 下会冻结,因此请确保安装了 >= 21 的版本,并且 JAVA_HOME 环境变量配置正确。如有疑问,请使用 cdxgen 容器镜像。 ## 通用 SBOM 通过传递类型参数 `-t universal`,可以强制 cdxgen 通过扫描所有包、容器和 Kubernetes 清单来尽可能多地收集组件和服务。生成的 SBOM 可能包含上千个组件,因此在使用传统的 SCA 工具之前需要额外的分类。 ## SBOM 服务器 使用 `--server` 参数调用 cdxgen 以服务器模式运行。默认情况下,它监听端口 `9090`,可以使用参数 `--server-host` 和 `--server-port` 进行自定义。 ``` cdxgen --server ``` 或者使用容器镜像。 ``` docker run --rm -v /tmp:/tmp -p 9090:9090 -v $(pwd):/app:rw -t ghcr.io/cyclonedx/cdxgen -r /app --server --server-host 0.0.0.0 ``` 使用 curl 或您喜欢的工具将参数传递给 `/sbom` 路由。 ### 服务器参数 参数可以通过查询字符串或 JSON 正文传递。请参阅[服务器用法][docs-server] ### 健康检查端点 使用 /health 端点检查 SBOM 服务器是否已启动并正在运行。 ``` curl "http://127.0.0.1:9090/health" ``` ### 扫描本地路径 ``` curl "http://127.0.0.1:9090/sbom?path=/Volumes/Work/sandbox/vulnerable-aws-koa-app&multiProject=true&type=js" ``` ### 扫描 git 仓库 ``` curl "http://127.0.0.1:9090/sbom?url=https://github.com/HooliCorp/vulnerable-aws-koa-app.git&multiProject=true&type=js" ``` 如果需要传递凭据进行身份验证。 ``` curl "http://127.0.0.1:9090/sbom?url=https://@github.com/some/repo.git&multiProject=true&type=js" curl "http://127.0.0.1:9090/sbom?url=https://:@bitbucket.org/some/repo.git&multiProject=true&type=js" ``` 您可以 POST 参数。 ``` curl -H "Content-Type: application/json" http://localhost:9090/sbom -XPOST -d $'{"url": "https://github.com/HooliCorp/vulnerable-aws-koa-app.git", "type": "nodejs", "multiProject": "true"}' ``` ### Docker compose ``` git clone https://github.com/cdxgen/cdxgen.git docker compose up ``` ## War 文件支持 cdxgen 可以从给定的 war 文件生成 BOM 文件。 ``` # cdxgen -t java app.war cdxgen app.war ``` ## 解析类名 有时,需要解析 jar 文件中包含的类名。通过传递可选参数 `--resolve-class`,可以让 cdxgen 创建一个单独的映射文件,其中以 jar 名称(包括版本)作为键,以类名列表作为值。 ``` cdxgen -t java --resolve-class -o bom.json ``` 这将创建一个包含 jar - 类名映射的 bom.json.map 文件。请参阅[这些](test/data/bom-maven.json.map) [示例](test/data/bom-gradle.json.map)以了解其结构。 ## 解析许可证 cdxgen 可以自动查询公共注册表(如 maven、npm 或 nuget)来解析包许可证。这是一项耗时的操作,默认情况下处于禁用状态。要启用,请将环境变量 `FETCH_LICENSE` 设置为 `true`,如下所示。确保设置了 `GITHUB_TOKEN` 或由 [GitHub Actions 中的内置 GITHUB_TOKEN][github-rate-limit] 提供,否则速率限制可能会阻止许可证解析。 ``` export FETCH_LICENSE=true ``` ## 依赖树 cdxgen 可以在 `dependencies` 属性下保留少数受支持的包清单的依赖树。目前仅限于: - package-lock.json - yarn.lock - pnpm-lock.yaml - Maven (pom.xml) - Gradle - Scala SBT - Python (requirements.txt, setup.py, pyproject.toml, poetry.lock) - .NET (packages.lock.json, project.assets.json, paket.lock, .nuspec/.nupkg) - Go (go.mod) - PHP (composer.lock) - Ruby (Gemfile.lock) - Rust (Cargo.lock) ## 插件 cdxgen 可以通过外部二进制插件进行扩展,以支持更多的 SBOM 用例。这些现在作为可选依赖项安装。 ``` sudo npm install -g @cdxgen/cdxgen-plugins-bin ``` ## 插件 `cdxgen` 可以通过外部二进制插件进行扩展,以支持更多的 SBOM 用例。 这些现在作为可选依赖项安装,可以在无需全局安装的情况下使用。 ``` pnpm dlx @cdxgen/cdxgen-plugins-bin ``` ## Docker / OCI 容器支持 根据路径中是否存在 `sha256` 或 `docker.io` 前缀等值,会自动检测 `docker` 类型。 ``` cdxgen odoo@sha256:4e1e147f0e6714e8f8c5806d2b484075b4076ca50490577cdf9162566086d15e -o /tmp/bom.json ``` 您也可以使用仓库名称传递 `-t docker`。如果未指定,则只会拉取 `latest` 标签。 ``` cdxgen shiftleft/scan-slim -o /tmp/bom.json -t docker ``` 您也可以传递容器镜像的 .tar 文件。 ``` docker pull shiftleft/scan-slim docker save -o /tmp/slim.tar shiftleft/scan-slim podman save -q --format oci-archive -o /tmp/slim.tar shiftleft/scan-slim cdxgen /tmp/slim.tar -o /tmp/bom.json -t docker ``` ### 无根模式下的 Podman 以[无根][podman-github-rootless]或[远程][podman-github-remote]模式设置 podman 不要忘记启动 Linux 上 API 访问所需的 podman 套接字。 ``` systemctl --user enable --now podman.socket systemctl --user start podman.socket podman system service -t 0 & ``` ## 为实时系统生成 OBOM 您可以使用 `obom` 命令为实时系统或虚拟机生成 OBOM,以用于合规性和漏洞管理目的。此模式支持 Windows 和 Linux 操作系统。 ``` # obom 是 cdxgen -t os 的别名 obom # cdxgen -t os ``` 此功能由 osquery 提供支持,它与二进制插件一起[安装](https://github.com/cdxgen/cdxgen-plugins-bin/blob/main/build.sh#L8)。cdxgen 将尝试使用[默认查询](data/queries.json)尽可能地检测组件、应用程序和扩展。该过程将花费几分钟时间,并生成一个包含数千种不同类型组件(例如操作系统、设备驱动程序、文件和数据)的 SBOM 文件。 ## 生成加密物料清单 (CBOM) 使用 `cbom` 别名生成 CBOM。目前仅支持 Java 项目。 ``` cbom -t java # cdxgen -t java --include-crypto -o bom.json . ``` ## 生成 SaaSBOM 和组件证据 请参阅高级文档中的 [evinse 模式](./ADVANCED.md)。 ## BOM 签名 cdxgen 可以对生成的 BOM json 文件进行签名,以增加真实性和不可否认性能力。要启用此功能,请设置以下环境变量。 - SBOM_SIGN_ALGORITHM:算法。例如:RS512 - SBOM_SIGN_PRIVATE_KEY:RSA 私钥的位置 - SBOM_SIGN_PUBLIC_KEY:可选。RSA 公钥的位置 要通过传递参数 `--generate-key-and-sign` 来生成测试公钥/私钥对。生成的 json 文件将有一个名为 `signature` 的属性,可用于验证。[jwt.io][jwt-homepage] 是一个可用于此类签名验证的知名网站。 ![SBOM signing](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/915bf0a565070929.jpg) ### 验证签名 使用捆绑的 `cdx-verify` 命令,该命令支持验证在 bom 级别添加的单个签名。 ``` npm install -g @cyclonedx/cdxgen cdx-verify -i bom.json --public-key public.key ``` ### 验证签名 使用捆绑的 `cdx-verify` 命令,该命令支持验证在 BOM 级别添加的单个签名。 您可以使用 pnpm 直接运行它(无需全局安装): ``` pnpm dlx @cyclonedx/cdxgen cdx-verify -i bom.json --public-key public.key ``` ### 自定义验证工具(Node.js 示例) 有许多[库][jwt-libraries]可用于验证 JSON Web Tokens。以下是一个 javascript 示例。 ``` # npm install jws const jws = require("jws"); const fs = require("fs"); // Location of the SBOM json file const bomJsonFile = "bom.json"; // Location of the public key const publicKeyFile = "public.key"; const bomJson = JSON.parse(fs.readFileSync(bomJsonFile, "utf8")); // Retrieve the signature const bomSignature = bomJson.signature.value; const validationResult = jws.verify(bomSignature, bomJson.signature.algorithm, fs.readFileSync(publicKeyFile, "utf8")); if (validationResult) { console.log("Signature is valid!"); } else { console.log("SBOM signature is invalid :("); } ``` ## 自动使用情况检测 对于 node.js 项目,首先解析 lock 文件,因此 SBOM 将包含所有依赖项,包括 dev 依赖项。然后使用由 babel-parser 驱动的 AST 解析器来检测被非测试代码导入和使用的包。此类导入的包会在生成的 SBOM 中自动将其 scope 属性设置为 `required`。您可以通过传递参数 `--no-babel` 来关闭此分析。然后,scope 属性将根据 lock 文件中的 `dev` 属性进行设置。 此属性以后可用于各种目的。例如,[dep-scan][depscan-github] 使用此属性来确定漏洞的优先级。不幸的是,像 dependency track 这样的工具不包括此功能,可能会过度报告 CVE。 使用参数 `--required-only`,您可以将 SBOM 限制为仅包含 scope 为“required”的包,通常称为生产或非 dev 依赖项。结合 `--no-babel`,将根据 lock 文件中 `dev` 属性为 false 的情况,将此列表限制为仅非 dev 依赖项。 对于 go,使用 `go mod why` 命令来识别必需的包。对于 php,解析 composer lock 文件以区分必需包 和可选包。 ## 自动服务检测 cdxgen 可以从 YAML 清单(例如 docker-compose、Kubernetes 或 Skaffold 清单)中自动检测服务名称。这些将填充在生成的 SBOM 中的 `services` 属性下。使用 [evinse](./ADVANCED.md),可以通过解析源代码中的常见注释来检测其他服务。 ## 转换为 SPDX 格式 使用 [CycloneDX][cyclonedx-cli-github] 工具处理高级用例,例如转换、差异比较和合并。 ## 在结果中包含 .NET 全局程序集缓存依赖项 对于 `dotnet` 和 `dotnet-framework`,SBOM 可能包含没有版本号的组件。通常,这些组件以 `System.` 前缀开头。 全局程序集缓存 (GAC) 依赖项(系统运行时依赖项)必须在项目的构建输出中可用,以便进行版本检测。让 dotnet 构建将 GAC 依赖项复制到构建目录的一种简单方法是将文件 `Directory.Build.props` 放置在项目的根目录中,并确保其内容包含以下内容: ``` True ``` 然后,使用 `--deep` 参数运行 cdxgen cli。 ## 许可证 在 Apache 2.0 许可证的条款下,授予修改和重新分发的权限。有关完整许可证,请参阅 [LICENSE][github-license] 文件。 ## 作为库集成 cdxgen [仅支持 ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c),可以在 deno 和 Node.js >= 20 中导入和使用 最小示例: ``` import { createBom, submitBom } from "npm:@cyclonedx/cdxgen@^9.0.1"; ``` 请参阅 [Deno Readme](./contrib/deno/README.md) 以获取详细说明。 ``` import { createBom, submitBom } from "@cyclonedx/cdxgen"; // bomNSData would contain bomJson const bomNSData = await createBom(filePath, options); // Submission to dependency track server const dbody = await submitBom(args, bomNSData.bomJson); ``` ## 贡献 如果您有兴趣提供帮助,请查看我们的 [未解决问题][github-contribute]。 ### Codeberg 镜像 该项目在 [Codeberg](https://codeberg.org/cdxgen/cdxgen) 上有镜像。用户可以使用以下 URL 克隆仓库: ``` git clone https://codeberg.org/cdxgen/cdxgen.git ``` 维护者接受针对 Codeberg 仓库的 Pull Requests (PR)。 在提出 PR 之前,请运行以下命令。 ``` corepack enable pnpm pnpm install:frozen # 使用 jsdoc 语法生成类型 pnpm run gen-types # 运行 biomejs formatter 和 linter 并自动修复 pnpm run lint # 运行 jest 测试 pnpm test ``` ### 测试主分支 使用 `pnpm add -g` 命令快速测试主分支。 ``` corepack pnpm bin -g corepack pnpm setup corepack pnpm add -g --allow-build @appthreat/sqlite3 https://github.com/cdxgen/cdxgen cdxgen --help ``` ### 测试主分支(无全局安装) 要在不全局安装的情况下快速测试最新的主分支,您可以在本地或临时环境中使用 `pnpm`。 ``` corepack enable pnpm install --prefer-offline pnpm dlx cdxgen --help ``` ## 赞助商
某些功能通过 [NGI Zero Core](https://nlnet.nl/core) 资助,这是一个由 [NLnet](https://nlnet.nl) 设立的基金,并得到了欧盟委员会 [下一代互联网](https://ngi.eu) 计划的财政支持。在 [NLnet 项目页面](https://nlnet.nl/project/OWASP-dep-scan) 了解更多信息。 [NLnet foundation logo](https://nlnet.nl) [NGI Zero Logo](https://nlnet.nl/core) cdxgen 是一个 OWASP 基金会生产项目。 [](https://owasp.org)
标签:AI应用开发, CycloneDX, Dependency Track, DevSecOps, Docker, GPT, IPv6支持, MITM代理, npm, SBOM, Web截图, 上游代理, 云安全监控, 人工智能安全, 依赖扫描, 合规性, 安全防御评估, 容器安全, 开源组件, 文档安全, 模型提供商, 漏洞管理, 硬件无关, 网络调试, 自动化, 自定义脚本, 请求拦截, 跌倒检测, 软件开发工具包, 软件物料清单, 静态分析