npx skills add ...
npx skills add factory-ai/factory-plugins --skill vulnerability-validation
Validate security findings from commit-security-scan by assessing exploitability, filtering false positives, and generating proof-of-concept exploits. Use after running commit-security-scan to confirm vulnerabilities.
npx skills add factory-ai/factory-plugins --skill vulnerability-validation
Validate security findings by assessing whether they are actually exploitable in the context of this codebase. This skill filters false positives, confirms real vulnerabilities, and generates proof-of-concept exploits.
.factory/threat-model.md must exist (from threat-model-generation skill)security-findings.json must exist (from commit-security-scan skill)| Input | Description | Required | Default |
|---|---|---|---|
| Findings file | Path to security-findings.json | Yes | security-findings.json |
| Threat model | Path to threat model | No | .factory/threat-model.md |
| Finding IDs | Specific findings to validate (comma-separated) | No | All findings |
| Severity filter | Only validate findings at or above this severity | No | All severities |
Follow these steps for each finding to validate:
security-findings.json from commit-security-scan.factory/threat-model.md for system contextFor each finding, determine if the vulnerable code is reachable:
Trace entry points
Map the call chain
Classify reachability
EXTERNAL - Reachable from unauthenticated external inputAUTHENTICATED - Requires valid user sessionINTERNAL - Only reachable from internal servicesUNREACHABLE - Dead code or blocked by conditionsDetermine if an attacker can control the vulnerable input:
Identify the source
Trace data flow
Assess attacker control
Check if existing security controls prevent exploitation:
Input validation
Framework protections
Security middleware
Reference threat model
Determine how difficult it is to exploit:
| Rating | Criteria |
|---|---|
EASY | No special conditions, standard tools, publicly known technique |
MEDIUM | Requires specific conditions, timing, or chained vulnerabilities |
HARD | Requires insider knowledge, rare conditions, or advanced techniques |
NOT_EXPLOITABLE | Theoretical vulnerability but not practically exploitable |
Consider:
For confirmed vulnerabilities, create a proof-of-concept:
Craft exploit payload
Document the request
Describe expected vs actual behavior
Example PoC structure:
Assign a CVSS 3.1 score based on:
| Metric | Options |
|---|---|
| Attack Vector (AV) | Network (N), Adjacent (A), Local (L), Physical (P) |
| Attack Complexity (AC) | Low (L), High (H) |
| Privileges Required (PR) | None (N), Low (L), High (H) |
| User Interaction (UI) | None (N), Required (R) |
| Scope (S) | Unchanged (U), Changed (C) |
| Confidentiality (C) | None (N), Low (L), High (H) |
| Integrity (I) | None (N), Low (L), High (H) |
| Availability (A) | None (N), Low (L), High (H) |
Example: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N = 9.1 (Critical)
Based on analysis, classify each finding:
| Status | Meaning |
|---|---|
CONFIRMED | Vulnerability is real and exploitable |
LIKELY | Probably exploitable but couldn't fully verify |
FALSE_POSITIVE | Not actually a vulnerability (document why) |
NEEDS_MANUAL_REVIEW | Requires human security expert review |
Create validated-findings.json:
The skill is complete when:
validated-findings.json is valid JSONRun these checks before completing:
Validate all findings:
Validate specific findings:
Validate only HIGH/CRITICAL:
Validate with specific files:
validation-examples.md (in this skill directory)commit-security-scan skill