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