用途
Vulnerability Validation 是一个安全漏洞验证技能,用于验证来自 commit-security-scan 的安全发现,评估它们在此代码库上下文中是否真正可被利用。该技能会过滤误报、确认真实漏洞,并生成概念验证(PoC)漏洞利用。
适用时机:
- 在 commit-security-scan 之后,在创建 issue 或阻止 PR 之前验证发现
- 对 HIGH/CRITICAL 级别的发现优先进行验证
- 在修补之前,确认漏洞真实存在再投入修复
- 安全审查时,对特定发现进行深入验证
前置条件
.factory/threat-model.md必须存在(来自 threat-model-generation 技能)security-findings.json必须存在(来自 commit-security-scan 技能)
输入
| 输入 | 说明 | 必需 | 默认值 |
|---|---|---|---|
| Findings file | security-findings.json 的路径 | 是 | security-findings.json |
| Threat model | 威胁模型的路径 | 否 | .factory/threat-model.md |
| Finding IDs | 要验证的特定发现(逗号分隔) | 否 | 所有发现 |
| Severity filter | 仅验证达到或高于此严重级别的发现 | 否 | 所有严重级别 |
主要能力与使用方式
该技能对每个待验证的发现执行以下步骤:
步骤 1:加载上下文 读取 security-findings.json 和 .factory/threat-model.md,根据输入确定要验证的发现。
步骤 2:可达性分析 判断易受攻击的代码是否可达:追踪入口点(HTTP 端点、CLI 命令、事件处理器)、映射调用链、将可达性分类为 EXTERNAL(未认证外部输入可达)、AUTHENTICATED(需要有效用户会话)、INTERNAL(仅内部服务可达)或 UNREACHABLE(死代码或被条件阻断)。
步骤 3:控制流分析 判断攻击者能否控制易受攻击的输入:识别污点数据来源、追踪从源到汇(易受攻击函数)的数据流、评估攻击者控制程度(长度限制、字符限制、格式验证、净化处理)。
步骤 4:缓解措施评估 检查现有安全控制是否阻止利用:输入验证、框架保护(如 ORM 参数化、React XSS 转义)、安全中间件(WAF 规则、速率限制、CSP 头),并参考威胁模型中的“Existing Mitigations”部分。
步骤 5:可利用性评估 评定利用难度:EASY(无特殊条件、标准工具、公开已知技术)、MEDIUM(需要特定条件、时机或漏洞链)、HARD(需要内部知识、罕见条件或高级技术)、NOT_EXPLOITABLE(理论漏洞但实际不可利用)。考虑攻击复杂度、所需权限、用户交互、影响范围。
步骤 6:生成概念验证 对确认的漏洞创建 PoC:构造最小化且无害的利用载荷、记录请求(HTTP 方法、URL、头、体,或 CLI 命令、文件输入等)、描述预期行为与实际行为。PoC 结构示例:
{
"payload": "' OR '1'='1",
"request": "GET /api/users?search=' OR '1'='1",
"expected_behavior": "Returns users matching search term",
"actual_behavior": "Returns all users due to SQL injection"
}
步骤 7:计算 CVSS 评分
基于 CVSS 3.1 指标(Attack Vector、Attack Complexity、Privileges Required、User Interaction、Scope、Confidentiality、Integrity、Availability)分配评分。示例:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N = 9.1 (Critical)。
步骤 8:分类发现 将每个发现分类为:CONFIRMED(真实且可利用)、LIKELY(可能可利用但无法完全验证)、FALSE_POSITIVE(非漏洞,需记录原因)、NEEDS_MANUAL_REVIEW(需要人工安全专家审查)。
步骤 9:生成输出 创建 validated-findings.json,包含 validation_id、validation_date、scan_id、threat_model_version、validated_findings 数组(含 id、status、original_severity、validated_severity、exploitability、reachability、existing_mitigations、exploitation_path、proof_of_concept、cvss_vector、cvss_score、validation_notes)、false_positives 数组、needs_manual_review 数组以及 summary 统计。
成功标准
- 所有指定发现均已分析
- 每个发现都有状态(CONFIRMED、LIKELY、FALSE_POSITIVE、NEEDS_MANUAL_REVIEW)
- 确认的发现已记录利用路径
- 确认的发现已有 PoC 漏洞利用
- 误报有清晰的理由
- validated-findings.json 是有效 JSON
- 确认的发现已计算 CVSS 评分
验证
完成前运行以下检查:
# Verify output exists and is valid JSON
cat validated-findings.json | jq . > /dev/null && echo "✓ Valid JSON"
# Check all findings have status
jq '.validated_findings | all(.status)' validated-findings.json
# Check confirmed findings have PoC
jq '.validated_findings | map(select(.status == "CONFIRMED")) | all(.proof_of_concept)' validated-findings.json
# Check false positives have reasoning
jq '.false_positives | all(.reason)' validated-findings.json
调用示例
- 验证所有发现:
Validate the security findings from the last scan. - 验证特定发现:
Validate findings VULN-001 and VULN-002 from security-findings.json. - 仅验证 HIGH/CRITICAL:
Validate all HIGH and CRITICAL severity findings from the security scan. - 使用特定文件验证:
Validate findings in security-findings.json using threat model at .factory/threat-model.md.
参考
- CVSS 3.1 Calculator: https://www.first.org/cvss/calculator/3.1
- OWASP Testing Guide: https://owasp.org/www-project-web-security-testing-guide/
- Examples: validation-examples.md(位于此技能目录中)
- Upstream: commit-security-scan skill
限制
该技能依赖上游 commit-security-scan 技能产出的 security-findings.json 和 threat-model-generation 技能产出的威胁模型文件。对于复杂数据流(如通过消息队列)可能无法完全追踪,此类情况会被标记为 NEEDS_MANUAL_REVIEW。