cdxgen-插件-宾
二进制插件,用于扩展其容量 cdxgen 化学反应,开源BOM(Bill of Materials)生成器. 这个寄存器构建,软件包,并分发cdxgen所引用的本地助手二进制来完成需要语言专用工具,操作系统仪表,或密码检查的深度分析任务.
文档: 本 README 中的指南和教程在 文档网站,每个帮助者都有专门的指南: golem, rusi, kosi, cdxrs, cdxui, 信任检查者 三维克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克 网站来源居住在 文档/。 。 。 .
目的
cdxgen通过分析项目源代码,容器图像,以及主机环境,以CypromaDX格式生成BOM. 然而,某些分析领域需要专门的本土二进制,超出纯节点.js应用程序所能提供的:
- 集装箱和外地业务包库存 需要本地访问软件包管理器( APK、 DPKG、 RPM) 和文件系统结构
- 操作系统仪器 需要来自主机的实时进程、文件和网络数据
- 语言特定语义分析 需要编译器和类型系统(Go SSA, Rust HIR/MIR, Swift SourceKit)
- 加密证据收集 取决于本地 TLS 堆栈和证书检查
- 编码和信任锚地检查 需要平台内设 API(macOS 代号, Windows 认证码)
此寄存器将这些本地二进制捆绑到可安装的 npm 包中, 这样当触发适当的分析模式时, cdxgen 可以透明地引用它们 .
捆绑的助手
三维克克克正
周围的自定义包装 特里维 为cdxgen的SBOM生成工作流程进行了优化. Trivy原本是开源脆弱性扫描仪,但这种包装器是专门为OS包盘而设计的,而不是脆弱性扫描.
它会做什么:
- 从容器图像或已拆卸的根文件系统生成 CycroundDX SBOMS
- 收集含有浓缩元数据的OS包信息(APK、DPKG、RPM)
- 在 SBOM 生成过程中避免网络访问的下行模式
- 限制语言包集到 Go 模块和 Go 二进制
- 除非启用调试模式, 否则会禁用噪音输出
定制于股票 Trivy :
- 只显示
image, (中文(简体) ),rootfs,以及version命令 - 默认为 CirpDX SBOM 输出格式
- 部队离线、无更新、无进展
- 丰富 OS 软件包组件,包括能力/提供元数据,已安装命令名,已安装命令路径,已安装文件计数,已安装文件路径,已包信任状态元数据(architecture,由来地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地地
环境变量控制:
TRIVY_CDXGEN_INCLUDE_OS_CAPABILITIES(default: true) - 释放支持的APK,DPKG和RPM rootfs扫描的能力属性TRIVY_CDXGEN_INCLUDE_OS_COMMANDS(default: true) - 为OS软件包发送已安装命令和已安装命令Path属性TRIVY_CDXGEN_INCLUDE_OS_FILES(default: true) - 每个OS包安装的文件都会发出一个已安装的文件属性
支持的平台 : linux-amd64, linux-arm64, linuxmusl-amd64, linuxmusl-arm64, linux-riscv64, linux-arm, 窗口-arm64, darwin-arm64, darwin-amd64, ppc64
奥斯卡
一个包裹周围 奥斯卡, SQL 动力操作系统仪表平台. Osquery将操作系统暴露为一个高性能关系数据库,允许cdxgen查询OBOM(操作系统材料单)收集的活机主机数据.
它会做什么:
- 收集现场主机进程信息(运行进程、进程元数据)
- 从主机OS安装的软件包
- 查询文件系统状态和配置
- 提供网络连接和套接字信息
- 启用实时OS级证据收集,用于合规和安全审计
支持的平台 : linux-amd64, linux-arm64, darwin-arm64, 窗口-amd64, 窗口-arm64
源码
Swift 源分析工具从 源码 Kitten,这是与苹果公司SourceKit服务互动的指令行工具和框架. SourceKit通过JSON API提供斯威夫特语言语义学(parsing,索引化,语法突出).
它会做什么:
- 提供 Swift 源代码解析和语义分析
- 允许 cdxgen 通过 SourceKit 发现 Swift 包依赖性
- 从斯威夫特项目提取模块和框架信息
- 舰只用于macOS:Linux Swift没有稳定的ABI,因此预建的Linux 二进制无法加载另一个工具链的SourceKit(文件/文件(中文(简体) )
支持的平台 : darwin-arm64, darwin-amd64 (英语)
多赛
这个 Dotnet 来源和议会检查员 (多赛)是一个从来源和集合中列出命名空间和方法细节的工具. 它提供.NET特有的语义分析,类似于SourceKitten对斯威夫特所做的.
它会做什么:
- 检查.NET的集合和命名空间和方法发现的源代码
- 允许 cdxgen 通过反射和源分析列出.NET 项目依赖性
- 支持汇编的组件(.dll,.exe)和源一级分析
支持的平台 : linux-amd64, linux-arm64, linux-arm64, linux-musl-amd64, dawin-amd64, darwin-arm64, 窗口-amd64, 窗口-arm64
信任检查者- cdxgen
自定义 cdxgen 维护的助手, 执行面向信任的 OS 和 root 文件系统检查 。 它释放出稳定,可合并的JSON而不是完整的CirponDX文件,旨在与cdxgen的SBOM浓缩管集成.
它会做什么:
- rootfs 模式: 检查一个已解开的根文件系统内的信任锚, 包括信任的密钥环材料和证书存储
- 路径模式:检查选定应用程序或二进制路径的代码签名和公证状态
- 主机模式: 检查主机信任姿态, 如门卫( macOS) 或 WDAC 积极政策( Windows)
JSON 输出结构 :
该工具返回一个带有三个可能的顶级密钥的 JSON 对象 :
materials- 有SHA1、SHA256、算法、关键强度、指纹和信任域元数据的信托材料(钥匙、证书)inspections- 特定二进制路径的代码签名/注释状态,属性如下:cdx:darwin:codesign:*, (中文(简体) ),cdx:darwin:notarization:*, (中文(简体) ),cdx:windows:authenticode:*hostFindings- 拥有以下属性的托管状态发现cdx:windows:wdac:activePolicyCount, (中文(简体) ),cdx:darwin:gatekeeper:*
支持的平台 : linux-amd64, linux-arm64, linuxmusl-amd64, linuxmusl-arm64, darwin-arm64, darwin-amd64, 窗户-amd64, 窗户-arm64
闪光弹
Go Library Ecument Mapper (Golem)是Go源树的静态分析器. 它与Go工具链一起加载一个模块或工作空间,解决类型,在需要时构建SSA,并写出关于代码结构,依赖性,调用关系,加密使用,以及所选数据流的紧凑JSON报告.
它会做什么:
- 来源证据:记录导入,声明,类型解析的库用法,构建指令,本地侧车文件,服务和端点线索,安全敏感的API信号
- 调用图表: 使用 Go SSA 构建调用图, 支持静态, CHA( 分类等级分析), RTA( Rapid Type Analysis), 和 VTA( 可变类型分析) 模式
- 数据流动分析:基于SSA的tint切片器,用于跟踪源到汇流进行安全分析(用于处理执行的CLI输入,请求响应输入,用于日志的环境数据,用于加密API的秘密材料)
- 密码学证据:分类加密 API 使用,识别弱原始(MD5,SHA-1,DES),检测 TLS 配置错误(InsecuritySkipVerify),并发现关键材料指标
调用图表模式 :
| 模式 | 执行情况 | 实际行为 |
|---|---|---|
| 无 | 无图 | 最快模式 。 报告只提供证据. |
| 静态 | 静态。 调用图形 | 速而决断. 直通电话可靠,动态发送有限. |
| 车 | 查尔 调用图形 | 更保守的界面发送. 通常更多的边缘. |
| 转 | r. 分析 | 起源于发现的内源和主根. 对可执行可达性有用. |
| 维塔 | 维塔。 调用图形 | 在静态图中,使用可变类型分析相对于可达到的函数. 通常更准确. |
数据流模式 :
security- 跟踪与安全有关的流动(对执行的投入、对记录的投入等)crypto- 跟踪加密数据流动all- 包括所有纹饰流动,包括第三方模块缓存路径
支持的平台 : linux-amd64, linux-arm64, linuxmusl-amd64, linuxmusl-arm64, darwin-arm64, darwin-amd64, 窗户-amd64, 窗户-arm64
鲁西
Rust Source Victor(Rusi)是用于收集证据的Rust代码分析引擎. 它旨在帮助下游的工具和审查者回答关于Rust寄存器中有哪些包,文件,符号和进口的问题,API看起来对安全有敏感认识,什么密码库看起来与CBOM式的审查有关.
它会做什么:
- 稳定后端:从工作空间/包装布局中发现 Rust 文件, 解析有合成的源, 记录导入, 声明, 库/ API 使用线索, 和安全信号, 构造一个定源级调用图, 并进行轻量级的程序间数据流分析
- 编译后端: 使用嵌入式夜间锈蚀包和MIR/HIR生成的证据进行类型解析的调用证据,发送特征和dyn调度的元数据,本地互通证据,更丰富的加密证据,以及MIR知情的数据流证据
- 密码学证据:确认常见的密码家庭(sha2,sha1,md5,blake3,aes-gcm,chacha20poly1305,hmac,pbkdf2,argon2,rsa,ed25519-dalek,生锈,jsonwebtoken)
- 数据流动分析: 跟踪环境的源到汇流, CLI, 文件, 和 HTTP 源; 进程执行, 文件系统写入/删除, 网络请求/连接, SQL, 和 HTML 响应汇
自定义模式支持 :
Rusi可以将自定义的JSON模型与内置的稳定数据流包合并通过 --patterns 旗下,允许用户定义自定义源、汇和传递:
{
"sources": [
{ "pattern": "mycrate::config::read_key", "category": "custom-source" }
],
"sinks": [
{
"pattern": "mycrate::shell::run",
"category": "custom-command",
"relevant_arguments": [0]
}
]
}
支持的平台 : linux-amd64, linux-arm64, linuxmusl-amd64, linuxmusl-arm64, darwin-arm64, 窗户-amd64
科西语
Kotlin Source Victor(kosi)是用于收集证据的克特林/JVM代码分析引擎,克特林兄弟会(Go)和rusi (Rust). 它回答一个Kotlin项目,其中存在源/模块/源集(Gradle,Maven,Android变体,Kotlin多平台,全部被解析为文本而从未被执行),它导入,声明和库调用,函数调用,不可信数据到达危险的调用,应用程序暴露的终点,以及它使用什么密码. 两个层次,语法和解决,共享一个 kosi/1 报告合同.
它会做什么:
- 语法后端: 仅通过 Kotlin- 编译器进行解析, 且无分级路径, 且不执行; 发出决定性的、 排序的、 字节相同的
modules, (中文(简体) ),packages, (中文(简体) ),files, (中文(简体) ),imports, (中文(简体) ),declarations, (中文(简体) ),usages, (中文(简体) ),diagnostics财务报告和审定财务报表stats - 已解析后端: Kotlin和Java PSI 具有类型分辨率,与类路径相抗,添加调用图和可达性(
cha编号 :sealed编号 :rta编号 :vta),外观敏感相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相相相接相接相接相接相相相接相相接相接相相接相接相接相接相接相接相接相接相接相接相接相相接相相相相接相Flow通过依附字节编码传播可选的纹章(--deps),20个框架加Android 显示组件的输入端点,带有配置解析值的输出服务/URL,以及加密/CBOM - 真正的差距:来源覆盖,无根据端点,深度封顶,预算出行和堆栈溢出,都是每个有名的诊断与计数,从不沉默的零
- 版本政策: 在运行时从捆绑的编译器中读取可解析语言版本频段; 宣告旧版本的项目被夹住
kotlin-language-version诊断而不是拒绝 - 原生图像: GraalVM 所建单二进制(参见
thirdparty/kosi/docs/BUILD.md(中文(简体) )
在没有kosi 二进制(ppc64le,32-bit arm)的平台上,cdxgen倒回了自己的JS-侧式结构克特林分析,并带有JDK 21+的出场 kosi-portable.jar; 空白在 scripts/plugin-platform-support.sh从不沉默.
kosi-portable.jar 是架构独立的,而不在每平面 npm 包内运出。 每一份发行都作为GitHub发行资产与本地人并肩发行 ghcr.io/cdxgen/cdxgen-plugins-bin:kosi-portable运行它与 java -jar kosi-portable.jar (JDK 21+),或用:
oras pull ghcr.io/cdxgen/cdxgen-plugins-bin:kosi-portable
支持的平台 : linux-amd64, linux-arm64, linuxmusl-amd64, linuxmusl-arm64, darwin-arm64 (窗口-amd64, 窗口-arm64和 darwin-amd64尚未建成)
(简体中文)
一个基于Rust的终端用户界面(TUI),用于交互式地探索CyroundDX Bill of Materials (BOM)文件. cdxui提供了快速,键盘驱动的环境来导航复杂的BOM数据,甚至可以产出cdxgen来进行活生成,同时观察其内部推理痕迹.
它会做什么:
- 装入预生成的 CirponDX JSON BOM 文件(1.4至2.0版),用于交互式探索
- 提供摘要、组件、密码资产、服务、编制工作流程和依赖树的制表视图
- 使用实时日志流、思维面板可视化和活性追踪,支持 BOM 的活性生成
- 允许全文搜索、列排序和类型过滤所有 BOM 组件
- 详细属性、证据、外部参考和散列
支持的平台 : linux-amd64, linux-arm64, linuxmusl-amd64, linuxmusl-arm64, darwin-arm64, darwin-amd64, 窗户-amd64, 窗户-arm64
cdxrs (缩写)
生地气旋DX BOM工具. cdxgen 路线 validate 财务报告和审定财务报表 fetch
当二进制存在时,通过 cdxrs 的相位,然后返回到它自己的相位
在不执行时执行 JavaScript .
倒背是使cdxrs 安全处理 作为可选,它也是
缺少二进制是危险的: cdxgen 不断产生正确的输出, 所以
没有报告加速器从未运行。 cdxgen's (英语)
contrib/rs-disable-golden-test.js 声称: CDXGEN_RS_DISABLE=all
生成字节相同的输出,这是允许倒计时的保证
静一静.
它会做什么:
- 对照销售商旋风DX 1.6和1.7计划验证BOM,加 语义规则 schema 无法表达( purl 良好形状, SPDX) 表达式、元数据完整性)
- 覆盖气旋DX 1.7 添加 cdxgen 释放: root- level
citations, (中文(简体) ),algorithmFamily编号 :ellipticCurve,以及metadata.distributionConstraints.tlp - 执行按东道主计算货币限额的批量登记元数据, a TTL 和大小绑定在磁盘上缓存, 以及证书编辑
- 圆通 BOMs 字节相同: I/O路径使用未打入的JSON值,所以 未知的字段存活, 密钥顺序是决定性的
cdxgen 指针 cdxrs 由 主要 版本。 不匹配不是错误: 桥 一次日志并使用 JavaScript 路径, 因此在 cdxgen 之前释放此软件包 当那个重大改变.
见 第三方/cdxrs/README.md 对于命令 表面,协议和退出代码.
支持的平台 : linux-amd64, linux-arm64, linux-arm64, linux-riscv64, linuxmusl-amd64, linuxmusl-arm64, darwin-amd64, darwin-arm64, 窗户-amd64, 窗口-arm64
安装
包裹被cdxgen所间接消耗. 安装 cdxgen, 将此插件安装为可选依赖 :
npm install -g @cdxgen/cdxgen
cdxgen 自动使用来自全局节点 模块路径的插件来丰富某些项目类型的SBOM输出,如多克容器,斯威夫特项目,去项目,Rust项目,以及主机级扫描等.
插件外观和证明包
每个包装 plugins/ 目录包括:
sbom-postbuild.cdx.json- 建设后CirponDX的捆绑助手清单plugins-manifest.json- 轻量级出处捆绑,内有生成时间戳、软件包身份和每插件元数据(purl、版本、散列、二进制路径和合并的SBOM参考)
除了Osquery之外,每个帮手 都自己上船 sbom-<helper>-postbuild.cdx.json 旁边的二进制,即显示的 sbomFile 名称和建设后库存合并。 Go帮手的SBOMS只保留他们的二进制构建信息列表,再加上Go标准库它们所建的. 多赛的读自 deps.json 在它的.NET单文件二进制中. 鲁斯特和克特林两家都省略了开发和测试依赖性,没有帮助者的SBOM包括其测试固定装置. Osquery没有:它的发行没有出版SBOM,而其捆绑的平台的构建中包含的哪个取决于Osquery的CMake选项.
cdxgen 读取 plugins-manifest.json 显示时自动显示, 这样生成的 BOM 可以记录更精确的助手工具身份/ 版本数据 metadata.tools。 。 。 .
名单是 只有数据. cdxgen 不执行命令、脚本或路径;文件解析为JSON,仅用于收紧帮助者出处 metadata.tools。 。 。 .
分发通道
帮助二进制通过多个渠道提供方便自动化的检索:
npm 软件包
平台专用 npm 软件包发布到 npm 下 @cdxgen/cdxgen-plugins-bin 范围。 每个平台软件包(linux-amd64,darwin-arm64等)包含适合平台的辅助工具二进制.
GitHub 发布
原始助推二进制与他们的SHA-256侧车并列上传. 例如: golem-linuxmusl-amd64 财务报告和审定财务报表 golem-linuxmusl-amd64.sha256。 。 。 .
GHCR / ORAS 数据
使用ORAS向GitHub集装箱登记处发布个人帮助二进制. 每个二进制都有对应二进制文件名的自有标记. 例如:
ghcr.io/cdxgen/cdxgen-plugins-bin:golem-linuxmusl-amd64ghcr.io/cdxgen/cdxgen-plugins-bin:trustinspector-cdxgen-linuxmusl-arm64
ORAS标记包括了二进制,它的SHA-256检查和整齐的侧车,以及可选的二进制本身的旋风DX SBOM.
构建进程
通过 GitHub 动作工作流程和本地构建脚本来安排构建进程:
- 第三方建筑: 每个第三方工具都有自己的构建脚本为目标平台编译二进制
- 人工装入: 二进制复制到
plugins/带有特定平台命名的目录 - 压缩: UPX 用于酌情压缩二进制
- 校验和生成: SHA-256 为所有二进制生成校验和
- 元数据生成: 一个节点.js脚本生成
sbom-postbuild.cdx.json财务报告和审定财务报表plugins-manifest.json - 大小验证: 执行软件包大小限制,以保持在 npm 范围内
- 释放: npm 软件包以出处发布,并为单个二进制创建 ORAS 标签
UPX 压缩
二进制使用UPX(eXecutables的Ultimate Packer)进行压缩,并使用LZMA压缩来减小包大小. 这对特瑞和奥斯克利等大型二进制格外重要.
安全考虑
未信任的输入处理
所有帮助者二进制将分析过的寄存器视为不可信输入. Golem 和 Rusi 不执行 go:generate 或者说 cargo:generate 命令。 他们将这些指令记录为只是证据.
秘密处理
Golem和Rusi没有将原始的秘密内容复制到报告中。 这包括环境值,命令输出,嵌入式文件内容,私人密钥,令牌,密码,以及字串值,这些值似乎包含密码材料. 它们可以报告名称,类别,计数,符号,文件路径,源范围,以及材料类型.
网络访问
Golem避免了由其自身逻辑启动的网络访问. 包加载使用本地的Go工具链和模块环境,因此模块下载仍然可以根据用户的Go配置进行. 在分析不可信或敏感的项目时, 使用一个可控模块缓存和代理配置运行 .
报告敏感性
即使忽略了原始机密,报告也可以包含敏感的元数据,包括绝对源路径,软件包和模块路径,私人寄存器名称,内部服务名称,端点路径,函数名称,从属名称,以及源行号. 将报告视为内部分析产出,除非这些报告已经为预定对象审查和编辑.
静态分析限制
Golem和Rusi的产出是确定优先次序的证据。 调查结果不能证明可开采性,没有调查结果也不能证明安全。 静态分析可能错失依赖于运行时间配置,反射,插件,动态加载,生成的代码不存在于已装入的文件,被所选的构建标记所排除的平台特定文件,或者无法加载的软件包的行为.
使用大小写
软件供应链安全
安全分析人员利用这些插件来建立全面的SBOMS,不仅收集依赖性信息,而且收集供应链风险评估所需的结构证据. 将容器OS包(trivy),主机级流程和包数据(osquery),以及语言特有源分析(golem,rusi)等组合起来,提供了多层次的软件组成.
加密合规性审计
CBOM(计算机材料单)生成是谷歌和鲁西的主要使用案例. 两种工具都对密码库进行分类,识别出弱原始人,检测出TLS错配置,并发现关键材料指标. 这使各组织能够在不进行人工代码审查的情况下审计其加密姿态.
遵守监管(NIST SSDF、欧盟网络复原力法)
信任检查器插件使合规团队能够验证代码签名政策,证书权威信任主锚,以及主机级的安全态势. 这对于受NIST SP 800-218(SSDF)或欧盟网络复原力法约束的组织特别相关,它们要求证明安全的发展做法.
遵守问题东道一级清单
osquery可以实现超过软件包管理器的实时OS级库存. 对于需要核实运行系统与其申报的软件清单相符或需要检测未经授权的流程和配置的组织,Osquery提供所需的活数据.
集装箱安全基线
Trivy-cdxgen包装机提供了一种快速而离线的方法来生成容器OS包库存而不会触发脆弱性扫描. 这对于各组织来说是有用的,因为各组织需要为遵守要求而跟踪操作系统包的构成情况,而不必进行充分的脆弱性扫描.
许可证
麻省理工学院