---
title: "A03:2025 - 软件供应链故障"
weight: 3
date: "2026-03-10T11:26:47+08:00"
lastmod: "2026-03-10T11:26:47+08:00"
---

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

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

---

## 📋 风险概述

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

### 🔴 危害等级：严重

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

---

## 🎯 常见场景

### 1. 恶意依赖包

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

### 2. 过时组件

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

### 3. 未验证的更新

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

### 4. 传递依赖风险

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

---

## ⚠️ 典型漏洞

### 案例 1: event-stream 事件

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

### 案例 2: SolarWinds 攻击

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

---

## 🛡️ 防御方法

### ✅ 1. 锁定依赖版本

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

### ✅ 2. 使用安全扫描工具

```bash
# npm 项目
npm audit
npm audit fix

# Python 项目
pip install safety
safety check

# 通用工具
snyk test
```

### ✅ 3. 验证包来源

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

### ✅ 4. 最小化依赖

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

---

## 🧪 测试方法

### 依赖扫描

```bash
# npm
npm audit --audit-level=high

# Python
pip install pip-audit
pip-audit

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

### 持续监控

```bash
# 使用 Snyk 持续监控
snyk monitor

# GitHub Dependabot
# 自动创建更新 PR
```

---

## 📊 检查清单

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

---

## 🔗 参考资料

- **OWASP Top 10:2025 A03**: https://owasp.org/Top10/A03_2025-Software_Supply_Chain_Failures/

---

*最后更新：2026-03-10*
