V roce 2026 o 131% více nahlášených CVE denně než loni.

Závislosti

Analýza dosažitelnosti

Analýza dosažitelnosti (reachability analysis) ověřuje, zda váš kód může skutečně zavolat zranitelnou funkci v závislosti. Balíček může obsahovat chybu, které se vaše aplikace nikdy nedotkne, a analýza dosažitelnosti takové nálezy posune níž v seznamu, aby se týmy mohly věnovat těm, které lze zneužít.

Aktualizováno

Proč existuje

Sken SCA porovnává verze balíčků s bezpečnostními oznámeními. Ví, že daná verze obsahuje chybu, ale ne to, zda vaše aplikace používá část s touto chybou. Knihovna se stovkami funkcí a jedním zranitelným parserem se hlásí stejně, ať tento parser voláte, nebo ne, a v rozsáhlém stromu závislostí se to nasčítá do backlogu, který nikdo nedokáže dokončit.

Jak analýza dosažitelnosti funguje

  1. Najít zranitelný kód. Nástroj musí vědět, ve které funkci se zranitelnost nachází. Bezpečnostní oznámení to často neuvádějí, a proto si dodavatelé udržují vlastní data.
  2. Sestavit graf volání. Nástroj zmapuje, které funkce volají které, od vašeho kódu dolů přes závislosti.
  3. Hledat cestu. Pokud z vašeho kódu vede k zranitelné funkci řetězec volání, je nález dosažitelný. Pokud ne, označí se jako nedosažitelný a dostane nižší prioritu.

Úrovně dosažitelnosti

Úroveň Na jakou otázku odpovídá Kompromis
Závislost Importuje se balíček vůbec? Levná, ale odstraní jen nepoužívané závislosti
Funkce Může cesta volání dosáhnout zranitelné funkce? Běžný cíl; vyžaduje graf volání a data o zranitelnostech pro jednotlivé funkce
Běh Načetl se nebo běžel tento kód v produkci? Důkazy ze skutečného provozu, ale jen pro to, co běželo během sledování

Skutečné zneužití vyžaduje víc než cestu. Vstup se musí k funkci dostat v podobě, která chybu spustí, a to dokáže posoudit jen málo nástrojů.

Kde analýza dosažitelnosti nestačí

  • Nedosažitelné neznamená bezpečné. Znamená to jen, že nástroj žádnou cestu nenašel. Reflexe, dynamické importy a načítání pluginů mohou vytvářet cesty, které statická analýza nevidí.
  • Pokrytí jazyků se liší. Staticky kompilované jazyky se sledují snáz než dynamické a nástroje se liší v tom, pro které ekosystémy nabízejí analýzu na úrovni funkcí.
  • Data o zranitelnostech jsou neúplná. Pokud nikdo nepřiřadil bezpečnostní oznámení ke konkrétní funkci, nástroj nemá co hledat.
  • Mění se s vaším kódem. Dnešní nedosažitelný nález může být po dalším vydání dosažitelný, takže odpověď je třeba znovu ověřovat.
  • Řadí jen to, co bylo identifikováno. Komponentu, kterou skener nikdy nenašel, nelze analyzovat. Bez úplného inventáře třídí analýza dosažitelnosti jen část obrazu.

Jak ji bezpečně používat

  • Používejte ji k řazení práce, ne k jejímu odmítání. Nejprve opravte dosažitelné nálezy a ostatní si naplánujte, místo abyste je uzavírali.
  • Nedovolte jí přebít aktivní zneužívání. Nález v katalogu KEV od CISA nebo s vysokým skóre EPSS si zaslouží lidské rozhodnutí, i když je označen jako nedosažitelný.
  • Buďte opatrní u služeb dostupných z internetu. Chybná odpověď stojí nejvíc tam, kde se k vám útočníci dostanou přímo.
  • Zaznamenejte zdůvodnění. Pokud rozhodnete, že se vás nález netýká, prohlášení VEX toto rozhodnutí uchová a vysvětlí vašim zákazníkům proč.

Jak dosažitelnost zapadá do závažnosti, dat o zneužití a obchodního kontextu, se dočtete v článku jak prioritizovat zranitelnosti.

Které nástroje nabízejí analýzu dosažitelnosti?

Mnoho komerčních nástrojů SCA, mimo jiné Snyk, Endor Labs, Mend, Checkmarx, Semgrep a Aikido, přičemž hloubka se liší podle jazyka. Nástroj govulncheck pro Go je bezplatný příklad pro jeden ekosystém. Co který nástroj pokrývá, najdete ve srovnání nejlepších nástrojů SCA.

Kam zapadá CRACI

CRACI analýzu dosažitelnosti nenabízí. Pracuje na kroku před ní: vědět, co v buildu vůbec je. Je to runner pro GitHub Actions, který zaznamenává každý balíček, jenž každý job stáhne, včetně skrytých závislostí, které skenery lockfilů přehlédnou, a průběžně znovu vyhodnocuje SBOM toho, co bylo vydáno, jak se zveřejňují nové zranitelnosti. Pokud je pro vás dosažitelnost hlavní prioritou, používejte vedle CRACI nástroj, který je pro ni určen. Viz kam CRACI zapadá vedle vašich nástrojů SCA.

Analýza dosažitelnosti: časté dotazy

Co je analýza dosažitelnosti v SCA?

Ověřuje, zda váš kód může skutečně zavolat zranitelnou funkci v závislosti, aby nálezy bez cesty z vašeho kódu mohly dostat nižší prioritu.

Je analýza dosažitelnosti přesná?

Je užitečná, ale není důkazem. Dosažitelný nález má skutečnou cestu, zatímco nedosažitelný znamená jen, že nástroj žádnou nenašel. Cestu mohou skrýt reflexe, dynamické načítání i mezery v datech o zranitelnostech.

Lze nedosažitelné zranitelnosti ignorovat?

Rovnou je neignorujte. Zařaďte je za dosažitelné nálezy, po změnách kódu je znovu ověřte a zvláštní pozornost věnujte všemu, co je aktivně zneužíváno nebo běží ve službě dostupné z internetu.

Jaký je rozdíl mezi dosažitelností a zneužitelností?

Dosažitelnost se ptá, zda se kód může dostat k zranitelné funkci. Zneužitelnost se ptá, zda útočník může tuto cestu použít ke škodě. Chyba může být dosažitelná, a přesto ve vašem nastavení nezneužitelná.

Snižuje analýza dosažitelnosti počet výstrah?

Ano, to je její hlavní účel. O kolik, záleží na jazyce, nástroji a na tom, jak velkou část každé závislosti váš kód používá.

Začněte s úplným přehledem o buildu

Podívejte se na každý balíček, který job v GitHub Actions skutečně stáhl, dřív než se rozhodnete, co stojí za opravu.

Rezervujte si demo