概述
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 决策点
- 利用状态 评估当前利用活动:
- 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')"
- 技术影响 确定被利用后造成的破坏范围:
- Partial:限于系统功能或数据的子集。
- Total:完全控制受影响系统,完整数据访问。
- 可自动化性 评估利用是否可大规模自动化:
- No:需要针对每个受害者进行手动定向利用。
- Yes:可脚本化或具备蠕虫式传播可能。
- 任务普遍性 受影响产品在环境中的普及程度:
- Minimal:部署有限,非关键系统。
- Support:间接支持关键任务功能。
- Essential:直接支撑核心任务能力。
- 公共福祉影响 对人身安全和公共福利的潜在后果:
- Minimal:对安全或公共服务影响可忽略。
- Material:公共服务明显退化。
- Irreversible:人员伤亡、重大财产损失或关键基础设施故障。
SSVC 决策结果
- Track:监控,在正常补丁周期内修复,SLA 90 天。
- Track*:密切监控,在下一个补丁窗口优先处理,SLA 60 天。
- Attend:上报高级管理层,加速修复,SLA 14 天。
- Act:立即应用缓解措施,执行层知悉,SLA 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('All SSVC decision tests passed') "
参考
- CISA SSVC Framework
- CERT/CC SSVC Documentation
- CISA SSVC Guide PDF
- FIRST EPSS API
- CISA Known Exploited Vulnerabilities
限制
资料未提供该技能的具体部署方式细节、支持范围上限、错误处理策略或除上述示例之外的使用步骤,暂未提供。