SBOM
SBOM (Software Bill of Materials) je v podstatě seznam použitých „součástek“. Z pohledu software se jedná o strukturovaný inventář všech komponent, knihoven a modulů, které byly použity k vytvoření dané aplikace.
Proč je SBOM stále častěji vyžadován?
Software se „nepíše na zelené louce“, ale skládá se jako stavebnice z existujících dílů. SBOM řeší několik kritických problémů:
- Rychlá reakce na oznámené zranitelnosti (Security) – Když se objeví nová chyba (třeba v široce používané knihovně jako Log4j), díky SBOM okamžitě víte, zda se tato knihovna nachází ve vašem softwaru. Nemusíte kód složitě auditovat, stačí „prohledat seznam“.
- Zákazník ví co kupuje – Umožňuje firmám kontrolovat, co přesně kupují od externích dodavatelů. Pokud dodavatel nepředloží SBOM, kupuje zákazník „černou skříňku“.
- Licenční shoda (Compliance) – Každá knihovna v kódu má svou licenci. SBOM pomáhá právním týmům předejít licenčním sporům a dodržet podmínky „vnořených“ licencí. Například využití licence typu GPL vás může následně nutit zpřístupnit i váš vlastní kód.
- Transparentnost a důvěra – Pro státní správu a kritickou infrastrukturu se SBOM stává zákonnou povinností.
RAD Studio
V Delphi / C++Builderu se kód překládá do binárních souborů, kde se míchá váš kód, kód použitých frameworků VCL/FMX/FireDAC a knihoven třetích stran. SBOM by tak měl jít tak hluboko, aby pokryl všechny přímé i přenesené závislosti (závislosti vašich závislostí).
Měl by tak obsahovat vše, co není součástí vašeho vlastního zdrojového kódu:
- Knihovny třetích stran – Rozšiřující balíky jako FastReport, TMS nebo Skia4Delphi.
- Open-source – Vše, co jste stáhli z GitHubu, webu nebo přes GetIt (např. Spring4D).
- Externí knihovny – (DLL/BPL), které vaše aplikace volá (např. OpenSSL, SQLite a další).
- Externí knihovny používané Embarcaderem – např. RegEx engine, Zlib a podobně.
Z výše uvedeného lze jednoduše vyvodit, že SBOM musíte aktualizovat v těchto situacích:
- Nová verze Delphi / Hotfix – Embarcadero v nových verzích (nebo patchích) často aktualizuje verze knihoven jako OpenSSL, PCRE, ZLib nebo SQLite, které jsou v Delphi integrované. Pokud se v těchto knihovnách objeví zranitelnost, váš starý SBOM by obsahoval nepravdivé informace.
- Aktualizace komponent třetích stran – I když jen povýšíte verzi např. TMS, Devart či jiných komponent třetích stran kvůli opravě chyby, verze v SBOM se musí změnit. Útočníci často cílí na konkrétní verze komponent.
- Změna konfigurace kompilace – Pokud do projektu přidáte novou jednotku (uses) z externí knihovny, kterou jste dříve sice v PC měli, ale nepoužívali, musí se v SBOM objevit. Ideální přístup je integrovat generování SBOM přímo do vašeho CI/CD proces (například s využitím MSBuild nebo FinalBuilder).