A03:2025 - 软件供应链故障

💡 学习提示: 本文档介绍 OWASP Top 10 A03 - 软件供应链故障,这是 2025 年新上升的安全风险。

⚠️ 法律声明: 本文档仅供学习和授权测试使用。


📋 风险概述

软件供应链故障 (Software Supply Chain Failures) 是指由于第三方组件、库、工具中的漏洞或恶意代码,导致应用面临的安全风险。随着现代应用大量使用开源组件,这一风险日益突出。

🔴 危害等级:严重

项目 说明
发生率 2.94%
平均影响 7.23/10
最大影响 9.12/10

🎯 常见场景

1. 恶意依赖包

# 攻击者发布恶意包
npm install malicious-package
pip install typosquat-package  # 拼写错误的知名包

2. 过时组件

// package.json 使用旧版本
{
  "dependencies": {
    "lodash": "4.17.15",  // ❌ 有已知漏洞
    "express": "4.16.0"   // ❌ 过时版本
  }
}

3. 未验证的更新

# 自动更新未验证签名
npm update  # ❌ 可能被劫持

4. 传递依赖风险

你的应用
  └── 库 A
      └── 库 B (有漏洞)
          └── 库 C (恶意代码)

⚠️ 典型漏洞

案例 1: event-stream 事件

# 2018 年,流行的 npm 包被植入恶意代码
# 影响超过 200 万开发者
npm install event-stream  # ❌ 被污染

案例 2: SolarWinds 攻击

# 2020 年,供应链攻击导致数千组织受影响
# 攻击者在官方更新中植入后门

🛡️ 防御方法

✅ 1. 锁定依赖版本

// ✅ 使用精确版本
{
  "dependencies": {
    "lodash": "4.17.21"  // 精确版本
  },
  "lockfileVersion": 2
}

✅ 2. 使用安全扫描工具

# npm 项目
npm audit
npm audit fix

# Python 项目
pip install safety
safety check

# 通用工具
snyk test

✅ 3. 验证包来源

# 检查包的下载量和维护情况
npm view lodash
# 检查作者、更新时间、Issue 数量

✅ 4. 最小化依赖

# 仅使用必要的依赖
# 定期清理未使用的包
npm prune

🧪 测试方法

依赖扫描

# npm
npm audit --audit-level=high

# Python
pip install pip-audit
pip-audit

# Java
mvn org.owasp:dependency-check-maven:check

持续监控

# 使用 Snyk 持续监控
snyk monitor

# GitHub Dependabot
# 自动创建更新 PR

📊 检查清单

  • 锁定所有依赖版本
  • 定期运行安全扫描
  • 监控依赖更新
  • 最小化依赖数量
  • 验证包的来源和信誉
  • 使用私有仓库镜像
  • 建立供应商评估流程

🔗 参考资料


最后更新:2026-03-10