🔍 SECURITY TESTING

SAST - Statická Analýza Bezpečnosti

Automatická detekce bezpečnostních zranitelností přímo ve zdrojovém kódu

Co je SAST?

SAST (Static Application Security Testing) je metoda testování bezpečnosti aplikací, která analyzuje zdrojový kód, bytecode nebo binární soubory bez nutnosti spouštět aplikaci. SAST nástroje hledají bezpečnostní zranitelnosti a problémy v kódu již ve fázi vývoje.

🎯 Klíčová výhoda SAST

SAST umožňuje najít a opravit bezpečnostní zranitelnosti ještě před tím, než se kód dostane do produkce. To výrazně snižuje náklady na opravu a riziko bezpečnostních incidentů.

85% Levnější oprava při detekci v dev fázi
10x Rychlejší než manuální code review
24/7 Kontinuální automatická kontrola

Jak SAST funguje

1

Analýza zdrojového kódu

SAST nástroj parsuje zdrojový kód a vytváří abstraktní syntaktický strom (AST), který reprezentuje strukturu programu.

2

Data Flow Analysis

Nástroj sleduje tok dat v aplikaci a identifikuje cesty, kterými mohou nedůvěryhodná data proniknout do citlivých funkcí.

3

Pattern Matching

Porovnání kódu s databází známých bezpečnostních vzorů a anti-patterns (např. SQL injection, XSS, hardcoded secrets).

4

Generování reportu

Vytvoření detailního reportu s nalezenými zranitelnostmi, včetně závažnosti (CVSS score), umístění v kódu a doporučení k opravě.

Příklad: SQL Injection detekce

// ❌ Zranitelný kód - SAST by toto odhalil String query = "SELECT * FROM users WHERE username = '" + userInput + "'"; Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(query); // 🚨 SQL Injection risk! // ✅ Bezpečný kód - parametrizovaný dotaz String query = "SELECT * FROM users WHERE username = ?"; PreparedStatement stmt = connection.prepareStatement(query); stmt.setString(1, userInput); // ✅ Safe - parametrized ResultSet rs = stmt.executeQuery();

Populární SAST Nástroje

SonarQube

Open Source Multi-language CI/CD

Podporované jazyky: Java, C#, JavaScript, Python, PHP, Go, Kotlin, Ruby, Swift, a další (27+ jazyků)

Výhody:

  • Detailní dashboardy a metriky kvality kódu
  • Quality Gates pro automatické blokování
  • Integrace s GitHub, GitLab, Azure DevOps
  • Community edition zdarma

Checkmarx SAST

Enterprise Comprehensive OWASP

Podporované jazyky: 25+ jazyků včetně legacy (COBOL, PL/SQL)

Výhody:

  • Pokročilá data flow analýza
  • Nízká míra false positives
  • OWASP Top 10 a CWE/SANS Top 25 coverage
  • Podpora pro compliance (PCI DSS, HIPAA)

Semgrep

Open Source Fast Custom Rules

Podporované jazyky: 30+ jazyků včetně infrastructure (Terraform, Dockerfile)

Výhody:

  • Velmi rychlá analýza (10-100x rychlejší)
  • Snadné psaní vlastních pravidel
  • Podpora pro IaC security scanning
  • Free tier s core funkcionalitou

GitHub CodeQL

Free for OSS Semantic GitHub Native

Podporované jazyky: C/C++, C#, Java, JavaScript, Python, Go, Ruby

Výhody:

  • Sémantická analýza pomocí QL dotazů
  • Nativní integrace s GitHub Actions
  • Zdarma pro public repositories
  • Pokročilé security queries

Veracode SAST

Enterprise Cloud Compliance

Podporované jazyky: 100+ frameworks and languages

Výhody:

  • Cloud-based analýza (bez instalace)
  • Policy-based reporting
  • Compliance certifications (NIST, OWASP)
  • Managed service option

Snyk Code

Developer-First IDE Real-time

Podporované jazyky: JavaScript, TypeScript, Java, Python, Go, C#, PHP, Ruby, Swift, Scala

Výhody:

  • 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

Příklad: 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 při kritických issues

Příklad: 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, které automaticky zablokují deployment, pokud SAST nástroj najde zranitelnosti nad určitou závažností (např. Critical nebo High).

Výhody SAST

Výzvy a Omezení

⚖️ SAST vs DAST

SAST (White-box): Analyzuje zdrojový kód, najde více zranitelností, ale generuje více false positives.

DAST (Black-box): Testuje běžící aplikaci, najde runtime issues, ale má limitovaný coverage.

Nejlepší přístup: Kombinace SAST + DAST + SCA = kompletní security testing.

Implementační Průvodce

Fáze 1: Výběr nástroje

Vyberte SAST nástroj podle:

Fáze 2: Pilot projekt

Začněte s jedním projektem nebo týmem:

Fáze 3: Škálování

Rozšiřte na celou organizaci:

Fáze 4: Optimalizace

Průběžné vylepšování:

Související témata

Potřebujete pomoc s implementací SAST?

Pomůžeme vám vybrat správný nástroj, nastavit CI/CD integraci a vyškolit váš tým v secure coding practices.