Bezpečnost8 min čtení

Software Composition Analysis

Analýza bezpečnosti závislostí a knihoven třetích stran - SBOM, skenování CVE, Snyk, Dependabot a ochrana před supply chain útoky.

Co je Software Composition Analysis?

Software Composition Analysis (SCA) je automatizovaný proces identifikace a analýzy open-source komponent, knihoven a závislostí ve vaší aplikaci. SCA nástroje detekují známé bezpečnostní zranitelnosti, licenční rizika a zastaralé verze závislostí. Podle zprávy Black Duck OSSRA 2026 obsahuje open source 98 % auditovaných codebase.

98 %
codebase obsahuje open source (OSSRA 2026)
87 %
codebase má alespoň jednu zranitelnost v open source (OSSRA 2026)
1 180
open-source komponent v průměrné aplikaci (OSSRA 2026)

Proč je SCA kritické?

Moderní aplikace jsou postaveny na desítkách až stovkách knihoven třetích stran. Každá závislost představuje potenciální bezpečnostní riziko:

  • Známé zranitelnosti (CVE): Veřejně známé bezpečnostní chyby v open-source knihovnách
  • Tranzitivní závislosti: Závislosti vašich závislostí, které často zůstávají nepovšimnuty
  • Zastaralé verze: Neaktualizované knihovny s nepropatrovanými chybami
  • Licenční rizika: Konfliktní nebo nekompatibilní licence open-source komponent
  • Supply chain útoky: Kompromitované knihovny záměrně napadené útočníky

Známé případy zranitelností v závislostech

  • Log4Shell (CVE-2021-44228): Kritická RCE zranitelnost v Apache Log4j 2 (CVSS 10.0), vedená v katalogu CISA KEV jako aktivně zneužívaná
  • Heartbleed (CVE-2014-0160): Zranitelnost v OpenSSL 1.0.1 umožňující čtení paměti serveru, včetně citlivých dat
  • Struts 2 (CVE-2017-5638): RCE zranitelnost, kterou Equifax označil za vstupní bod útoku z roku 2017; únik se podle FTC týkal přibližně 147 milionů lidí
  • event-stream npm package: Supply chain útok, při kterém se do populární knihovny dostala závislost flatmap-stream se škodlivým kódem cíleným na bitcoinovou peněženku Copay (npm)

Co SCA nástroje detekují?

1. Bezpečnostní zranitelnosti

SCA nástroje skenují vaše závislosti proti databázím známých zranitelností (CVE, NVD, GitHub Advisory Database, Snyk Vulnerability DB):

  • Identifikace CVE čísel a jejich závažnosti (Critical, High, Medium, Low)
  • Dostupnost oprav a doporučené verze pro upgrade
  • Exploitabilita zranitelnosti (existuje aktivní exploit?)
  • CVSS skóre a vektorové popisy útoku

2. Licenční compliance

Analýza licencí open-source knihoven a detekce potenciálních konfliktů:

  • GPL, MIT, Apache, BSD a další licence
  • Kompatibilita licencí s vaším projektem
  • Copyleft požadavky a jejich implikace
  • Komerční rizika při použití určitých licencí

3. Zastaralé závislosti

Identifikace knihoven, které jsou zastaralé nebo již nejsou udržovány:

  • Verze s dostupnými aktualizacemi
  • End-of-life (EOL) knihovny bez podpory
  • Breaking changes při upgradu na novější verze

4. Software Bill of Materials (SBOM)

Kompletní inventář všech komponent ve vaší aplikaci:

  • Přímé závislosti (deklarované v package.json, pom.xml, atd.)
  • Tranzitivní závislosti (závislosti závislostí)
  • Verze, licence, původ každé komponenty
  • Dependency grafy a vztahy mezi knihovnami

Oblíbené SCA nástroje

Cloud / Commercial

Snyk Open Source

Jeden z nejpopulárnějších cloudových SCA nástrojů s rozsáhlou databází zranitelností a snadnou integrací do CI/CD.

  • Automatické PR s opravami
  • Prioritizace zranitelností podle exploitability
  • Podpora npm, Maven, pip, RubyGems, NuGet
  • IDE integrace (VS Code, IntelliJ)
  • Bezplatný plán Free s omezeními
Cloud / Commercial

Mend.io (dříve WhiteSource)

Enterprise-grade SCA řešení se zaměřením na licenční compliance a komplexní reporting.

  • Real-time alerting na nové zranitelnosti
  • Pokročilá licenční analýza
  • Policy enforcement
  • Integrace s Jira, ServiceNow
Open Source

OWASP Dependency-Check

Open-source nástroj od OWASP pro detekci známých zranitelností v závislostech projektu.

  • Plná podpora Java a .NET, další ekosystémy (Node.js, Ruby, Python, Go) částečně nebo jako experimentální analyzátory
  • CLI, Maven, Gradle, Ant a Jenkins plugin
  • Data z NVD API, pro rozumnou rychlost aktualizací je potřeba NVD API klíč (aktuální verze 13.0.0)
  • HTML, XML, JSON, SARIF a další formáty reportů
  • Zcela zdarma a open-source
GitHub Native

GitHub Dependabot

Nativní GitHub nástroj pro automatické bezpečnostní aktualizace závislostí.

  • Automatické Pull Requesty s opravami
  • Dependabot Security Alerts
  • Version updates pro podporované ekosystémy
  • Součást i bezplatného plánu GitHub Free (GitHub Pricing)
  • Integrace s GitHub Security Advisory
CLI Tool

npm audit / yarn npm audit

Vestavěné nástroje v npm a Yarn pro audit Node.js závislostí. V Yarn 2+ se příkaz jmenuje yarn npm audit.

  • Okamžitá analýza stromu závislostí z lockfile
  • Automatické opravy pomocí npm audit fix
  • Severity levels (low, moderate, high, critical)
  • Data z GitHub Advisory Database přes npm registry
Enterprise

JFrog Xray

Universal artifact analysis pro komplexní CI/CD pipeline security.

  • Skenování Docker images, Maven, npm, PyPI
  • Integrace s JFrog Artifactory
  • Policy-based blocking artefaktů
  • Deep scan binárních artefaktů

Praktický příklad: npm audit

Nejjednodušší způsob, jak začít s SCA v Node.js projektech:

# Spuštění auditu závislostí npm audit # Výstup zobrazí nalezené zranitelnosti: # 3 vulnerabilities (1 moderate, 2 high) # Automatická oprava zranitelností npm audit fix # Zobrazení detailního reportu npm audit --json > audit-report.json # Audit pouze produkčních závislostí npm audit --omit=dev # Nastavení audit levelu v CI/CD npm audit --audit-level=high # Při nálezu high nebo critical skončí příkaz nenulovým exit kódem

Příklad výstupu npm audit:

Přepínač --audit-level podle dokumentace npm nefiltruje report, mění jen práh, při kterém příkaz selže.

# npm audit report minimatch <3.0.5 Severity: high minimatch ReDoS vulnerability - https://github.com/advisories/GHSA-f8q6-p94x-37v3 fix available via `npm audit fix` node_modules/minimatch 1 high severity vulnerability To address all issues, run: npm audit fix

SBOM - Software Bill of Materials

SBOM je formální seznam všech komponent, knihoven a modulů ve vašem software. Je to jako "seznam ingrediencí" vaší aplikace.

Proč je SBOM důležité?

  • Transparentnost: Viditelnost do všech komponent vaší aplikace
  • Rychlá reakce na zranitelnosti: Okamžitá identifikace, zda jste postiženi (např. Log4Shell)
  • Compliance: Regulatorní požadavky, např. US Executive Order 14028 (SBOM pro dodavatele federální vlády) nebo EU Cyber Resilience Act, jehož ohlašovací povinnosti platí od 11. září 2026 a hlavní povinnosti od 11. prosince 2027
  • Supply chain security: Detekce neoprávněných nebo škodlivých komponent
  • Licenční audit: Přehled všech použitých licencí

SBOM standardy

  • SPDX (Software Package Data Exchange): standard ISO/IEC 5962:2021, aktuální verze specifikace je SPDX 3.0
  • CycloneDX: OWASP standard zaměřený na bezpečnost, od roku 2024 také standard Ecma ECMA-424 (2. vydání z prosince 2025 odpovídá CycloneDX 1.7)
  • SWID (Software Identification Tags): ISO/IEC 19770-2 standard

Generování SBOM s CycloneDX

# Instalace CycloneDX CLI pro Node.js npm install -g @cyclonedx/cyclonedx-npm # Generování SBOM v CycloneDX formátu cyclonedx-npm --output-file sbom.json # SBOM obsahuje: # - Všechny závislosti (přímé i tranzitivní) # - Verze a licence # - Hashes (checksums) pro integritu # - Package URL (purl) identifikátory pro vyhledání zranitelností # Integrace do CI/CD cyclonedx-npm --output-file sbom.xml --output-format XML # Uložení SBOM jako artifact pro audit trail

Best Practice: SBOM v každém releasu

Generujte a ukládejte SBOM při každém production release. To umožňuje retroaktivní analýzu, pokud je objevena nová zranitelnost v knihovně, kterou jste používali v minulosti.

Integrace SCA do CI/CD pipeline

SCA by mělo být integrováno do každé fáze vývojového cyklu:

1. Pre-commit / IDE integrace

  • Snyk extension pro VS Code
  • Pre-commit hooks s dependency checkem

2. CI/CD pipeline (Continuous Integration)

# GitHub Actions příklad name: Security Scan on: [push, pull_request] jobs: dependency-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - name: Run npm audit run: npm audit --audit-level=high - name: Run Snyk uses: snyk/actions/node@master env: SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} with: args: --severity-threshold=high - name: Generate SBOM run: | npm install -g @cyclonedx/cyclonedx-npm cyclonedx-npm --output-file sbom.json - name: Upload SBOM artifact uses: actions/upload-artifact@v7 with: name: sbom path: sbom.json

3. GitLab CI/CD příklad

dependency_scanning: stage: test image: node:24 script: # npm audit - npm ci - npm audit --audit-level=moderate || true # SBOM v CycloneDX formátu pro GitLab - npx @cyclonedx/cyclonedx-npm --output-file gl-sbom-npm.cdx.json # Snyk - npm install -g snyk - snyk auth $SNYK_TOKEN - snyk test --json > snyk-report.json artifacts: when: always reports: cyclonedx: gl-sbom-npm.cdx.json paths: - snyk-report.json owasp_dependency_check: stage: test image: name: owasp/dependency-check:13.0.0 entrypoint: [""] script: # Dependency-Check vyžaduje Javu, proto běží ve vlastním image; NVD_API_KEY nastavte jako CI/CD proměnnou - /usr/share/dependency-check/bin/dependency-check.sh --project "MyApp" --scan . --format HTML --format JSON --nvdApiKey "$NVD_API_KEY" artifacts: when: always paths: - dependency-check-report.html - dependency-check-report.json

4. Continuous Monitoring

  • Dependabot: Automatické PR s bezpečnostními opravami
  • Snyk Monitor: Continuous monitoring production dependencies
  • Scheduled scans: Týdenní/denní rescany proti novým CVE databázím

SCA Best Practices

Doporučené postupy

  • Automatizujte skenování: Každý commit a PR by měl projít SCA checkemi
  • Nastavte severity thresholdy: Blokujte buildy s critical/high zranitelnostmi
  • Používejte lockfiles: package-lock.json, yarn.lock, Pipfile.lock pro reprodukovatelné buildy
  • Pravidelně aktualizujte: Nečekejte na kritické CVE, aktualizujte preventivně
  • Minimalizujte závislosti: Méně závislostí = menší attack surface
  • Ověřujte integrity: Používejte checksums a signed packages
  • Monitorujte production: Runtime monitoring pro supply chain útoky
  • Vytvářejte SBOM: Pro každý release a uchovávejte historii
  • Vendor security: Kontrolujte bezpečnostní historii knihoven před přidáním
  • Private registry: Zvažte interní Artifactory/Nexus pro kontrolu artefaktů

Časté chyby při SCA

  • Ignorování false positives: Časem ztratíte důvěru v nástroj
  • Žádný remediation proces: SCA bez akce je zbytečné
  • Skenování pouze production deps: DevDependencies také mohou obsahovat zranitelnosti
  • Automatické aktualizace bez testů: Breaking changes mohou rozbít aplikaci
  • Zapomínání na tranzitivní závislosti: Podle OSSRA 2026 je 64 % open-source komponent v typické codebase tranzitivních

SCA a další DevSecOps nástroje

SCA je jen jedna vrstva security testing. Pro komplexní bezpečnost kombinujte s:

Nástroj Co testuje Kdy použít
SCA Zranitelnosti v závislostech Každý commit, před přidáním nové závislosti
SAST Zranitelnosti ve vlastním kódu Během vývoje, v CI/CD
DAST Runtime zranitelnosti v běžící aplikaci Staging/QA environment před production
Container Scanning Zranitelnosti v base images a layers Před push do registry, v runtime
IaC Security Misconfigurace v Terraform/CloudFormation Před aplikací infrastrukturních změn

Zdroje

  1. Black Duck: 2026 Open Source Security and Risk Analysis (OSSRA) Report (březen 2026)
  2. NIST NVD: CVE-2021-44228 (Log4Shell) (srpen 2026)
  3. Equifax: Equifax Releases Details on Cybersecurity Incident (září 2017)
  4. FTC: Equifax to Pay $575 Million as Part of Settlement (červenec 2019)
  5. npm Blog: Details about the event-stream incident (listopad 2018)
  6. npm Docs: npm audit (říjen 2026)
  7. OWASP Dependency-Check: Release 13.0.0 (srpen 2026)
  8. Ecma International: ECMA-424 CycloneDX Bill of Materials Specification (prosinec 2025)
  9. SPDX: Overview (ISO/IEC 5962:2021) (říjen 2026)
  10. NIST: Software Security in Supply Chains: Software Bill of Materials (SBOM) (listopad 2024)
  11. European Commission: Cyber Resilience Act (říjen 2026)

Chcete to mít vyřešené bez vlastního DevOps týmu?

Náš čtyřčlenný DevOps tým se o vaši platformu stará za pevnou měsíční cenu.

Nebo napište na info@devsecops.cz. Údaje zpracujeme podle zásad ochrany soukromí.