# Triaging Vulnerabilities With Ssvc Framework

> 使用 CISA 的利益相关方特定漏洞分类（SSVC）决策树框架对漏洞进行分类和优先排序，产出可操作的修复优先级：Track、Track*、Attend 或 Act。

- Skill: `killvxk/triaging-vulnerabilities-with-ssvc-framework` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add killvxk/triaging-vulnerabilities-with-ssvc-framework`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/triaging-vulnerabilities-with-ssvc-framework/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/triaging-vulnerabilities-with-ssvc-framework

---


# 使用 SSVC 框架对漏洞进行分类（Triaging Vulnerabilities with SSVC Framework）

## 概述

利益相关方特定漏洞分类（Stakeholder-Specific Vulnerability Categorization，SSVC）框架由卡内基梅隆大学软件工程研究所（SEI）与 CISA 合作开发，提供一种用于漏洞优先排序的结构化决策树方法。与单独使用 CVSS 不同，SSVC 综合考虑漏洞利用状态、技术影响、可自动化程度、任务普遍性和公共福祉影响，产出以下四种可操作结果之一：**Track（跟踪）**、**Track*（重点跟踪）**、**Attend（关注）** 或 **Act（立即行动）**。

## 前置条件

- Python 3.9+，安装 `requests`、`pandas` 和 `jinja2` 库
- 可访问 CISA KEV 目录 API 和 FIRST 的 EPSS API
- NVD API 密钥（可选，用于获得更高速率限制）
- 来自 OpenVAS、Nessus 或 Qualys 等工具的漏洞扫描结果

## SSVC 决策点

### 1. 漏洞利用状态（Exploitation Status）
评估当前漏洞利用活动：
- **None（无）** - 无主动利用证据
- **PoC（概念验证）** - 存在公开的概念验证代码
- **Active（主动利用）** - 观察到野外主动利用（检查 CISA KEV）

```bash
# 检查 CVE 是否在 CISA 已知被利用漏洞目录中
curl -s "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json" | \
  python3 -c "import sys,json; data=json.load(sys.stdin); cves=[v['cveID'] for v in data['vulnerabilities']]; print('Active' if 'CVE-2024-3400' in cves else 'Check PoC/None')"
```

### 2. 技术影响（Technical Impact）
确定被利用后的受损范围：
- **Partial（部分）** - 仅限于系统功能或数据的子集
- **Total（全部）** - 完全控制受影响系统，完整数据访问

### 3. 可自动化程度（Automatability）
评估漏洞利用是否可以大规模自动化：
- **No（否）** - 需要针对每个受害者进行手动、有针对性的利用
- **Yes（是）** - 可以编写脚本或具有蠕虫式传播能力

### 4. 任务普遍性（Mission Prevalence）
受影响产品在您的环境中的部署范围：
- **Minimal（最小）** - 有限部署，非关键系统
- **Support（支持）** - 间接支持关键任务功能
- **Essential（核心）** - 直接支撑核心任务能力

### 5. 公共福祉影响（Public Well-Being Impact）
对人身安全和公共福利的潜在后果：
- **Minimal（最小）** - 对安全或公共服务影响可忽略
- **Material（实质）** - 公共服务显著降级
- **Irreversible（不可逆）** - 人员伤亡、重大财产损失或关键基础设施故障

## SSVC 决策结果

| 结果 | 所需行动 | SLA |
|---------|----------------|-----|
| **Track（跟踪）** | 监控，在正常补丁周期内修复 | 90 天 |
| **Track*（重点跟踪）** | 密切监控，在下一个补丁窗口优先处理 | 60 天 |
| **Attend（关注）** | 上报高级管理层，加速修复 | 14 天 |
| **Act（立即行动）** | 立即应用缓解措施，执行层知晓 | 48 小时 |

## 实施步骤

### 步骤 1：摄取漏洞数据
```python
import requests
import json

# 获取 CISA KEV 目录
kev_url = "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json"
kev_data = requests.get(kev_url).json()
kev_cves = {v['cveID'] for v in kev_data['vulnerabilities']}

# 获取 EPSS 评分以提供情境
epss_url = "https://api.first.org/data/v1/epss"
epss_response = requests.get(epss_url, params={"cve": "CVE-2024-3400"}).json()
```

### 步骤 2：评估每个决策点
```python
def evaluate_exploitation(cve_id, kev_set):
    """根据 CISA KEV 和 EPSS 数据确定漏洞利用状态。"""
    if cve_id in kev_set:
        return "active"
    epss = requests.get(
        "https://api.first.org/data/v1/epss",
        params={"cve": cve_id}
    ).json()
    if epss.get("data"):
        score = float(epss["data"][0].get("epss", 0))
        if score > 0.5:
            return "poc"
    return "none"

def evaluate_technical_impact(cvss_vector):
    """解析 CVSS 向量中的范围和影响指标。"""
    if "S:C" in cvss_vector or "C:H/I:H/A:H" in cvss_vector:
        return "total"
    return "partial"

def evaluate_automatability(cvss_vector, cve_description):
    """检查攻击向量是否基于网络且复杂度低。"""
    if "AV:N" in cvss_vector and "AC:L" in cvss_vector and "UI:N" in cvss_vector:
        return "yes"
    return "no"
```

### 步骤 3：应用 SSVC 决策树
```python
def ssvc_decision(exploitation, tech_impact, automatability, mission_prevalence, public_wellbeing):
    """CISA SSVC 决策树实现。"""
    if exploitation == "active":
        if tech_impact == "total" or automatability == "yes":
            return "Act"
        if mission_prevalence in ("essential", "support"):
            return "Act"
        return "Attend"
    if exploitation == "poc":
        if automatability == "yes" and tech_impact == "total":
            return "Attend"
        if mission_prevalence == "essential":
            return "Attend"
        return "Track*"
    # exploitation == "none"
    if tech_impact == "total" and mission_prevalence == "essential":
        return "Track*"
    return "Track"
```

### 步骤 4：生成分类报告
```bash
# 对扫描结果运行 SSVC 分类脚本
python3 scripts/process.py --input scan_results.csv --output ssvc_triage_report.json

# 查看摘要
cat ssvc_triage_report.json | python3 -m json.tool | head -50
```

## 与漏洞扫描器集成

### 从 Nessus CSV 导入
```bash
# 将 Nessus 扫描导出为 CSV，然后处理
python3 scripts/process.py \
  --input nessus_export.csv \
  --format nessus \
  --output ssvc_results.json
```

### 从 OpenVAS 导入
```bash
# 将 OpenVAS 结果导出为 XML
python3 scripts/process.py \
  --input openvas_report.xml \
  --format openvas \
  --output ssvc_results.json
```

## 验证与测试

```bash
# 使用已知 CVE 测试 SSVC 决策逻辑
python3 -c "
from scripts.process import ssvc_decision
# CVE-2024-3400 - Palo Alto PAN-OS 命令注入（已列入 KEV）
assert ssvc_decision('active', 'total', 'yes', 'essential', 'material') == 'Act'
# CVE-2024-21887 - Ivanti Connect Secure（PoC 可用）
assert ssvc_decision('poc', 'total', 'yes', 'support', 'minimal') == 'Attend'
print('所有 SSVC 决策测试通过')
"
```

## 参考资料

- [CISA SSVC 框架](https://www.cisa.gov/stakeholder-specific-vulnerability-categorization-ssvc)
- [CERT/CC SSVC 文档](https://certcc.github.io/SSVC/)
- [CISA SSVC 指南 PDF](https://www.cisa.gov/sites/default/files/publications/cisa-ssvc-guide%20508c.pdf)
- [FIRST EPSS API](https://www.first.org/epss/)
- [CISA 已知被利用漏洞](https://www.cisa.gov/known-exploited-vulnerabilities-catalog)

