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).