Analýza bezpečnosti závislostí a knihoven třetích stran
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í, což je kritické v době, kdy až 90% moderních aplikací
obsahuje kód třetích stran.
90%
aplikací používá open-source kód
70%
zranitelností pochází ze závislostí
200+
průměrný počet závislostí v projektu
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
Log4Shell (CVE-2021-44228): Kritická RCE zranitelnost v Log4j knihovně, postihla miliony aplikací
Heartbleed (CVE-2014-0160): Zranitelnost v OpenSSL umožňující krádež citlivých dat
Struts 2 (CVE-2017-5638): RCE zranitelnost, která vedla k útoku na Equifax (147M záznamů)
event-stream npm package: Supply chain útok s bitcoin minerem injektovaným do populární knihovny
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)
Free tier pro open-source projekty
Cloud/Commercial
Mend (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
Free/Open Source
OWASP Dependency-Check
Open-source nástroj od OWASP pro detekci známých zranitelností v závislostech projektu.
Podpora Java, .NET, Ruby, Node.js, Python
CLI, Maven plugin, Gradle plugin, Jenkins plugin
Integrace s NVD (National Vulnerability Database)
HTML/XML/JSON reporting
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 všechny ekosystémy
Zdarma pro všechny GitHub repozitáře
Integrace s GitHub Security Advisory
CLI Tool
npm audit / yarn audit
Vestavěné nástroje v npm a Yarn pro audit Node.js závislostí.
Okamžitá analýza package.json
Automatické opravy pomocí npm audit fix
Severity levels (low, moderate, high, critical)
Integrace s npm registry databází
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:
# found 3 vulnerabilities (1 moderate, 2 high)
# Automatická oprava zranitelností
npm audit fix
# Zobrazení detailního reportu
npm audit --json > audit-report.json
# Audit s production dependencies pouze
npm audit --production
# Nastavení audit levelu v CI/CD
npm audit --audit-level=high
# Pokud existuje high nebo critical, příkaz selže (exit code 1)
Příklad výstupu npm audit:
┌───────────────┬──────────────────────────────────────────────────┐
│ Moderate │ Regular Expression Denial of Service │
├───────────────┼──────────────────────────────────────────────────┤
│ Package │ minimatch │
├───────────────┼──────────────────────────────────────────────────┤
│ Patched in │ >=3.0.5 │
├───────────────┼──────────────────────────────────────────────────┤
│ Dependency of │ jest [dev] │
├───────────────┼──────────────────────────────────────────────────┤
│ Path │ jest > @jest/core > micromatch > minimatch │
├───────────────┼──────────────────────────────────────────────────┤
│ More info │ https://npmjs.com/advisories/1673 │
└───────────────┴──────────────────────────────────────────────────┘
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)
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): ISO/IEC 5962:2021 standard
CycloneDX: OWASP standard zaměřený na bezpečnost
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
# - CPE identifikátory pro CVE lookup
# 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: