L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

triaging-vulnerabilities-with-ssvc-framework

triaging-vulnerabilities-with-ssvc-framework

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

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: triaging-vulnerabilities-with-ssvc-framework description: 使用 CISA 的利益相关方特定漏洞分类(SSVC)决策树框架对漏洞进行分类和优先排序,产出可操作的修复优先级:Track、Track*、Attend 或 Act。 domain: cybersecurity subdomain: vulnerability-management tags: [ssvc, vulnerability-triage, cisa, vulnerability-prioritization, decision-tree, cvss, remediation, risk-management] version: "1.0" author: mahipal license: Apache-2.0

使用 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)
# 检查 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:摄取漏洞数据

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:评估每个决策点

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 决策树

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:生成分类报告

# 对扫描结果运行 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 导入

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

从 OpenVAS 导入

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

验证与测试

# 使用已知 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 决策测试通过')
"

参考资料

Skills enregistrées