Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/devops-kung-fu/bomber
漏洞扫描器DevSecOps供应链安全
GitHubdevops-kung-fu/bomber

bomber

扫描软件物料清单 (SBOMs) 中的安全漏洞

查看仓库网站
6245647个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

bomber

GitHub release (latest by date) Go Report Card CII Best Practices codecov

bomber 是一款扫描 SBOM 以发现安全漏洞的应用程序。

概述

你向某个供应商索要其一个闭源产品的软件物料清单(SBOM),他们给了你一个 JSON 文件……然后呢?

你首先要做的事情就是查看 SBOM 中列出的组件是否存在安全漏洞,以及这些组件拥有何种许可证。这将帮助你识别使用该产品可能承担的风险。

查找 SBOM 中标识的组件的安全漏洞和许可证信息,正是 bomber 的用途。bomber 可以读取任何基于 JSON 或 XML 的 CycloneDX 格式,或者 JSON 格式的 SPDX 或 Syft 格式的 SBOM,并能很快告诉你是否存在漏洞。

目录

  • 开源 vs 闭源
  • 目的
  • 支持的 SBOM 格式
  • 提供者
    • 提供者支持
    • 提供者文档
  • 安装
    • Mac
    • Linux
  • 使用 bomber
    • 单个 SBOM 扫描
    • 整个文件夹扫描
  • 输出格式
    • HTML 输出
    • JSON 输出
    • Markdown 输出
  • 忽略漏洞
  • 过滤输出
  • 数据增强
    • 漏洞利用预测评分系统(EPSS)
  • 高级功能
    • 从 STDIN 扫描 SBOM
    • 环境变量
  • 实验性功能
    • 最高严重性返回码(实验性)
    • OpenAI AI 增强的 HTML 报告输出
  • 随意试试
  • 备注
  • 贡献
  • 软件物料清单
  • 赞助商
  • 致谢

开源 vs 闭源

软件可以分为开源或闭源。你可以在 Github 或任何公共源代码仓库中找到的第三方组件视为开源软件。从技术上讲,你在自己公司内部开发的软件也是开源的——它不是公开的,但你的内部团队可以看到。闭源软件同样可以是内部的,但这通常是你从外部供应商处购买的软件。

公司可以使用供应商提供的 SCA 工具(如 Github、Sonatype、Snyk 等)来扫描任何类型的开源软件并提供漏洞数据,甚至在某些情况下生成 SBOM。但它们目前还无法扫描你无法查看的闭源软件。这正是 SBOM 和 bomber 发挥作用的地方。SBOM 提供了你无法访问的软件的组成信息,而 bomber 则判断 SBOM 中是否有组件存在漏洞。

目的

我们创建 bomber 是为了扫描从供应商那里获得的闭源 SBOM。它也可以扫描开源 SBOM,从技术上讲,你也可以将 bomber 用作开源 SCA 工具。

支持的 SBOM 格式

目前有许多 SBOM 格式。bomber 支持以下格式:

  • SPDX
  • CycloneDX
  • Syft

提供者

bomber 支持多个漏洞信息来源。我们称之为 提供者。目前,bomber 默认使用 OSV,但你也可以使用 GitHub 安全公告数据库、Sonatype OSS Index 或 Snyk。

请注意,目前 OSV 是免费的,无需凭据即可使用;Sonatype OSS Index 免费但需要注册并获取令牌;而 Snyk 支持需要 Snyk 许可证。

除了从提供者收集的数据之外,bomber 还会用额外信息(如利用概率)对漏洞数据进行 增强。

提供者支持

请注意,每个提供者支持不同的生态系统,所以如果你在一个提供者中未发现漏洞,可以尝试另一个。生态系统简单地指包管理器或包的类型,例如 rpm、npm、gems 等。理解每个提供者可能报告不同的漏洞非常重要。如果不确定,可以多查几个。

如果 bomber 没有发现任何漏洞,这并不意味着没有漏洞。它只意味着所使用的提供者没有检测到,或者它不支持该生态系统。某些提供者返回的漏洞可能没有严重性信息。在这种情况下,严重性将被列为“UNDEFINED”。

提供者文档

bomber 的提供者文档位于:

  • OSV
  • GitHub 安全公告数据库
  • OSSINDEX
  • Snyk

安装

Mac

你可以使用 Homebrew 安装 bomber:

root@kitploit:~
brew tap devops-kung-fu/homebrew-tap
brew install devops-kung-fu/homebrew-tap/bomber

如果你没有 Homebrew,也可以下载最新版本(例如:bomber_0.4.1_darwin_all.tar.gz),解压文件后使用 bomber 二进制文件。

如果你愿意,可以将 bomber 二进制文件移动到 /usr/local/bin 目录或你路径中的任何位置。

Linux

要安装 bomber,请下载最新版本对应平台的包,然后本地安装。例如,在 Ubuntu 上安装 bomber:

root@kitploit:~
dpkg -i bomber_0.5.0_linux_arm64.deb

使用 bomber

你可以使用 bomber 扫描整个 SBOM 文件夹或单个 SBOM。bomber 不关心单个文件夹中是否有多种格式,它会自动处理。

注意,bomber 的默认输出是 STDOUT。以 HTML 或 JSON 格式输出的选项将在本文档后面描述。

单个 SBOM 扫描

root@kitploit:~
# 使用 OSV(默认提供者),无需任何凭据
bomber scan cyclonedx.sbom.json

# 使用需要凭据的提供者(ossindex)
bomber scan --provider=xxx --username=xxx --token=xxx [sbom.json]

如果提供者发现漏洞,你将看到类似以下的输出:

如果提供者未返回任何漏洞,你会看到一条消息,表示未发现漏洞。

注意: 使用指定提供者未发现漏洞,并不意味着没有漏洞。请尝试 bomber 支持的其他提供者。

整个文件夹扫描

当你从供应商处收到同一产品的多个 SBOM 时,或者想了解整个组织中的漏洞情况时,这种方式很实用。文件夹扫描会查找所有组件、去重,然后扫描漏洞。

root@kitploit:~
# 扫描一个 SBOM 文件夹(以下命令将扫描当前目录下名为 "sboms" 的文件夹)
bomber scan --provider=xxx --username=xxx --token=xxx ./sboms

你将看到与单个 SBOM 扫描类似的结果。

输出格式

bomber 以三种有用的格式输出数据。默认情况下,输出到命令行。对于增强的报告,你可以使用 --output=html 标志输出到 HTML。要输出为 JSON,请使用 --output=json 标志。使用逗号分隔的输出规范可以同时获得多种格式的输出:--output=html,stdout,json。

HTML 输出

如果你想生成一份包含详细漏洞信息的可读报告,可以使用 --output 标志将报告保存为 HTML 文件。

示例命令:

root@kitploit:~
bomber scan bad-bom.json --output=html

这将在当前文件夹中保存一个名为 "YYYY-MM-DD-HH-MM-SS-bomber-results.html" 的文件。如果你在浏览器中打开此文件,将看到类似以下的输出:

JSON 输出

bomber 可以使用 --output 标志以 JSON 格式输出漏洞数据。默认输出到 STDOUT。JSON 输出中包含的信息比终端显示的多得多。你可以看到包描述及其用途、漏洞名称、漏洞摘要等。

示例命令:

root@kitploit:~
bomber scan bad-bom.json --output=json > filename.json

Markdown 输出

bomber 也支持 Markdown 格式的输出。这与 HTML 输出非常相似,但将样式职责交给了 Markdown 渲染器(例如 GitHub)。输出文件格式为 "YYYY-MM-DD-HH-MM-SS-bomber-results.md"。

示例命令:

root@kitploit:~
bomber scan bad-bom.json --output=md

忽略漏洞

如果需要,你可以使用 --ignore-file 标志加载一个 CVE 列表,在漏洞输出中忽略这些 CVE。该列表需要采用特定格式,每个要忽略的 CVE 单独一行,如下所示:

root@kitploit:~
CVE-2022-31163
CVE-2022-23520

这里 提供了一个示例 bomber.ignore 文件。

要使用 bomber.ignore 文件,请使用以下语法:

root@kitploit:~
bomber --ignore-file=bomber.ignore scan bom.json

过滤输出

你可以使用 --severity 标志设置严重性级别,以返回特定严重性的漏洞。例如,如果设置 --severity=moderate,则只返回严重性为 MODERATE 及以上的漏洞。

例如,以下命令将只返回高和严重漏洞。

root@kitploit:~
bomber --severity=high scan bom.json

数据增强

bomber 能够增强从提供者获得的漏洞数据。我们已实现的第一个“增强器”用于 EPSS。

注意: 在 bomber 0.5.0 及以上版本 中,EPSS 评分不再是默认项。要显示 EPSS 分数,请确保使用 --enrich=epss 标志。

漏洞利用预测评分系统(EPSS)

EPSS 代表漏洞利用预测评分系统,是一个预测漏洞被利用概率的框架。EPSS 通常用于帮助识别高风险漏洞,以确定修复优先级。

EPSS 使用百分比表示概率。因此,如果你看到 94,该分数意味着该漏洞有 94% 的利用概率。理所当然,像 94 这样高的分数值得立即关注,而像 20 这样的分数优先级较低。

高级功能

如果你愿意,可以设置两个环境变量来存储凭据,从而无需在命令行中输入它们。请查看本 README 后面的环境变量信息。

从 STDIN 扫描 SBOM

如果你在 CI/CD 管道中使用 bomber,可以使用一条命令结合 Syft 生成并扫描 SBOM 以发现漏洞。可以执行类似以下命令:

root@kitploit:~
# 确保在命令末尾包含 - 字符。这会触发 bomber 从 STDIN 读取
syft packages . -o cyclonedx-json | bomber scan --provider ossindex --output json -

此命令创建 SBOM,通过管道传递给 bomber,并以 JSON 格式生成结果。

环境变量

如果你不想每次都输入凭据,可以将以下内容添加到 .bashrc 或 .bash_profile:

root@kitploit:~
export BOMBER_PROVIDER_USERNAME={{你的 OSS Index 用户名}}
export BOMBER_PROVIDER_TOKEN={{你的 OSS Index API 令牌}}

实验性功能

最高严重性返回码(实验性)

使用 --exitcode 标志,将以一个代表找到的最高漏洞严重性的退出码返回。如果不使用此标志,成功时退出码为 0,遇到错误时为 1。

假设没有错误,当使用 --exitcode 时,bomber 将返回以下值:

严重性返回码
UNSPECIFIED(当提供者返回不明确或没有信息时的状态)10
LOW11
MODERATE12
HIGH13
CRITICAL14

OpenAI AI 增强的 HTML 报告输出

bomber 现在包含一个实验性功能,可在 html 输出中增强漏洞描述。该功能会获取漏洞并将其描述转换为对非技术用户更易于理解的内容。

注意: 该功能目前处于主要 alpha 阶段。速度非常慢,且输出格式不佳。

要使用此功能,你需要提供 OpenAI API 密钥。你可以通过 --openai-api-key={{你的 OpenAI API 密钥}} 在 CLI 中传递该密钥,或添加环境变量:

root@kitploit:~
export OPENAI_API_KEY={{你的 OpenAI API 密钥}}

设置 OpenAI API 密钥后,你可以如下设置输出标志:

root@kitploit:~
bomber scan --output ai [sbom.json]

随意试试

如果你想要试用 bomber,可以在 test 文件夹中找到一些测试 SBOM。

备注

  • SBOM 中包含许可证信息的情况很少见。大多数情况下,Syft 等生成器需要像 --license 这样的标志。如果你需要许可证信息,请确保在获取 SBOM 时要求提供。
  • OSV 很棒,但它的 API 也不稳定。它们有一个批处理端点,本可以更快地获取信息,但写这篇文章时它还不能正常工作。bomber 需要每次发送一个 PURL 来获取漏洞信息,因此在大型 SBOM 中会花费一些时间。我们会持续关注。

贡献

如果你愿意为 bomber 的开发做出贡献,请参考本仓库中的 CONTRIBUTING.md 文件。贡献前请阅读 CODE_OF_CONDUCT.md 文件。

软件物料清单

bomber 使用 Syft 在每次开发者向此仓库提交代码时生成软件物料清单(前提是使用了 [Hookz](https://github.com/devops-kung-fu/hookz)且已在工作目录中初始化)。有关 CycloneDX 的更多信息,请访问这里。

bomber 当前的 CycloneDX SBOM 可在这里获取。

赞助商

感谢 bomber 的赞助商和支持者

致谢

非常感谢我们的朋友 ZERO 为 bomber 设计了标志。

感谢 Sonatype 提供了像 Sonatype OSS Index 这样强大的工具。

非常感谢我们的朋友和 bomber 贡献者 Snyk 创建了一个提供者,并编写了从 STDIN 处理 SBOM 的代码。你们太棒了。

EPSS 的描述来自 Nucleus 团队。谢谢!

下载工具