SECURITY OPERATIONS

Vulnerability Management

Správa zranitelností od detekce po remediaci - jak efektivně prioritizovat, sledovat a opravovat bezpečnostní problémy ve vašich aplikacích.

Co je Vulnerability Management?

Vulnerability Management je systematický proces identifikace, hodnocení, prioritizace a remediace bezpečnostních zranitelností. Nejde jen o spouštění scannerů - jde o celý životní cyklus od nalezení problému až po ověření jeho opravy. Klíčové je mít centrální místo kde sledujete všechny findings a můžete efektivně pracovat na jejich řešení.

Životní cyklus zranitelností

Vulnerability Lifecycle

1. Discovery - Detekce

Nalezení zranitelností pomocí automatizovaných nástrojů

  • SAST scannery (Semgrep, SonarQube)
  • SCA nástroje (Snyk, Dependabot)
  • DAST nástroje (OWASP ZAP)
  • Container scanning (Trivy)
  • Secret detection (GitLeaks)

2. Triage - Hodnocení

Posouzení závažnosti a relevance nalezení

  • Je to skutečný problém nebo false positive?
  • Jaká je závažnost (CVSS score)?
  • Je zranitelnost exploitable v našem kontextu?
  • Přiřazení CWE kategorie

3. Prioritization - Prioritizace

Určení pořadí řešení na základě rizika

  • Kritičnost systému (production vs dev)
  • Dostupnost exploitu (EPSS score)
  • Business impact
  • Snadnost remediace

4. Remediation - Oprava

Odstranění nebo zmírnění zranitelnosti

  • Fix v kódu
  • Update závislostí
  • Konfigurační změna
  • Compensating control (WAF pravidlo)

5. Verification - Ověření

Potvrzení že oprava funguje

  • Re-scan po opravě
  • Penetration testing
  • Code review
  • Uzavření tiketu

DefectDojo - Vulnerability Management Platform

DefectDojo je open-source platforma pro správu bezpečnostních nálezů. Integruje se s mnoha scanning nástroji a poskytuje centrální místo pro sledování všech zranitelností.

Hierarchie v DefectDojo

  • Product Type: Nejvyšší úroveň - např. "Microservices Application"
  • Product: Konkrétní aplikace/služba - např. "Payment Service"
  • Engagement: Časový okamžik testování - např. "Release v2.1.0"
  • Test: Typ testu - např. "SAST Scan", "Dependency Check"
  • Finding: Konkrétní nalezená zranitelnost

Import scan results do DefectDojo

# GitLab CI - automatický upload do DefectDojo upload_to_defectdojo: stage: report image: python:3.11 script: - pip install requests - | python << 'EOF' import requests import json import os DEFECTDOJO_URL = os.environ['DEFECTDOJO_URL'] API_KEY = os.environ['DEFECTDOJO_API_KEY'] PRODUCT_ID = os.environ['DEFECTDOJO_PRODUCT_ID'] headers = { 'Authorization': f'Token {API_KEY}', } # Upload Semgrep results with open('semgrep-results.json', 'rb') as f: response = requests.post( f'{DEFECTDOJO_URL}/api/v2/import-scan/', headers=headers, data={ 'product': PRODUCT_ID, 'engagement_name': f'CI-{os.environ["CI_PIPELINE_ID"]}', 'scan_type': 'Semgrep JSON Report', 'active': 'true', 'verified': 'false', 'minimum_severity': 'Info', }, files={'file': f} ) print(f'Semgrep upload: {response.status_code}') # Upload Trivy results with open('trivy-results.json', 'rb') as f: response = requests.post( f'{DEFECTDOJO_URL}/api/v2/import-scan/', headers=headers, data={ 'product': PRODUCT_ID, 'engagement_name': f'CI-{os.environ["CI_PIPELINE_ID"]}', 'scan_type': 'Trivy Scan', 'active': 'true', }, files={'file': f} ) print(f'Trivy upload: {response.status_code}') EOF dependencies: - semgrep_scan - trivy_scan

CWE - Common Weakness Enumeration

CWE je standardizovaný seznam bezpečnostních slabin v software a hardware. Každá zranitelnost má přiřazené CWE ID, které přesně identifikuje typ problému.

Příklady CWE kategorií

  • CWE-89: SQL Injection
  • CWE-79: Cross-site Scripting (XSS)
  • CWE-798: Use of Hard-coded Credentials
  • CWE-22: Path Traversal
  • CWE-918: Server-Side Request Forgery (SSRF)
  • CWE-502: Deserialization of Untrusted Data

CWE vs OWASP Top 10

OWASP Top 10 jsou široké kategorie. CWE jsou specifické typy zranitelností které do těchto kategorií spadají. Například CWE-89 (SQL Injection) a CWE-79 (XSS) obě spadají do OWASP kategorie "Injection".

Prioritizace zranitelností

CVSS - Common Vulnerability Scoring System

Standardní metrika pro hodnocení závažnosti zranitelností na škále 0-10.

  • 0.0: None
  • 0.1 - 3.9: Low
  • 4.0 - 6.9: Medium
  • 7.0 - 8.9: High
  • 9.0 - 10.0: Critical

EPSS - Exploit Prediction Scoring System

Pravděpodobnost že zranitelnost bude aktivně zneužita v následujících 30 dnech. Pomáhá prioritizovat real-world rizika.

# Příklad prioritizace findings Priority 1 (Fix ASAP): - CVSS >= 9.0 - EPSS > 0.5 (50% pravděpodobnost exploitu) - Production system - Internet-facing Priority 2 (Fix this sprint): - CVSS 7.0 - 8.9 - Any EPSS - Production system Priority 3 (Fix next sprint): - CVSS 4.0 - 6.9 - Production system Priority 4 (Backlog): - CVSS < 4.0 - Non-production - False positives candidate

Práce s false positives

Ne každý finding je skutečný problém. Security scannery často generují false positives. Důležité je je správně identifikovat a označit, aby nezatěžovaly další analýzu.

Jak se vyhnout false positive overload

  • Konfigurujte scannery pro váš stack (ignorujte nerelevantní pravidla)
  • Používejte baseline - porovnávejte s předchozími scany
  • Označujte false positives v DefectDojo
  • Vytvářejte exceptions pro známé false positives
  • Pravidelné review a čištění starých findings

Vulnerability Management Best Practices

Proces

  • Definujte SLA pro remediaci podle severity (Critical=24h, High=7d, etc.)
  • Automaticky importujte scan results do centrální platformy
  • Pravidelné triage meetings (týdenní)
  • Sledujte metriky (MTTR, open findings count, trend)
  • Reportujte managementu (měsíční security posture report)

Developer Education

  • Používejte findings jako učební materiál
  • Ukažte developerům jak vypadá SQL injection v jejich kódu
  • Security workshops zaměřené na nejčastější problémy
  • Sdílejte CWE dokumentaci
  • Cílem je méně nových zranitelností, ne jen opravovat staré

Co NEDĚLAT

  • Ignorovat findings protože "není čas"
  • Označovat všechno jako false positive
  • Mít stovky neřešených findings (alert fatigue)
  • Opravovat pouze kritické a ignorovat ostatní
  • Nemít žádnou metriku nebo reporting