Závislosti
Co je analýza softwarového složení (SCA)?
Analýza softwarového složení najde open source komponenty a komponenty třetích stran ve vašem softwaru a zkontroluje je na známé zranitelnosti, problémy s licencemi a zastaralé verze. Většina kódu, který dodáváte, je kód, na kterém závisíte, takže SCA pokrývá většinu vašeho kódu. Analyzovat ale umí jen komponenty, které se jí podaří identifikovat.
Aktualizováno
Jak SCA funguje
- Identifikace komponent. Nástroj čte to, na co ho nasměrujete: manifesty a lockfily v repozitáři, nainstalované balíčky nebo obsah image kontejneru či binárního souboru. Výsledkem je inventář komponent a verzí, často exportovaný jako SBOM.
- Porovnání se známými riziky. Každá komponenta se vyhledá v databázích zranitelností, jako jsou GitHub Advisory Database, OSV a NVD, a její deklarovaná licence se porovná s vaší politikou.
- Prioritizace. Nálezy se seřadí podle závažnosti a některé nástroje přidávají analýzu dosažitelnosti, která ověří, zda váš kód zranitelnou funkci vůbec může zavolat.
- Oprava. Mnoho nástrojů navrhne opravenou verzi nebo otevře pull request, jako to dělají Dependabot a Renovate. U zranitelné tranzitivní závislosti bývá oprava v balíčku, který ji stahuje, což ukazuje graf závislostí.
Co SCA najde
- Známé zranitelnosti ve verzích, které používáte, spolu s bezpečnostními upozorněními, která je popisují.
- Licenční rizika, například copyleftovou licenci v proprietárním produktu.
- Zastaralé a neudržované balíčky, které nedostanou bezpečnostní opravy.
- Škodlivé balíčky, u nástrojů, které také analyzují chování balíčků, a ne jen porovnávají bezpečnostní upozornění.
SCA vs SAST
SCA a statické testování bezpečnosti aplikací (SAST) se často prodávají společně, ale zkoumají jiný kód a odpovídají na jiné otázky.
| SCA | SAST | |
|---|---|---|
| Co analyzuje | Open source komponenty a komponenty třetích stran, na kterých závisíte | Kód, který píše váš tým |
| Co najde | Známé zranitelnosti, problémy s licencemi, zastaralé balíčky | Chyby ve vašem kódu, například injection nebo nebezpečné zpracování vstupů |
| Co čte | Manifesty, lockfily, nainstalované balíčky, image nebo binární soubory | Zdrojový kód |
| Kdy vznikne nový nález | Při změně závislosti nebo při novém bezpečnostním upozornění pro verzi, kterou už dodáváte | Při změně vašeho kódu |
| Typický výstup | Zranitelné komponenty s opravenými verzemi a SBOM | Místa v kódu s chybou a návrh opravy |
Potřebujete obojí. Kód bez nálezů SAST může přesto dodávat zranitelnou závislost a čistý strom závislostí neříká nic o vašem vlastním kódu. Úplné srovnání najdete v článku SAST vs SCA. Pro způsob, jakým je spouštíte, je důležitý jeden rozdíl: nález SAST se objeví, když se změní váš kód, zatímco nález SCA se může objevit u vydání, které jste dodali před měsíci, v den, kdy vyjde nové bezpečnostní upozornění.
Kde SCA končí
Každý výsledek SCA závisí na prvním kroku: identifikaci komponent. Komponentu, kterou nástroj nikdy neidentifikoval, nelze porovnat, prioritizovat ani opravit, a neobjeví se ani jako mezera. Obvyklá slepá místa:
- Co soubory neříkají. Většina nástrojů SCA čte manifesty a lockfily. Chybějící nebo zastaralý lockfile, balíčky obnovené z cache CI, nástroje pro build, stahování a instalační skripty se do inventáře nikdy nedostanou. Viz proč lockfile není záznamem toho, co bylo dodáno.
- Nástroje se neshodnou. Dva skenery nasměrované na stejný commit vrátí různé seznamy komponent, protože každý má vlastní pravidla, co číst a jak to pojmenovat. Viz co open source generátory SBOM přehlédnou.
- Binární soubory. Software distribuovaný jako předem sestavený binární soubor deklaruje málo nebo nic, co by čtečka manifestů mohla vidět.
- Jen známé zranitelnosti. Porovnávání najde to, co bylo zveřejněno. Nový škodlivý balíček nebo nezveřejněná chyba zatím žádné bezpečnostní upozornění nemá.
- Snímek. Sken v pull requestu popisuje daný okamžik. Nová bezpečnostní upozornění pro verze, které už jsou v produkci, vyžadují něco, co průběžně kontroluje, co bylo dodáno.
Nejde o vadu jednoho produktu. Tak skenování funguje, komerční i open source. CRACI našlo zranitelné balíčky, které Snyk a Aikido nenahlásily, protože tyto komponenty nikdy nebyly v tom, co skenovaly.
Zaznamenejte build, ponechte si SCA
CRACI uzavírá mezeru v identifikaci ze strany buildu. Je to runner pro GitHub Actions, který zaznamená každý balíček, který každý job stáhne, v každé hloubce stromu a včetně balíčků obnovených z cache CI, do SBOM, který sám uvádí svou úplnost. SBOM toho, co bylo dodáno, průběžně znovu vyhodnocuje, jakmile jsou zveřejněny nové zranitelnosti, a historie buildů ukazuje, které minulé buildy obsahovaly zranitelný balíček.
CRACI záměrně nedělá SAST ani analýzu dosažitelnosti. Týmy ho provozují vedle nástroje SCA nebo SAST, který pokrývá pull requesty a jejich vlastní kód. Viz srovnání nástrojů SCA, kam CRACI zapadá vedle vašich nástrojů SCA, nebo si rezervujte demo a porovnejte zaznamenaný SBOM se svým současným skenem.
Analýza softwarového složení: časté dotazy
Co je SCA v kybernetické bezpečnosti?
Analýza softwarového složení (SCA) je postup, při kterém se v softwaru hledají open source komponenty a komponenty třetích stran a kontrolují se na známé zranitelnosti, problémy s licencemi a zastaralé verze. Pokrývá kód, na kterém závisíte, na rozdíl od kódu, který píšete.
Jaký je rozdíl mezi SCA a SAST?
SAST analyzuje kód, který píše váš tým, a hledá v něm chyby, jako jsou injection chyby. SCA analyzuje komponenty, na kterých závisíte, a hledá známé zranitelnosti a problémy s licencemi. Odpovídají na jiné otázky, a proto většina bezpečnostních programů používá obojí.
Co znamená skenování SCA?
Sken SCA přečte manifesty, lockfily, nainstalované balíčky nebo image kontejneru projektu, zjistí, které komponenty obsahuje, a porovná je s daty o zranitelnostech a licencích. Výsledkem je seznam nálezů, často spolu se SBOM komponent, které identifikoval.
Je SBOM totéž co SCA?
Ne. SBOM je inventář: seznam komponent ve vydání. SCA je analýza: identifikace komponent a jejich kontrola na rizika. Mnoho nástrojů SCA vytváří SBOM jako vedlejší produkt a SBOM může po vydání sloužit jako vstup pro monitorování zranitelností.
Jaká jsou omezení SCA?
Analyzuje jen komponenty, které dokáže identifikovat, obvykle z manifestů a lockfilů. Balíčky obnovené z cache CI, nástroje pro build, stahování a binární soubory bez metadat balíčků mohou uniknout. Najde známé zranitelnosti, ne neznámé, a sken je jen snímek, pokud nástroj průběžně znovu nekontroluje, co bylo dodáno.
Jaké jsou nejlepší nástroje SCA?
Záleží na tom, co potřebujete nad rámec základů: analýzu dosažitelnosti, detekci škodlivých balíčků, licenční politiku nebo vývojářský workflow. V našem srovnání 13 nástrojů SCA najdete, co každý pokrývá a kde končí.
Zjistěte, co váš sken SCA neviděl
Spusťte jeden workflow GitHub Actions na CRACI a porovnejte jeho zaznamenaný SBOM s komponentami, které nahlásil váš nástroj SCA.
Rezervujte si demo