# 供应链溯源

> Layer 3：高风险 Skill 或首次发布者触发。来源：CSA 2026 / AgentPoison (arXiv:2407.12784) / Snyk 2026

## 触发条件（满足任一）

- Layer 1 得分 < 70
- 发布者首次在平台发布 Skill（历史 < 3 个）
- 用户显式要求"审依赖"

---

## 十维溯源

### 1. 发布者信誉

| 检查项 | 方法 | 扣分 |
|:---|:---|:---|
| 身份验证状态 | 检查 GPG 签名 / 邮箱验证 / OAuth 绑定 | 未验证: -8 |
| 历史发布量 | 统计该发布者的 Skill 总数 | < 3: -5 |
| 历史安全记录 | 是否有被标记为恶意的 Skill | 有: 直接 🚫 |
| 社区活跃度 | 最后活跃时间 / issue 响应率 | 僵尸账号: -3 |

### 2. 依赖链审计

| 检查项 | 方法 | 扣分 |
|:---|:---|:---|
| CVE 比对 | 提取所有依赖 → 与 NVD / OSV 交叉比对 | Critical CVE: -10, High: -6, Medium: -3 |
| 拼写欺诈检测 | 包名 Levenshtein 距离 ≤ 2 标记可疑 | 命中: -5 |
| 依赖深度 | 传递依赖 > 3 层 → 标记 flag:deep_deps | — |

### 3. 版本变更历史

| 检查项 | 方法 | 扣分 |
|:---|:---|:---|
| 权限变更 | 新版本是否新增权限声明 | 新增网络/文件写权限: -5 |
| 脚本变更 | diff 分析是否新增网络出站/子进程调用 | 命中: -5 |
| 版本号异常 | 主版本号跳跃 ≥ 3 | -3 |

### 4. 社区反馈

| 检查项 | 方法 | 处理 |
|:---|:---|:---|
| 安全举报 | 统计 issue / report 中安全相关标记 | ≥ 3 安全举报 → 自动进入 Layer 2 |
| 社区评分 | 平均评分 < 3/5 | 标记 flag:low_rating |

### 5. SBOM 完整性

| 检查项 | 方法 | 扣分 |
|:---|:---|:---|
| SBOM 存在性 | 是否提供 cyclonedx / spdx 格式的 SBOM | 无: -2 |
| SBOM 时效性 | SBOM 生成日期与最新版本是否一致 | 过期: -1 |

### 6. 外部 API 安全评估

| 检查项 | 方法 | 处理 |
|:---|:---|:---|
| API 端点真实性 | 验证第三方 API 端点域名与官方文档一致性 | 无签名验证 → 标记 flag:unsigned_api_response |
| 响应签名验证 | 检查 API 响应是否含签名/哈希校验 | 无回调白名单 → 标记 flag:unverified_api_call |

### 7. SDK 安全准入

| 检查项 | 方法 | 处理 |
|:---|:---|:---|
| 第三方 SDK 数据采集范围 | 评估 SDK 声明的数据采集权限 | 无安全评估记录 → 标记 flag:sdk_no_assessment |
| 第三方 SDK 权限声明 | 检查 SDK 是否声明与 Skill 任务范围匹配的权限 | 权限超出 → 标记 flag:sdk_over_permission |

### 8. 熔断与降级预案

| 检查项 | 方法 | 处理 |
|:---|:---|:---|
| 依赖服务不可用降级 | 评估 Skill 对第三方服务宕机的处理 | 无降级声明 → 标记 flag:no_circuit_breaker |
| 安全降级策略 | 检查是否声明降级时不泄露敏感数据 | 降级路径含数据外泄风险 → 标记 flag:degradation_leak

### 9. 外部信息源信誉

| 检查项 | 方法 | 处理 |
|:---|:---|:---|
| 外部 URL 域名信誉 | 对 Skill 引用的所有外部 URL 进行域名信誉评分（白名单/灰名单/黑名单） | 低信誉源 → 标记 flag:low_trust_source |
| 仿冒域名检测 | Levenshtein 距离 ≤ 2 与已知高信誉源相似 | 仿冒命中 → 标记 flag:typosquat_domain |
| 上游内容可篡改风险评估 | 评估外部内容源是否允许未授权修改（如公开 GitHub 仓库/共享云盘） | 可篡改源 → 标记 flag:mutable_upstream |

### 10. 持久化写入审计

| 检查项 | 方法 | 处理 |
|:---|:---|:---|
| 持久化路径写入检测 | 检查 Skill 是否向启动项/计划任务/shell 配置/cron 写入内容 | 持久化写入无声明 → 标记 flag:persistent_writes_unverified |
| 写入内容安全性验证 | 对写入持久化路径的内容做二次安全扫描 | 内容含恶意载荷 → 标记 flag:persistent_content_suspicious |
| 持久化写入确认门控 | 检查用户是否被明确告知持久化写入后果 | 无确认门控 → 标记 flag:persistent_no_user_confirm |

---

## 威胁情报联动

接入以下数据源的恶意 Skill 指纹库：

| 数据源 | 匹配方式 | 命中处理 |
|:---|:---|:---|
| CSA 恶意 Skill 签名库 | 文件哈希匹配 | 直接 🚫 |
| ClawHub 恶意 Skill 指纹库 | 文件哈希匹配 | 直接 🚫 |
| Snyk 已知恶意包列表 | 依赖包名匹配 | 直接 🚫 |
| SKILL.md 语义相似度 | 与已知恶意 Skill 的 SKILL.md 语义相似度 > 85% | 标记 ⚠️ |
| 脚本结构相似度 | 与已知恶意 Skill 的辅助脚本 AST 相似度 > 90% | 标记 ⚠️ |

---

## Layer 3 扣分汇总

```
Layer3_Penalty = Σ(各维扣分)，上限 30
```

| 扣分范围 | 风险等级 |
|:---|:---|
| 0 | 供应链健康 |
| 1 - 10 | 低风险 |
| 11 - 20 | 中风险 |
| 21 - 30 | 高风险 |

---

## 依赖项运行时行为监控

将依赖项纳入沙箱化动态行为监控，与 Layer 2 工具模拟衔接，形成静态 CVE 比对 + 动态行为分析的互补检测链。

| 监控指标 | 检测方法 | 风险标记 |
|:---|:---|:---|
| 运行时网络出站 | 监控依赖库发起的 DNS/HTTP/HTTPS 连接，比对目标 IP 与已知恶意 C&C 库 | `dep_runtime_network` |
| 文件系统异常写入 | 检测依赖代码对非工作目录/系统路径的写操作 | `dep_anomalous_fs_write` |
| 子进程 spawn | 监控 `subprocess.Popen` / `os.system` / `fork`+`exec` 等进程创建链 | `dep_process_spawn` |

与 CVE 静态比对形成互补：CVE 比对覆盖已知漏洞，运行时监控捕获零日行为。

---

## 发布者信誉动态评分模型

| 条件 | 信誉分变动 | 触发 |
|:---|:---|:---|
| 10+ Skill 无安全事件 | +5 | 每次审查更新 |
| 历史安全审查通过率 > 95% | +3 | 每次审查更新 |
| 多 Skill 被标记可疑（≥ 3） | -10 | 实时触发 |
| 社区安全事件报告 | -15 | 实时触发 |
| 首次发布 Skill | 初始分 50 | 新发布者默认 |

**新发布者降级审查策略**：信誉分 < 60 的发布者，其 Skill 自动进入全量审查模式——Layer 1 全量 + Layer 2 21 场景模拟 + Layer 3 10 维溯源（无快速路径跳过），审查结果附带发布者信誉预警。当发布者 Skill 检出 R11/R12 任一标记时，即使信誉分 ≥ 60 也强制执行全量审查。
