用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/ersinkoc/security-check --skill sc-verifier命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | sc-verifier |
| description | False positive elimination and confidence scoring for all security findings |
| license | MIT |
| metadata | {"author":"ersinkoc","category":"security","version":"1.0.0"} |
The verifier skill processes all raw findings from Phase 2 vulnerability skills, eliminates false positives through multi-criteria analysis, assigns confidence scores, merges duplicate findings, and produces a curated list of verified security issues. This is the quality gate that ensures the final report contains actionable, high-signal findings.
Runs in Phase 3 of the pipeline, after all Phase 2 vulnerability skills have completed.
All files matching security-report/*-results.md
File: security-report/verified-findings.md
*-results.md files from security-report/For each finding, determine if the vulnerable code is actually reachable:
Check if code is in an executable path:
Reachability scoring:
For each finding involving user input, check if input is sanitized:
Sanitization indicators:
Sanitization scoring:
Check if the framework provides automatic protection against the reported vulnerability:
| Vulnerability | Framework Protection |
|---|---|
| XSS | React JSX auto-escaping, Angular sanitization, Django template auto-escaping, Blade {{ }} escaping |
| SQL Injection | ORM parameterized queries (Prisma, GORM, Hibernate, EF), prepared statement wrappers |
| CSRF | Django CSRF middleware, Spring Security CSRF, Laravel VerifyCsrfToken, Express csurf |
| SSTI | Jinja2 sandbox mode, restricted template engines |
| Path Traversal | Framework static file servers with built-in path validation |
| Header Injection | Modern HTTP libraries that reject newlines in headers |
Framework protection scoring:
Check if configuration-level protections mitigate the finding:
Configuration scoring:
Determine the context of the vulnerable code:
Test code:
test/, tests/, __tests__/, spec/, *_test.go, *_test.py, *.test.tstest, spec, mock, fixtureDead code:
Example/Documentation code:
examples/, docs/, demo/, sample/Generated code:
generated/, gen/, __generated__/// Code generated or @Generated annotationVendor/third-party code:
vendor/, node_modules/, third_party/Identify and merge findings that share the same root cause:
Duplicate criteria:
Merge rules:
Calculate final confidence score for each finding:
Base confidence from the reporting skill: 0-100 Apply modifiers from steps 2-6:
final_confidence = base_confidence
+ reachability_modifier (-40 to +30)
+ sanitization_modifier (-40 to +0)
+ framework_modifier (-30 to +0)
+ configuration_modifier (-20 to +0)
+ context_modifier (-50 to +0)
Clamp to 0-100 range.
Confidence classification:
After confidence scoring, recalculate severity:
# Verified Security Findings
## Summary
- Total raw findings from Phase 2: {N}
- After duplicate merging: {N}
- After false positive elimination: {N}
- Final verified findings: {N}
## Confidence Distribution
- Confirmed (90-100): {N}
- High Probability (70-89): {N}
- Probable (50-69): {N}
- Possible (30-49): {N}
- Low Confidence (0-29): {N}
## Verified Findings
### VULN-001: {Title}
- **Severity:** Critical | High | Medium | Low | Info
- **Confidence:** {score}/100 ({classification})
- **Original Skill:** {skill-name}
- **Vulnerability Type:** CWE-XXX
- **File:** file/path:line
- **Reachability:** Direct | Indirect | Unknown
- **Sanitization:** None | Partial | Full
- **Framework Protection:** None | Partial | Active
- **Description:** Verified description
- **Verification Notes:** What was checked, why this is/isn't a false positive
- **Remediation:** How to fix
## Eliminated Findings (False Positives)
Brief list of eliminated findings with reason for elimination.
raw() or RawSQL methods are risky{{ }}, Blade {{ }} auto-escape by defaultos.Getenv("SECRET") reads at runtime, not hardcoded