CalcGuide · 技术博客主页 / 一页纸学习计划
🟠

依赖与供应链安全:SBOM、扫描与签名验证

分类:安全与可靠性 · 路径:docs/topics/web-security-supply-chain/README.md

#supply-chain#sbom#npm-audit#pip-audit#sigstore

覆盖 A06/A08:SBOM(SPDX/CycloneDX)、依赖扫描、签名验证、容器镜像与 CI 集成

父主题

Web 安全:从 OWASP Top 10 到漏洞响应

子主题(0)

依赖与供应链安全:SBOM、扫描与签名验证

0. 元信息

1. 学习路线

供应链攻击面(直接依赖 / 间接依赖 / 镜像 / 包注册表)
  → SBOM:SPDX、CycloneDX
  → 依赖扫描:npm audit、pip-audit、Cargo audit
  → 商业扫描:Snyk、Dependabot、Renoate、OSS Review Toolkit
  → 容器扫描:Trivy、Grype、Clair
  → 签名验证:sigstore / cosign / in-toto / SLSA
  → CVE feed:NVD / GHSA / OSV / CISA KEV
  → 自动化响应:高危 CVE 自动建 Issue
  → 减少攻击面:最小依赖、固定版本、镜像 slim

2. 阶段周数分配

建议周期 8 周,每周 6 天、每天 1.5~2 小时(每周约 9~12 小时),第 7 天用于复盘和补测:第 1 周基础模型与威胁边界;第 2~3 周核心机制;第 4~5 周防御实现;第 6 周检测、测试与审计;第 7 周综合演练;第 8 周项目收尾、复盘与最终验收。

3. 九阶段表

阶段核心知识实践产出可观察学会标准
1. 攻击面直接/间接/传递依赖、构建链、注册表攻击面图能列出所有外部工件来源
2. SBOMSPDX、CycloneDX 字段生成 SBOM 文件SBOM 可被扫描器读入并匹配 CVE
3. 依赖扫描npm auditpip-auditcargo auditCI 扫描脚本高危 CVE 让构建失败
4. 商业扫描Snyk / Dependabot / Renovate自动 PR 升级高危 CVE 自动开 PR
5. 容器扫描Trivy / Grype镜像扫描报告高危 CVE 阻止镜像推送
6. 签名sigstore / cosign / SLSA镜像签名 + 验证部署时校验签名
7. CVE feedNVD、GHSA、OSV、CISA KEV自动匹配 SBOM知道哪些 CVE 正在被利用
8. 自动化响应Issue、PR、SLA自动化工作流高危 CVE 24 小时内响应
9. 减少攻击面最小依赖、固定版本、镜像 slim依赖清单依赖数量明显下降

关键陷阱:传递依赖最大;SBOM 只列组件不查漏洞;签名验证不是 build 完整性;“修复版本存在”不等于”我们能升级”。

4. 第一周:基础与威胁建模(每天 1.5~2 小时)

Day任务产出自检
1从 §1 首个知识点画信任边界,列出 5 个资产和 5 个攻击面notes/day1.md,含资产/攻击面表test -s notes/day1.md && grep -c "攻击面" notes/day1.md 输出 ≥1
2阅读 §3 阶段 1,针对 3 个概念各写定义、前置条件和失败后果notes/day2.md,至少 3 个小节grep -c "失败" notes/day2.md 输出 ≥3
3用本地最小示例复现一个不安全行为,再写修复前后差异notes/day3.mdnotes/day3-output.txt`test -s notes/day3-output.txt && grep -E “before
4依据 §3 阶段 2 写一张请求/数据流时序图notes/day4.md,含 Mermaid 图grep -q "mermaid" notes/day4.md
5为 3 个边界条件设计测试,并执行命令记录结果notes/day5.md,含输入/期望/实际grep -c "期望" notes/day5.md 输出 ≥3
6将一条防御规则实现为可运行脚本或配置,并记录命令notes/day6.shnotes/day6.jsonnotes/day6.mdtest -s notes/day6.md && grep -q "运行" notes/day6.md
7回顾 Day 1~6,写 300 字复盘并列出 10 个自测问答notes/week1-retrospective.mdwc -w notes/week1-retrospective.md ≥300 且 grep -c "问:" ≥10

5. 阶段通用验收

6. 最终验收

学完后应能完成威胁建模、选择合适的安全机制、实现最小防御链路、编写负面测试、读取日志或扫描证据,并向团队解释安全权衡和残余风险。

量化标准:

7. 综合项目

首选项目:安全 Web 服务实验室(本主题对应的 “)。实现一个最小 HTTP/API 服务,故意保留一条可控弱点,再用安全实现和自动化测试修复它。

备选项目:安全审计 CLI。读取请求、配置或依赖清单,输出风险、证据、严重性和修复建议。

必做要求:

项目根目录必须包含 README.mdnotes/design.mdnotes/test.mdnotes/retrospective.md。README 需写需求说明、数据结构/工具选择理由、核心流程、模块化实现、边界测试、编译/运行说明、目录结构和复盘记录;notes/design.md 写威胁模型与流程图,notes/test.md 写每组输入/期望/实际输出,notes/retrospective.md 写用时、难点、收获和下一步。

本主题贡献

8. 推荐开源资料

阶段角色资料名链接用法
1入门OWASP Web Security Testing Guidehttps://owasp.org/www-project-web-security-testing-guide/按主题阅读测试方法并转成自己的检查项
2官方文档MDN Web Securityhttps://developer.mozilla.org/en-US/docs/Web/Security查阅浏览器安全机制、Cookie、CORS、CSP
3规范/标准OWASP Cheat Sheet Serieshttps://cheatsheetseries.owasp.org/实现前逐条对照防御清单
4工具/源码OWASP ZAPhttps://www.zaproxy.org/对本地项目做代理扫描,保存报告
5练习平台PortSwigger Web Security Academyhttps://portswigger.net/web-security完成对应实验并记录请求、漏洞和修复
6参考标准NIST Cybersecurity Frameworkhttps://www.nist.gov/cyberframework将检测、响应和恢复动作映射到流程

许可证提示:使用 OWASP、ZAP 或其他开源资料与源码前,先打开仓库或页面的 LICENSE/版权说明;默认只引用链接和思路,复制代码时保留版权与许可证文本。

默认使用顺序:先读 §1 与 OWASP 入门资料建立模型 → 用 MDN/规范查 API 和约束 → 在本地项目实现 → 用 ZAP 或对应扫描工具验证 → 到 PortSwigger 做练习 → 将证据和复盘写入 notes/

9. 学习资料汇聚(v0.3 自包含)

9.1 背景与动机

OWASP Top 10 2021 把”A06 Vulnerable and Outdated Components”与”A08 Software and Data Integrity Failures”列为前几位。前者关心”我们用了什么”,后者关心”我们信不信它”。

历史上踩过的坑:

它们共同指向一件事:第三方代码 = 攻击面。修复不能等到漏洞发现,要从引入那一刻就治理。

9.2 概念地图

flowchart LR
  Supply[供应链安全] --> SBOM
  Supply --> Audit[依赖扫描]
  Supply --> Sign[签名验证]
  Supply --> CVE[CVE feed]
  SBOM --> SPDX
  SBOM --> CycloneDX
  Audit --> NpmAudit[npm audit]
  Audit --> PipAudit[pip-audit]
  Audit --> CargoAudit[cargo audit]
  Audit --> Trivy[Trivy / Grype]
  Audit --> Snyk[Snyk]
  Audit --> Dependabot[Dependabot / Renovate]
  Sign --> Sigstore[sigstore / cosign]
  Sign --> SLSA[SLSA 框架]
  Sign --> InToto[in-toto]
  CVE --> NVD
  CVE --> GHSA[GitHub Security Advisory]
  CVE --> OSV[OSV.dev]
  CVE --> KEV[CISA KEV]
  Att[攻击面] --> Direct[直接依赖]
  Att --> Transitive[传递依赖]
  Att --> Image[容器镜像]
  Att --> Build[构建系统]
  Response[响应流程] --> SLA[高危 CVE 24h]
  Response --> AutoPR[自动升级 PR]
  Response --> Pin[版本固定]
  Reduce[减少攻击面] --> MinDeps[最小依赖]
  Reduce --> Slim[slim 镜像]
  Reduce --> Verify[锁定文件进 git]

关系说明:SBOM 是底座;依赖扫描与 CVE feed 命中 SBOM;签名验证负责”信不信”;自动化响应让 SLA 可达;减少攻击面降低风险基数。

9.3 基础知识讲解

9.3.1 经典论文 / 标准

资料角色评分链接
OWASP Top 10 2021 — A06 Vulnerable Components风险分类5https://owasp.org/Top10/A06_2021-Vulnerable_and_Outdated_Components/
OWASP Top 10 2021 — A08 Software and Data Integrity Failures风险分类5https://owasp.org/Top10/A08_2021-Software_and_Data_Integrity_Failures/
OWASP Dependency Check依赖扫描工具5https://owasp.org/www-project-dependency-check/
OWASP CycloneDXSBOM 标准5https://cyclonedx.org/specification/overview/
SPDXSBOM 标准5https://spdx.dev/specifications/
NIST SP 800-218 (SSDF)安全开发框架5https://csrc.nist.gov/Projects/ssdf
SLSA Framework供应链级别5https://slsa.dev/
sigstore / cosign签名验证5https://docs.sigstore.dev/
in-toto工件完整性4https://in-toto.io/
OWASP Top 10 CI/CD RisksCI/CD 风险4https://owasp.org/www-project-top-10-ci-cd-security-risks/

主推:OWASP A06/A08 + CycloneDX + SLSA。备查:NIST SSDF、in-toto、OWASP CI/CD Top 10。

9.3.2 经典书籍

资料角色评分链接
Software Supply Chain Security (Cassidy)供应链全景4https://www.manning.com/books/software-supply-chain-security
Container Security (Liz Rice)容器安全4https://www.oreilly.com/library/view/container-security/9781492056690/
The Phoenix Project / The Unicorn ProjectDevOps 文化背景3https://itrevolution.com/the-phoenix-project/

主推:Cassidy《Software Supply Chain Security》。备查:Liz Rice《Container Security》。

9.3.3 优秀博客 / 文档

资料角色评分链接
GitHub Security Lab漏洞研究 + Advisories5https://securitylab.github.com/
Snyk Vulnerability DBCVE 数据库 + 修复5https://security.snyk.io/
OSV.dev跨生态漏洞数据库5https://osv.dev/
CISA KEV已知被利用漏洞5https://www.cisa.gov/known-exploited-vulnerabilities-catalog
npm audit docsnpm 自带扫描4https://docs.npmjs.com/cli/commands/npm-audit
pip-auditPython 依赖扫描5https://pypi.org/project/pip-audit/
Trivy多场景扫描5https://github.com/aquasecurity/trivy
CycloneDX toolingSBOM 生成与消费4https://cyclonedx.org/tool-center/
SLSA 文档供应链级别5https://slsa.dev/
sigstore / cosign 文档签名与验证4https://docs.sigstore.dev/

主推:Snyk + OSV + CISA KEV + Trivy。备查:npm audit / pip-audit、CycloneDX tooling、SLSA、sigstore。

9.3.4 核心人物

人物贡献关键出处
Dan Lorenc(Chainguard)sigstore、SLSA 推动linuxfoundation.org
Kim Lewandowski(Chainguard)SLSA 共同起草slsa.dev
Moshe Zadka软件供应链著作O’Reilly
Jesse PowellSnyk 创始人snyk.io
Tony Arcieri加密与签名工程github.com/tarcieri
Julia HansbroughCycloneDX 推动cyclonedx.org

主推:Dan Lorenc、Kim Lewandowski。备查:Moshe Zadka、Tony Arcieri。

9.3.5 开发方法

方法适用关键点
Pin + lock依赖固定锁定文件(package-lock.jsonCargo.lockPipfile.lock)进 git;CI 装 lockfile 版本
Minimal dependency攻击面减少每个新依赖要回答”能不能用现有依赖实现”
SBOM every build透明度每次构建生成 CycloneDX;存到工件库;可下载
Multi-layer scan多角度依赖扫描 + 容器扫描 + IaC 扫描(Trivy 一把梭)
Sign + verify完整性构建产物用 cosign 签名;部署时验证
Auto-PR for CVE响应速度Dependabot / Renovate + 24h SLA;高危走紧急流程
Verify before upgrade防回归升级前看 changelog;跑回归;先 staging 再 prod

9.4 经典问题与经典案例

#问题为什么重要最简答案或证据
1SolarWinds Orion(2020)构建系统入侵,恶意更新推送 18k 客户SLSA Level 3+;隔离构建;签名验证
2event-stream(2017)npm 包作者转交,恶意版本发布固定版本;最小依赖;监控包所有权变化
3Log4Shell(2021)Log4j JNDI 注入 RCE升级;CI 扫描 + SBOM 命中即升级
4ua-parser-js / colors.js / coa(2021)作者邮箱被盗,恶意版本发布镜像仓库;签名;锁定版本
5Spring4Shell(2022)Spring 框架 RCE升级;JDK ≥ 17;SBOM + 扫描
63CX Desktop App(2023)供应链渗透最终用户签名验证;最小信任域;运行时检测
7CVE-2022-22965(Spring4Shell)远程代码执行升级 + WAF 临时 + SBOM 命中
8容器镜像中含高危库镜像内 OpenSSL / glibc CVE镜像扫描;slim 镜像;多阶段构建
9锁定文件未进 git不同人装不同版本锁定文件进 git;npm ci;CI 用 lockfile
10内部镜像无签名内部镜像是”信任源”,但可被改cosign 签名;部署时验证

9.5 学习难点

概念难点

难点为什么会卡突破路径
SBOM 是清单不是安全有了 SBOM 不等于安全SBOM + CVE feed + 升级流程才是闭环
签名验证 ≠ 完整性签名验证只防篡改还要看来源、构建链路、SBOM
直接依赖 vs 传递依赖99% 漏洞在传递npm lspip show、OSV-Scanner 看清整棵树

思维难点

难点为什么会卡突破路径
“升级会破坏”不敢升级用 lockfile;先 staging;minor/patch 优先;写 e2e
“包作者可信”作者邮箱被盗照样出问题监控包所有权变化;用镜像仓库
“镜像扫描贵”镜像扫描会让 CI 变慢缓存扫描器;只在基础镜像更新时扫描

工程难点

难点为什么会卡突破路径
SBOM 太大,匹配慢上千组件用 OSV-Scanner / Trivy 增量;缓存
cosign 私钥管理密钥泄露用 KMS 签;短期 keyless(OIDC + Fulcio)
Dependabot PR 太多一天几十个按 severity 分批;自动化合并 patch;major 手动

9.6 技术标准与接口

9.6.1 Entity

名称版本组织状态许可证
OWASP Top 102021OWASP现行CC BY-SA 4.0
CycloneDX1.6OWASP CycloneDX WG现行Apache-2.0
SPDX2.3Linux Foundation现行CC BY-3.0(文档);工具多 Apache/MIT
NIST SP 800-218 (SSDF)1.1NIST现行公开
SLSAv1.0SLSA / OSSF现行Apache-2.0
sigstore持续sigstore活跃Apache-2.0
CISA KEV持续CISA现行公开
OSV持续Google活跃Apache-2.0
CWE / CVE持续MITRE现行公开
VEX持续CISA / NTIA活跃公开

9.6.2 Scope

9.6.3 Structure

必会字段、接口、API:

9.6.4 Ecosystem

9.6.5 Depth Tiers

层级能力
L0知道 SBOM、依赖扫描、容器扫描、签名验证是什么
L1看懂 npm audit 输出、SBOM 文件、cosign 命令
L2能生成 SBOM、跑扫描、签名镜像、CI 集成
L3能解释传递依赖、签名策略、SLSA Level 设计、CISA KEV 优先级
L4能设计企业级 SBOM 平台、零信任构建、入库策略

本计划目标:L3

9.6.6 Source

10. 常见误区

11. 所有知识点分类(统一规则)

  1. 编程语言
  2. 数据结构与算法
  3. 计算机基础
  4. 工程技术
  5. Web 与后端
  6. 前端与客户端
  7. 数据与人工智能
  8. 项目与职业能力
  9. 安全与可靠性

本计划归属:安全与可靠性 主 + 工程技术 辅。


直接依赖(0)

查看知识图谱