Analýza zloženia softvéru, bežne označovaná skratkou SCA, preveruje komponenty, ktoré neboli vytvorené priamo v rámci aplikácie. Výsledkom tohto procesu je presný prehľad prepojený s konkrétnymi verziami a dôkazmi, nie iba zoznam postavený na tom, čo si vývojový tím pamätá zo samotnej inštalácie.
Čo analýza vyhodnocuje
SCA nástroje dokážu kontrolovať balíčkovacie manifesty, lockfile súbory, kontajnerové obrazy, skompilované artefakty alebo ich kombináciu. Každý z týchto zdrojov odpovedá na inú otázku. Manifest zachytáva priamy zámer autorov, zatiaľ čo lockfile zaznamenáva presné verzie, ktoré vybral balíčkovací manažér. Samotný artefakt zasa ukazuje, čo sa reálne dostalo do buildu. Porovnaním týchto zdrojov možno odhaliť nepoužívané balíky, nedeklarované súčasti a rozdiely medzi vývojovým a produkčným prostredím.
Získaný zoznam zahŕňa priame balíky a každú tranzitívnu závislosť, ktorú so sebou prinášajú. To je kľúčové najmä pre audit vibe-coded softvéru, kde sa aj malý počet explicitne zvolených balíkov môže rozrásť do rozsiahleho stromu komponentov.
| Zdroj dôkazov | Čo ukazuje | Čo môže prehliadnuť |
|---|---|---|
| Balíčkovací manifest | Deklarované priame závislosti | Presné verzie vybrané systémom |
| Lockfile | Vyriešený graf závislostí | Komponenty pridané mimo balíčkovacieho manažéra |
| Zostavený artefakt | Komponenty prítomné v builde | Balíky načítavané až za behu programu |
| Behové prostredie | Komponenty sledované pri používaní | Kódové cesty, ktoré počas pozorovania neboli spustené |
Čo preveruje audit
Výsledok skenovania je len odrazovým mostíkom. Audítor musí určiť, či nájdená zraniteľnosť reálne ovplyvňuje aplikáciu, či je ohrozená funkcia dostupná a či sa daný balík vôbec používa na produkcii. V rámci revízie sa overujú aj licencie, úroveň údržby kódu, zdroje balíkov a to, či viaceré samostatné knižnice zbytočne neduplikujú rovnakú funkciu.
Efektívna revízia prebieha v niekoľkých krokoch:
- Zostavenie zoznamu: Identifikácia priamych a nepriamych komponentov a priradenie k jednoznačným verziám.
- Priradenie známych chýb: Porovnanie zistených verzií s aktuálnymi databázami zraniteľností.
- Overenie dosiahnuteľnosti: Analýza toho, či aplikácia skutočne spúšťa dotknuté časti kódu.
- Kontrola riadenia: Overenie politiky aktualizácií, obmedzení pre zdroje, testov a vlastníctva kódu.
- Zaznamenanie výsledku: Vytvorenie zoznamu softvérových komponentov alebo inej formy udržiavaného prehľadu.
Prečo samotný sken nestačí
Hoci SCA dokáže odhaliť verzie so zverejnenými chybami, samo osebe nedokáže popísať celkové riziko pre aplikáciu. Nástroj určený výhradne na vývoj a balík vystavený neovereným vstupom nepredstavujú rovnakú hrozbu. Čistý výsledok skenovania navyše nie je stopercentným dôkazom bezpečnosti, keďže databázy zraniteľností a zoznamy závislostí bývajú niekedy neúplné.
Analýza prináša skutočnú hodnotu až vtedy, keď sa prepojí s rizikom závislostí (dependency risk), celkovou architektúrou aplikácie a výsledkami testovania. Táto kombinácia premení obyčajný výstup zo skenera na prioritizovaný akčný plán: odstrániť mŕtve balíky, aktualizovať vystavené komponenty, izolovať ťažko nahraditeľné knižnice a zdokumentovať akceptované riziká. Ide o dôležitú súčasť inžinierskej disciplíny, ktorá je nevyhnutná, keď sa generovaný kód nasadzuje do produkcie.