Files
Tim Krampitz 01046b01e4 Neue Skills, Referenzen & OpenWiki-Doku integriert
Umfangreiche Erweiterung der Skill-Bibliothek: Neue Skills für Humanisierung (Englisch/PT-BR), Design-Validierung, AI-SEO und Coolify-Deployment inkl. Regelwerke, Presets, Pattern-Referenzen, Testfälle und Automatisierungsskripte. Zusätzliche Skills für Revenue-Centric Design, Pier Cloud, OKF, Lebenslauf- und LinkedIn-Optimierung sowie zahlreiche Referenzdateien, Checklisten und YAML/JSON/Markdown-Templates. Einführung einer vollständigen OpenWiki-Dokumentation mit Architektur-, Domain- und Workflow-Beschreibungen, zentralem Index und automatisierten Updates. Modularer Aufbau, restriktive Lizenzen und umfassende Qualitäts- und Evaluationsmechanismen für alle neuen Inhalte.
2026-07-26 14:00:58 +02:00

4.4 KiB

Steering: Triage Findings

Intake a batch of security findings from any source (SARIF, scanner JSON, bug bounty reports, prior scan DB entries) and produce validated, deduplicated, severity-rated findings ready for action.

Step 1: Ingest and Normalize

Load all input findings into a common internal format. Each normalized finding must have:

  • id: unique identifier (generate one if source doesn't provide)
  • title: short description of the issue
  • category: CWE number or OWASP category (e.g., CWE-79, A03:2021-Injection)
  • location: file path + line number (or URL + parameter for dynamic findings)
  • source: which tool/report produced this (semgrep, snyk, burp, manual, etc.)
  • original_severity: what the source assigned
  • raw_snippet: relevant code or request/response excerpt
  • description: what the finding claims is wrong

Run:

python3 scripts/scan_db.py import --format <sarif|json|csv|manual> --input <path>

This writes normalized findings into the scan database. Verify import count matches expectation.

Step 2: Deduplicate

Same vulnerability reported by multiple tools = one finding. Dedup criteria:

  • Same file + same line range (±5 lines) + same CWE = duplicate
  • Same endpoint + same parameter + same vulnerability class = duplicate
  • Different manifestations of the same root cause = group under one finding, note variants

Run:

python3 scripts/scan_db.py dedup --scan-dir <dir>

Review the dedup report. If the tool merged things that are actually distinct, split them manually.

Step 3: Contextual Assessment

For each unique finding, answer these questions by reading the actual code:

  1. Is it real? Does the vulnerable pattern actually exist at that location? Scanners hallucinate. Read the file.
  2. Is it reachable? Can user-controlled input actually reach the vulnerable code path? Trace backwards from the sink to any entry point.
  3. Are there mitigations? WAF rules, input validation earlier in the chain, framework-level protections, CSP headers — anything that reduces or eliminates exploitability.
  4. What's the blast radius? If exploited: data loss? RCE? privilege escalation? Information disclosure only? Account takeover?
  5. What's the attack complexity? Does exploitation require authentication? Specific race conditions? Social engineering?

Step 4: Assign Validated Severity

Do NOT blindly accept the scanner's severity. Recalculate using:

Severity Criteria
Critical RCE, auth bypass, mass data exfil, no mitigations, reachable from unauthenticated context
High SQLi/XSS with clear exploit path, privilege escalation, SSRF to internal services
Medium Exploitable but requires auth, limited blast radius, or partial mitigations exist
Low Theoretical risk, defense-in-depth issue, requires unlikely preconditions
Informational Best practice violation, no direct exploitability, hardening recommendation

If a scanner says "Critical" but the finding is behind authentication + rate limiting + the data exposed is non-sensitive → it's Medium at best.

Step 5: Record Triage Decisions

For each finding, record:

finding_id: <id>
validated_severity: <critical|high|medium|low|informational>
verdict: <confirmed|false-positive|needs-validation>
rationale: <2-3 sentences explaining WHY this severity, what you checked>

Run:

python3 scripts/scan_db.py triage \
  --finding-id <id> \
  --severity <level> \
  --verdict <confirmed|false-positive|needs-validation> \
  --rationale "explanation here"

Step 6: Produce Triage Summary

After all findings are triaged, generate the summary:

python3 scripts/scan_db.py triage-summary --scan-dir <dir>

Output includes:

  • Total findings ingested vs. unique vs. false positives
  • Breakdown by validated severity
  • List of findings needing deeper validation (verdict = needs-validation)
  • Recommended priority order for remediation

Key Principles

  • Scanner severity is a suggestion, not a verdict. Your job is to validate.
  • A finding you can't trace to reachable code is needs-validation, not confirmed.
  • False positives are fine — document why and move on. Don't waste time on them.
  • When in doubt about exploitability, escalate to the validation workflow.
  • Group related findings (e.g., 15 instances of the same missing input validation) — fix the pattern, not each instance individually.