mcpField
G
generating-and-analyzing-sboms

generating-and-analyzing-sboms

github.com/mukul975安全35.2k97 次安装8 周前更新
代码仓库

关于 generating-and-analyzing-sboms

这是一项使用 Syft、Grype 和 Cosign 生成并分析软件物料清单的安全技能,面向安全与开发团队。它涵盖依赖盘点、漏洞检测及签名证明的验证。

主要功能

  1. 01生成 CycloneDX 和 SPDX SBOM
  2. 02扫描 SBOM 与镜像中的漏洞
  3. 03设置 CI/CD 严重性门槛
  4. 04签署并验证 SBOM 证明
  5. 05重新扫描已存储 SBOM 以发现新 CVE

适用场景

  1. 01盘点应用和容器的依赖
  2. 02发现软件制品中的已知漏洞
  3. 03按严重性门槛阻止构建
  4. 04验证镜像来源证明后再予以信任

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill generating-and-analyzing-sboms

安装后在 Claude Code 中输入/generating-and-analyzing-sboms确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
standards.md
scripts/
agent.py

详细介绍

生成和分析 SBOM

仅限授权用途: 仅为你拥有或获准评估的软件和镜像生成并扫描 SBOM。请将 SBOM 视为敏感的清单数据——它们会暴露你的依赖攻击面。

概述

软件物料清单(SBOM)是对软件中的所有组件、库和依赖项进行正式、机器可读的清单——相当于供应链版的配料标签。SBOM 是防御供应链攻击的核心(CISA 的 SBOM 计划、美国第 14028 号行政令),因为看不到的东西就无法修补。当前占主导地位的两种 SBOM 标准是:

  • CycloneDX — OWASP 标准,针对安全用例进行了优化(漏洞、VEX、依赖关系)。
  • SPDX — Linux Foundation / ISO 标准(ISO/IEC 5962),擅长许可证和来源追溯。

参考开源工具链来自 Anchore:

  • Syft 可从容器镜像和文件系统生成 SBOM(CycloneDX、SPDX 或其原生格式)。
  • Grype 将 SBOM(或镜像)与漏洞数据库进行匹配,以查找 CVE。
  • Cosign(Sigstore)可为 SBOM 签名,并将其作为签名证明附加到镜像上,以实现防篡改的来源追溯。

本技能介绍如何生成符合标准的 SBOM、将其与漏洞情报关联,以及将工作流集成到 CI/CD 中。

适用场景

  • 为应用和容器镜像建立并维护组件清单。
  • 持续检测已知漏洞(包括针对现有制品新披露的 CVE)。
  • 满足采购和法规对 SBOM 的要求(CISA、EO 14028)。
  • 生成签名的 SBOM 证明,以便下游建立供应链信任。

前提条件

  • 安装 Syft 和 Grype(官方安装脚本):
    curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin
    curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin
    
  • 安装 Cosign,以便签名和生成证明:
    # via Go, or download a release from https://github.com/sigstore/cosign/releases
    go install github.com/sigstore/cosign/v2/cmd/cosign@latest
    
  • 可访问目标镜像或源代码;如需签名,还需访问注册表并拥有密钥或无密钥 OIDC。

目标

  • 从镜像和目录生成 CycloneDX 和 SPDX SBOM。
  • 使用 Grype 扫描 SBOM 和镜像以查找漏洞。
  • 根据严重性阈值设置 CI/CD 构建门禁。
  • 使用 Cosign 为 SBOM 证明签名并附加该证明,然后进行验证。

MITRE ATT&CK 映射

ID官方技术名称与本技能的相关性
T1195.001供应链攻击:破坏软件依赖项和开发工具生成 SBOM 并关联漏洞,可揭示遭到破坏或存在漏洞的依赖项——这些正是攻击者利用此技术时会攻击的攻击面。

这是一项防御性供应链技能;此映射反映了它旨在检测和缓解的对手技术。

工作流

1. 从容器镜像生成 CycloneDX SBOM

-o <format> 用于选择输出格式;cyclonedx-json 面向安全用途。

syft alpine:latest -o cyclonedx-json=alpine.cdx.json
2. 从源代码目录生成 SPDX SBOM

使用 dir: 源来清点已检出的代码仓库;使用 spdx-json 生成符合 SPDX 标准的 SBOM。

syft dir:. -o spdx-json=app.spdx.json
3. 一次生成多种格式

一次生成两种标准格式,以供不同使用方使用。

syft myorg/app:1.4.2 \
  -o cyclonedx-json=app.cdx.json \
  -o spdx-json=app.spdx.json \
  -o table
4. 使用 Grype 扫描 SBOM 以查找漏洞

将生成与扫描分开后,每当有新的 CVE 披露时,都可以重新扫描已存储的 SBOM,而无需重新构建。

# Scan an existing SBOM
grype sbom:app.cdx.json -o table

# JSON report for automation
grype sbom:app.cdx.json -o json > app.vulns.json

也可以直接扫描镜像(Grype 会在内部生成 SBOM):

grype myorg/app:1.4.2 -o table
5. 根据严重性设置 CI/CD 门禁

--fail-on 会在达到或超过指定严重性时以非零状态码退出,从而使流水线失败。

grype sbom:app.cdx.json --fail-on high

使用 .grype.yaml 策略(only-fixed: true)或 --only-fixed,过滤掉无法修复的噪声:

grype sbom:app.cdx.json --only-fixed --fail-on critical
6. 为 SBOM 签名并将其作为证明附加

Cosign 会在注册表中将 SBOM 记录为签名的 in-toto 证明,并与镜像一同保存。

# Key-based signing
cosign attest --key cosign.key \
  --predicate app.spdx.json \
  --type spdxjson \
  myorg/app:1.4.2

# Keyless (Sigstore OIDC / Fulcio + Rekor)
COSIGN_EXPERIMENTAL=1 cosign attest \
  --predicate app.cdx.json \
  --type cyclonedx \
  myorg/app:1.4.2
7. 在下游验证证明

使用方在信任镜像之前,应先验证其来源。

cosign verify-attestation --key cosign.pub --type spdxjson myorg/app:1.4.2
8. 获取并重新扫描已附加的 SBOM

从注册表拉取经证明的 SBOM,并将重新运行 Grype 纳入持续监控。

cosign download attestation myorg/app:1.4.2 \
  | jq -r '.payload' | base64 -d | jq '.predicate' > pulled.spdx.json
grype sbom:pulled.spdx.json -o table
9. 与漏洞情报关联

将 Grype JSON 输入漏洞管理工作流:按 CVE 去重,结合 EPSS/KEV 丰富信息以确定优先级,并跟踪修复 SLA。每次 Grype DB 更新时重新扫描存储的 SBOM,以发现未更改的制品中新披露的 CVE。

工具和资源

工具用途链接
Syft生成 SBOMhttps://github.com/anchore/syft
Grype扫描 SBOM/镜像中的漏洞https://github.com/anchore/grype
CosignSBOM 签名/证明https://github.com/sigstore/cosign
CycloneDX面向安全的 SBOM 标准https://cyclonedx.org/
SPDXISO SBOM 标准https://spdx.dev/
CISA SBOM指南和最低要素https://www.cisa.gov/sbom

格式比较

方面CycloneDXSPDX
管理方OWASPLinux Foundation / ISO 5962
优势安全、VEX、漏洞许可、来源信息
常见 syft -o 值cyclonedx-json、cyclonedx-xmlspdx-json、spdx(标记值)

验证标准

  • 从目标镜像生成 CycloneDX SBOM
  • 按需从源代码生成 SPDX SBOM
  • 使用 Grype 扫描 SBOM 并生成 CVE 报告
  • 使用 --fail-on 在约定的严重级别设置 CI/CD 门禁
  • 使用 Cosign 对 SBOM 签名,并将其作为证明附加
  • 在下游验证证明
  • 在 Grype DB 更新时重新扫描存储的 SBOM
  • 关联/确定发现项的优先级(EPSS/KEV),并跟踪修复进度

评论

支持 Markdown