Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ndaal_public_SBOM_Auditor — 离线单二进制 Web 应用,可导入 CycloneDX、SPDX 和 syft SBOM,运行 CVE 扫描器集成,使用 EPSS、CISA-KEV 和 nuclei 丰富发现结果,并导出 SARIF、CSAF 和 PDF。 | Kitploit
工具/GitLabGitLab/vpierre/ndaal_public_sbom_auditor
防御工具危害指标 (IOC) 管理静态分析漏洞扫描器漏洞分析配置审计DevSecOps实用工具与框架威胁情报

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
供应链安全
GitLabvpierre/ndaal_public_sbom_auditor

ndaal_public_SBOM_Auditor

离线单二进制 Web 应用,可导入 CycloneDX、SPDX 和 syft SBOM,运行 CVE 扫描器集成,使用 EPSS、CISA-KEV 和 nuclei 丰富发现结果,并导出 SARIF、CSAF 和 PDF。

查看仓库网站
891天前尚未审核

ndaal SBOM Auditor

一个单二进制、离线的 Web 应用程序,用于调查 SBOM(软件物料清单)文件。上传一个 SBOM 或导入一个包含它们的文件夹,使用一组独立工具对每个进行分析,在一个本地 UI 中查看规范化后的发现结果,并以八种格式导出结果。无需安装,无需网络访问,无遥测。

English · Deutsch · Français · Español · Italiano

功能

  1. 摄取 — 在浏览器中上传一个 SBOM,或导入一个可配置文件夹中的每个 SBOM。可检测 CycloneDX(JSON/XML)、SPDX(JSON/tag-value 和 3.0 JSON-LD)以及 syft-json;文件按内容进行哈希并去重。
  2. 分析 — 对 SBOM 运行已启用的工具,每个工具都作为独立的子进程运行,受截止时间和并发限制约束。缺失的工具会显示为明显不同的跳过;已安装但无法启动或在 15 秒内没有应答的工具则是失败,并说明原因。两者都不会被报告为干净的结果。
  3. 发现结果 — 每个工具的输出都被规范化为一种通用形式,CVE 别名从工具的 GHSA/OSV 标识符解析而来,并按工具显示,带有严重性徽章。
  4. 评分 — 根据全部十七项 CISA 2026 最低要素对 SBOM 进行评级,区分供应商明确声明的 NOASSERTION 与单纯缺失的字段。
  5. 搜索 — 在整个语料库中,按名称或包 URL 查找哪些 SBOM 声明了给定组件。
  6. 导出 — 将分析结果写为 SARIF 2.1、SARIF 2.2、Markdown、ODT、DOCX、PDF 以及 CSAF 2.1 / 2.2 公告。导出会将所选格式持久化到服务器导出目录,每个都附带五个加密哈希附属文件;开始下载在内存中渲染相同格式并将其流式传输到浏览器——单个文档,或多个文档的 ZIP 包——不向磁盘写入任何内容。

已存储 SBOM 仪表板

主页(/)列出每个已存储的 SBOM,并随着语料库增长而保持可用:

  • 分页 — 每页 25 行,带有“显示第 X–Y 行,共 N 行”的说明以及上一页 / 页码 / 下一页控件。
  • 可排序列 — 点击名称、格式或组件表头以按该列排序;再次点击表头以反转方向。
  • 最新上传优先 — 列表以最近上传的 SBOM 开头,其时间显示在“最后上传”列中。上传一个已存储的 SBOM 会将其移回顶部;其详情页会在“最后上传”旁边保留原始的“摄取时间”。
  • 格式筛选 — 将列表缩小到一种格式(CycloneDX JSON/XML、SPDX JSON、SPDX 3.0 JSON、SPDX tag-value、Syft JSON 或 Unknown);重置按钮会清除筛选条件,同时保留当前排序。
  • 严重性列 — 最右侧的一列,位于“最后上传”之后,显示每个 SBOM 的单一最高发现严重性(严重、高、中、低或可忽略),或者当它尚无发现结果时显示“—”,并带有匹配的严重性筛选。
  • 全文搜索 — 一个搜索框,由 tantivy 全文索引支持,可匹配 SBOM 的名称、格式和规范版本,以及它所包含组件的名称和包 URL,因此诸如 log4j 或 openssl 之类的查询会找到每个包含该组件的 SBOM。查询有长度上限,并以宽松方式解析。

组件搜索

/components 一次性在整个语料库中回答反过来的问题——我的哪些 SBOM 声明了这个组件——按组件名称或精确包 URL。它读取在摄取时构建的专用组件索引,与仪表板的全文索引分开。

由于过期的索引会使一个确实受影响的 SBOM 被读作“未受影响”,该页面会说明有多少 SBOM 尚未建立索引,并提供重建索引,它会为恰好这些 SBOM 重新解析保留的字节。只有当该警告消失时,搜索才算完整。

“已索引”意味着索引已构建,这与“产生了行”并不相同:仅含元数据的 SBOM 不声明任何组件,因此它不贡献任何行,但仍完全已索引。存储按 SBOM 记录索引这一事实(schema v8,components_indexed_at),而不是从行的存在推断——推断意味着一个无组件的 SBOM 永远无法离开“尚未索引”集合,因此该警告在每次重建后仍然存在,而按钮永远将相同的 SBOM 报告为新近索引。升级会自动迁移,并回填任何已有行的内容;一次重建即可解决其余部分。

分析器组合

每个工具在运行时都是可选的,并在 PATH 上检测(用 SBA_TOOL_<NAME>_BIN 覆盖二进制文件)。发现结果从不依赖于任何单一工具。在每次扫描之前,工具会以其版本参数启动一次:没有二进制文件意味着 skip(not found on PATH),而无法启动的二进制文件,或在 15 秒内没有给出应答的二进制文件,意味着 fail 并附带该原因。

工具角色验证版本
syftSBOM 规范化器 / CycloneDX 1.6 转换器1.52.0
grypeCVE 匹配器0.119.0
trivy漏洞扫描器0.74.0
osv-scannerOSV 数据库查询2.4.0, 2.6.0
bomber独立组合匹配器0.5.1
bomdrift供应链漂移 / 域名抢注(SARIF)0.9.9
inspektrSBOM 漏洞扫描器(JSON)0.1.9
shieldbom离线嵌入式/IoT CVE 扫描器(SARIF)0.3.0
provenant许可证 / 版权 / 来源(ScanCode)1.0.10

“验证版本”是每次调用实际使用过的版本,既不是下限也不是固定版本:工具在运行时于 PATH 上解析,任何兼容版本都可以工作。osv-scanner 列出两个版本,是因为在 2.x 系列更改其日志记录后重新验证了 2.6.0——文档中记载的 scan --lockfile <input> --format json 形式未变,并且在发现结果时仍以非零状态退出,因此无需更改代码。

前八个工具贡献 CVE 形态的漏洞发现结果;provenant 不同——它报告许可证、版权、持有者和作者来源信息,审计器将其存储并显示为其自己的发现结果形态(每次运行一个“许可证与来源”部分,包含在 Markdown 导出中),而不是将其丢弃。

扫描器无法直接读取每种格式:bomber 仅消费 CycloneDX ≤ 1.6,并且没有任何扫描器读取 SPDX 3.0 JSON-LD。在这两种情况下,审计器会先通过 syft convert 将输入规范化为 CycloneDX,并在 syft 不可用时以有记录的原因跳过,而不是让工具报告零个包。grype 的漏洞数据库每次运行刷新一次(带外),因此例行的过期会变成一次全新扫描,而不是一次失败的扫描。

漏洞富化

分析之后,每个 CVE 形态的发现结果都会用从 vulnlookup 服务(默认 https://vulnlookup.ndaal.eu)拉取的三个真实信号进行富化:

  • EPSS — 利用概率分数及其百分位。
  • CISA-KEV — 将该 CVE 标记为已知被利用的标志。
  • nuclei — 是否存在公开的利用模板,及其严重性。

每个发现结果都会显示其 KEV、Nuclei、EPSS 和 Source 值,其中 Source 链接回 vulnlookup 记录,并且发现结果按最紧急优先排序:已知被利用(KEV)条目领先,然后是那些具有更高 EPSS 百分位的;没有富化的发现结果保持分析器产生它们的顺序。富化会进入每种导出格式——SARIF 2.1 / 2.2、Markdown、ODT、DOCX、PDF 和 CSAF 2.1 / 2.2,其中 CSAF 将 EPSS 作为原生指标携带,并将 CISA-KEV 和 nuclei 记录为注释——并且导出表单现在默认勾选每种格式。

在设置 → 漏洞富化下配置它:一个开/关切换(默认启用)以及最多三个 vulnlookup 源,每个都有基础 URL、TCP 端口和 QUIC 端口(空白端口视为 443)。源 1 和源 2 默认使用公共的 https://vulnlookup.ndaal.eu 端口 443;源 3 默认使用回环地址 https://127.0.0.1,位于本机自己的 8680(TCP)/ 8681(QUIC)端口上,因此同址部署的 vulnlookup 开箱即是一个可用的回退。这些源按顺序尝试——第一个是主源,其他是回退。

这些查询由审计器的服务器进程发起,而不是由浏览器发起,因此它运行所在的主机本身必须通过 HTTPS 访问该源:客户端仅使用 TLS 1.3,并信任操作系统的 CA 捆绑包。如果无法做到,每个发现结果都会保持 Not enriched,而分析仍会完成,服务器日志会显示 post-analysis enrichment finished,并带有非零的 failed= 计数(或者当客户端完全无法启动时显示 post-analysis enrichment failed)。富化在每个分析器都完成后运行一次,因此各列会在运行完成后不久填充。

阅读结果时,请检查每个发现结果所匹配到的包。一个没有包的发现结果上的 KEV 徽章——例如 affects fedora @ 40——来自与操作系统发行版的匹配,而不是已安装的包,通常并不适用。针对 Go 标准库报告的 CVE-2020-0601 是同类不匹配:它是一个 Windows CryptoAPI 缺陷,Go 在 1.13.6 中修复了它。

要在一个发现结果上看到全部三个信号,请分析来自 ndaal_public_sbom_examples 仓库的 jenkins:2.60.3 镜像 SBOM(example/anchore-sbom-examples/results/docker.io_library_jenkins:2.60.3/sbom/):Spring4Shell(CVE-2022-22965)和一个 Jenkins Stapler RCE(CVE-2018-1000861)各自都带有一个 KEV 徽章、一个严重 nuclei 模板以及高于 0.98 的 EPSS。

用于 csaf-crud 的 CSAF 草稿(进行中)

GitLab 工作项 #2 添加了一个创建 CSAF 文档操作:一个 SBOM 的审计发现结果会变成一个草稿 CSAF 2.1 公告(状态 draft,版本 0.1.0,跟踪 id ndaal-sba-draft- 加上该 SBOM 的 SHA-256 的前 16 个十六进制数字),并提交给 csaf-crud 服务,例如 csaf.ndaal.eu。此构建包含草稿生成器和设置 → CSAF 上传卡片:三个端点,按顺序尝试(csaf.ndaal.eu 两次,然后是位于 https://localhost:8180 的本机 csaf-crud),以及一个仅对回环端点信任自签名证书的选项。SBOM 页面上的按钮、草稿下载和 --export-csaf 命令行选项将在后续阶段推出。

安全态势

  • 传输: 仅 HTTPS,TLS 1.3(rustls + aws-lc-rs),优先提供后量子密钥交换(X25519MLKEM768)。自签名开发证书,在启动时重新生成;支持操作员提供的 PEM 文件。
  • 内存安全: 用 Rust 编写,带有 #![forbid(unsafe_code)];lint 策略在生产代码中拒绝会 panic 的快捷方式、未检查的算术和未检查的索引。
  • 文件系统限制: 所有数据 / 导入 / 导出 I/O 都受 cap-std 能力句柄限制(路径遍历、符号链接和 TOCTOU 类问题均已封闭)。存储的文件名由服务器派生,绝不来自客户端提供。
  • 存储加密(可选): XChaCha20-Poly1305 在存储的 SBOM 字节和原始工具输出驻留磁盘时对其进行密封(--encryption-key-file)。
  • Web 加固: 对每个响应应用纵深防御响应头,哈希固定的内容安全策略,对每个 POST 进行同源检查,以及请求正文大小限制。
  • 无遥测,无后门。 一切都在本地运行。符合 TeleTrusT“IT Security made in Germany / Europe”标准。

本周期加固

  • 操作系统信任存储的单一读取器 — 自更新器自行读取 macOS 信任存储,位于富化客户端所持锁之外。对该存储的并发读取会使 1.6.27 服务器崩溃,并且在负载下会返回空结果(在负载平均值 400 时为 120 次中的 102 次)。现在每个客户端都通过一个加锁的加载器读取它,并且空存储会指明操作系统自身的错误。
  • 诚实的分析器状态 — 一个已安装但无法启动,或在 15 秒内不应答其版本探测的工具,现在是一个 fail 并附带该原因,而不是一个读取为 not found on PATH 的 skip。
  • CSAF 2.1 一致性 — 信息性公告不再携带空的产品树,并且现在具有 OASIS 测试 6.1.27.2 所要求的外部引用;没有任何分析器描述的漏洞会获得一个回退注释(6.1.27.5)。
  • Multipart DoS 上限 — 上传解析器拒绝任何长于 RFC 2046 的 70 个字符的 multipart 边界,并用线性双向搜索定位它,封闭了一条 O(body×boundary) 的 CPU 耗尽路径。
  • 故障关闭的存储数据解密 — 一个无法解密的加密 blob(密钥错误或篡改)现在会引发硬错误,而不是被读取为一个报告“无发现结果”的空文档。
  • CVSS 验证 — 分析器 CVSS 基础分数在到达生成的 CSAF 或 SARIF 之前,若为非有限值或超出 [0, 10],会被钳制或拒绝,并且跨工具合并会保留最强的分数。
  • TLS 密钥加固 — --tls-key 拒绝 PKCS#1 RSA 密钥(no-RSA 策略),并且在 Unix 上拒绝组可读或全局可读的密钥文件。
  • 导出下载扩展名门控 — GET /export/download 仅提供具有可识别的导出或校验和附属文件扩展名的名称,因此配置错误的导出目录无法交出系统文件。
  • h2 升级(RUSTSEC-2026-0258) — 捆绑的 HTTP/2 栈更新到 0.4.18,以应对无界的空 DATA 帧;cargo audit 干净。

构建与运行

从 crates.io 安装已发布的版本——cargo install 从源代码构建它,cargo binstall 从 GitLab 发布获取预构建的二进制文件:

cargo install sbom-auditor     # build from source
cargo binstall sbom-auditor    # prebuilt GitLab-release binary

或者直接构建此检出(需要较新的稳定版 Rust 工具链):

cargo build --release
./target/release/sbom-auditor
下载工具