mcpField
T
triaging-vulnerabilities-with-ssvc-framework

triaging-vulnerabilities-with-ssvc-framework

github.com/mukul975安全35.2k138 次安装8 周前更新
代码仓库

关于 triaging-vulnerabilities-with-ssvc-framework

该技能介绍用 SSVC 决策树对漏洞进行优先级分级,适合需要将漏洞情报转化为处置行动的安全团队。它结合利用状态、技术影响、自动化程度、业务重要性和公共福祉影响给出四类决策。

主要功能

  1. 01评估漏洞利用状态
  2. 02衡量技术影响与可自动化性
  3. 03纳入业务重要性和公共影响
  4. 04生成四级处置决策
  5. 05导入 Nessus 与 OpenVAS 报告

适用场景

  1. 01为扫描发现确定修复优先级
  2. 02结合 CISA KEV 与 EPSS 评估 CVE
  3. 03统一漏洞升级与处置流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill triaging-vulnerabilities-with-ssvc-framework

安装后在 Claude Code 中输入/triaging-vulnerabilities-with-ssvc-framework确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py
process.py

详细介绍

使用 SSVC 框架进行漏洞分级

概述

利益相关者特定漏洞分类(SSVC)框架由卡内基梅隆大学软件工程研究所(SEI)与 CISA 合作开发,提供了一套结构化的决策树方法用于漏洞优先级排序。与单独的 CVSS 不同,SSVC 综合考虑利用状态、技术影响、可自动化程度、任务普及度和公共福祉影响,最终得出四种可操作的结果之一:Track、Track*、Attend 或 Act。

何时使用

  • 当管理需要 使用 ssvc 框架对漏洞进行分级 的安全运营时
  • 当提升安全项目成熟度和运营流程时
  • 当为安全团队工作流建立标准化流程时
  • 当将威胁情报或漏洞数据集成到运营中时

前提条件

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

SSVC 决策点

1. 利用状态

评估当前的利用活动:

  • None - 没有证据表明存在活跃利用
  • PoC - 公开存在概念验证
  • Active - 在野观察到活跃利用(检查 CISA KEV)
# Check if a CVE is in CISA Known Exploited Vulnerabilities catalog
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. 技术影响

确定被利用后失陷的范围:

  • Partial - 仅限于系统功能或数据的一部分
  • Total - 完全控制受影响系统,可访问全部数据
3. 可自动化程度

评估利用能否大规模自动化:

  • No - 需要对每个受害者进行手动、针对性利用
  • Yes - 可以编写脚本利用,或可能实现类似蠕虫的传播
4. 任务普及度

受影响产品在你的环境中的普及程度如何:

  • Minimal - 部署有限,非关键系统
  • Support - 间接支持任务关键型功能
  • Essential - 直接支撑核心任务能力
5. 公共福祉影响

对人身安全和公共福利的潜在后果:

  • Minimal - 对安全或公共服务的影响可忽略不计
  • Material - 公共服务明显退化
  • Irreversible - 人员伤亡、重大财产损失或关键基础设施故障

SSVC 决策结果

结果所需行动SLA
Track监控,在正常补丁周期内修复90 天
Track*密切监控,在下一个补丁窗口优先处理60 天
Attend上报高级管理层,加速修复14 天
Act立即应用缓解措施,高管层知悉48 小时

工作流

步骤 1:导入漏洞数据
import requests
import json

# Fetch CISA KEV catalog
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']}

# Fetch EPSS scores for context
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):
    """Determine exploitation status from CISA KEV and EPSS data."""
    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):
    """Parse CVSS vector for scope and impact metrics."""
    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):
    """Check if attack vector is network-based with low complexity."""
    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 decision tree implementation."""
    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:生成分级报告
# Run the SSVC triage script against scan results
python3 scripts/process.py --input scan_results.csv --output ssvc_triage_report.json

# View summary
cat ssvc_triage_report.json | python3 -m json.tool | head -50

与漏洞扫描器集成

从 Nessus CSV 导入
# Export Nessus scan as CSV, then process
python3 scripts/process.py \
  --input nessus_export.csv \
  --format nessus \
  --output ssvc_results.json
从 OpenVAS 导入
# Export OpenVAS results as XML
python3 scripts/process.py \
  --input openvas_report.xml \
  --format openvas \
  --output ssvc_results.json

验证与测试

# Test SSVC decision logic with known CVEs
python3 -c "
from scripts.process import ssvc_decision
# CVE-2024-3400 - Palo Alto PAN-OS command injection (KEV listed)
assert ssvc_decision('active', 'total', 'yes', 'essential', 'material') == 'Act'
# CVE-2024-21887 - Ivanti Connect Secure (PoC available)
assert ssvc_decision('poc', 'total', 'yes', 'support', 'minimal') == 'Attend'
print('All SSVC decision tests passed')
"

参考资料

评论

支持 Markdown