SECURITY TESTING

SAST - Staticka Analyza Bezpecnosti

Automaticka detekce bezpecnostnich zranitelnosti primo ve zdrojovem kodu - najdete a opravte problemy jeste pred tim, nez se dostanou do produkce.

Co je SAST?

SAST (Static Application Security Testing) je metoda testovani bezpecnosti aplikaci, ktera analyzuje zdrojovy kod, bytecode nebo binarni soubory bez nutnosti spoustet aplikaci. SAST nastroje hledaji bezpecnostni zranitelnosti a problemy v kodu jiz ve fazi vyvoje, coz umoznuje jejich vcasnou opravu za vyrazne nizsich nakladu.

85% Levnejsi oprava pri detekci v dev fazi
10x Rychlejsi nez manualni code review
24/7 Kontinualni automaticka kontrola

Jak SAST funguje

SAST nastroje analyzuji zdrojovy kod pomoci kombinace statickych analytickych technik. Proces zahrnuje parsing kodu, vytvoreni abstraktniho syntaktickeho stromu (AST) a naslednou analýzu data flow a pattern matching proti znamym bezpecnostnim vzorum.

1

Analyza zdrojoveho kodu

SAST nastroj parsuje zdrojovy kod a vytvari abstraktni syntakticky strom (AST), ktery reprezentuje strukturu programu.

2

Data Flow Analysis

Nastroj sleduje tok dat v aplikaci a identifikuje cesty, kterymi mohou neduveryhodna data proniknout do citlivych funkci.

3

Pattern Matching

Porovnani kodu s databazi znamych bezpecnostnich vzoru a anti-patterns (napr. SQL injection, XSS, hardcoded secrets).

4

Generovani reportu

Vytvoreni detailniho reportu s nalezenymi zranitelnostmi, vcetne zavaznosti (CVSS score), umisteni v kodu a doporuceni k oprave.

Priklad: SQL Injection detekce

// Zranitelny kod - SAST by toto odhalil String query = "SELECT * FROM users WHERE username = '" + userInput + "'"; Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(query); // SQL Injection risk! // Bezpecny kod - parametrizovany dotaz String query = "SELECT * FROM users WHERE username = ?"; PreparedStatement stmt = connection.prepareStatement(query); stmt.setString(1, userInput); // Safe - parametrized ResultSet rs = stmt.executeQuery();

Popularni SAST Nastroje

Open Source

SonarQube

Komplexni platforma pro code quality a security s podporou 27+ programovacich jazyku.

  • Detailni dashboardy a metriky kvality kodu
  • Quality Gates pro automaticke blokovani
  • Integrace s GitHub, GitLab, Azure DevOps
  • Community edition zdarma
Enterprise

Checkmarx SAST

Enterprise-grade SAST reseni s pokrocilou data flow analyzou a nizkym poctem false positives.

  • Pokrocila data flow analyza
  • Nizka mira false positives
  • OWASP Top 10 a CWE/SANS Top 25 coverage
  • Podpora pro compliance (PCI DSS, HIPAA)
Open Source

Semgrep

Rychly a flexibilni SAST nastroj s podporou vlastnich pravidel a IaC scanningu.

  • Velmi rychla analyza (10-100x rychlejsi)
  • Snadne psani vlastnich pravidel
  • Podpora pro IaC security scanning
  • Free tier s core funkcionalitou
GitHub Native

GitHub CodeQL

Semanticka analyza pomoci QL dotazu s nativni integraci do GitHub Actions.

  • Semanticka analyza pomoci QL dotazu
  • Nativni integrace s GitHub Actions
  • Zdarma pro public repositories
  • Pokrocile security queries
Enterprise

Veracode SAST

Cloud-based SAST s policy-based reporting a compliance certifications.

  • Cloud-based analyza (bez instalace)
  • Policy-based reporting
  • Compliance certifications (NIST, OWASP)
  • Managed service option
Developer-First

Snyk Code

Real-time scanning v IDE s AI-powered fix suggestions.

  • Real-time scanning v IDE (VS Code, IntelliJ)
  • AI-powered fix suggestions
  • Developer-friendly UX
  • Integrace s Snyk Open Source (SCA)

Integrace SAST do CI/CD Pipeline

GitLab CI/CD Pipeline

# .gitlab-ci.yml stages: - build - test - security - deploy sast-scan: stage: security image: returntocorp/semgrep:latest script: - semgrep --config=auto --json --output=sast-report.json artifacts: reports: sast: sast-report.json allow_failure: false # Blokuje merge pri kritickych issues

GitHub Actions Workflow

# .github/workflows/sast.yml name: SAST Security Scan on: push: branches: [ main, develop ] pull_request: branches: [ main ] jobs: codeql-analysis: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Initialize CodeQL uses: github/codeql-action/init@v2 with: languages: javascript, python - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2

Best Practice: Security Gates

Nastavte quality gates v CI/CD pipeline, ktere automaticky zablouji deployment, pokud SAST nastroj najde zranitelnosti nad urcitou zavaznosti (napr. Critical nebo High).

Vyhody a Vyzvy SAST

Vyhody SAST

  • Casna detekce: Zranitelnosti jsou odhaleny ve fazi vyvoje, ne az v produkci
  • Nizke naklady na opravu: Oprava v dev fazi je 85% levnejsi nez v produkci
  • 100% code coverage: SAST analyzuje cely kod, nejen bezne pouzivane cesty
  • Automatizace: Scanning probiha automaticky pri kazdem commitu/merge
  • Vzdelavani vyvojaru: Vyvojari se uci bezpecnemu programovani z reportu
  • Compliance: Pomaha splnit regulatorni pozadavky (NIS2, PCI DSS, GDPR)

Vyzvy a Omezeni

  • False positives: SAST muze hlasit zranitelnosti, ktere nejsou skutecne hrozby
  • Konfigurace a tuning: Vyzaduje cas na spravne nastaveni pravidel
  • Runtime zranitelnosti: SAST neohali problemy, ktere se projevi az za behu (k tomu slouzi DAST)
  • Triage overhead: Vyvojari musi vyhodnotit a prioritizovat nalezy
  • Legacy code: V starych codebases muze najit tisice issues najednou

SAST vs DAST

SAST (White-box): Analyzuje zdrojovy kod, najde vice zranitelnosti, ale generuje vice false positives.

DAST (Black-box): Testuje bezici aplikaci, najde runtime issues, ale ma limitovany coverage.

Nejlepsi pristup: Kombinace SAST + DAST + SCA = kompletni security testing.

Implementacni Pruvodce

Faze 1: Vyber nastroje

Vyberte SAST nastroj podle:

  • Podporovanych programovacich jazyku
  • Integrace s vasimi CI/CD nastroji
  • Licencnich nakladu (open source vs commercial)
  • Miry false positives (trial test na vasem kodu)

Faze 2: Pilot projekt

Zacnete s jednim projektem nebo tymem:

  • Spustte baseline scan
  • Vyreste kriticke a high severity issues
  • Nastavte quality gates
  • Zmerte metriky (pocet nalezu, cas na opravu)

Faze 3: Skalovani

Rozsirite na celou organizaci:

  • Vytvorte centralni security team pro triage
  • Nastavte SLA pro remediation (napr. Critical: 7 dni, High: 30 dni)
  • Integrujte s ticketing systemem (Jira)
  • Pravidelny reporting pro management

Faze 4: Optimalizace

Prubezne vylepsovani:

  • Tuning pravidel pro snizeni false positives
  • Vytvoreni vlastnich custom rules
  • Developer training na secure coding
  • Automatizace remediation pomoci auto-fix funkci