Dodavatelský řetězec
Co je SLSA?
SLSA, vyslovuje se „salsa“, znamená Supply-chain Levels for Software Artifacts. Jde o bezpečnostní rámec, který prokazuje, že software byl sestaven tak, jak tvrdí jeho výrobce, z uvedeného zdrojového kódu a bez manipulace po cestě. Jeho úrovně dávají výrobcům cestu, kterou mohou jít, a odběratelům způsob, jak ji vyžadovat.
Aktualizováno
Jaký problém SLSA řeší?
Můžete zkontrolovat každý řádek zdrojového kódu, a přesto dodat něco jiného, protože uživatelé spouštějí výstup buildu. Pokud je build kompromitován, jako tomu bylo u SolarWinds, z čistého zdrojového kódu vznikne otrávené vydání. SLSA se zaměřuje právě na tuto mezeru: dokáže kdokoli ověřit, že tento artefakt vznikl z tohoto zdrojového kódu tímto procesem?
Úrovně SLSA
SLSA dělí své požadavky do tzv. tracků. Aktuální verze 1.2 má Build track a Source track. Build track má čtyři úrovně.
| Úroveň | Název | Co vyžaduje | Co vám dává |
|---|---|---|---|
| Build L0 | Žádné záruky | Nic | L0 znamená absenci SLSA |
| Build L1 | Provenance existuje | Konzistentní proces buildu a provenance, kterou generuje buildovací platforma a předává odběratelům | Pomáhá předcházet chybám, ale lze ji snadno obejít nebo zfalšovat |
| Build L2 | Hostovaná buildovací platforma | Buildy běží na hostované platformě, která provenance generuje a podepisuje, a odběratelé ji ověřují | Zfalšování provenance už vyžaduje cílený útok |
| Build L3 | Zabezpečené buildy | Běhy jsou od sebe izolované a podpisový klíč je mimo dosah kroků buildu definovaných uživatelem | Zfalšování provenance vyžaduje zneužití zranitelnosti, což je nad síly většiny útočníků |
Úrovně nejsou známka, kterou musíte maximalizovat. Každá chrání před konkrétními hrozbami, proto zvolte úroveň, která odpovídá vašemu riziku. Správci open source projektů s hostovanou službou CI se často dostanou na L2 bez velkého úsilí.
Co je provenance?
Provenance (původ) je záznam o tom, jak artefakt vznikl. V SLSA uvádí, která platforma ho sestavila, z jakého zdrojového kódu, jakým procesem a s jakými vstupy nejvyšší úrovně. Provenance na úrovni L2 a výše je podepsaná, takže odběratel může ověřit, že pochází z buildovací platformy a nebyla změněna.
Představte si SBOM jako seznam ingrediencí a provenance jako informaci o tom, kde a jak bylo jídlo uvařeno. Odpovídají na různé otázky a dobře se doplňují: SBOM uvádí, co je uvnitř, zatímco provenance říká, odkud artefakt pochází.
Jak SLSA zavést
- Sestavujte v CI, pokaždé stejně. Přestaňte vydávat z notebooků. To je většina práce potřebné k dosažení L1.
- Generujte provenance. Na GitHubu vytvářejí podepsanou provenance artifact attestations. Podívejte se, jak attestations fungují se SBOM v GitHub Actions.
- Ověřujte ji tam, kde na tom záleží. Podepsaná provenance, kterou nikdo nekontroluje, nikoho nechrání. Přidejte ověření do kroku nasazení nebo do admission controlleru.
- Zabezpečte build. Izolujte běhy a držte podpisové klíče mimo kroky buildu. Viz srovnání zabezpečení runnerů.
- Ptejte se svých závislostí. Upřednostňujte balíčky, které zveřejňují provenance, což dnes podporují registry jako npm.
Co SLSA nepokrývá
- Zranitelnosti. I dokonale sestavený artefakt může obsahovat chybu. SLSA neříká nic o tom, zda je kód bezpečný.
- Škodlivý zdrojový kód. Pokud útočník provede commit do repozitáře, provenance věrně zaznamená build tohoto kódu. Část tohoto problému řeší Source track.
- Co build stáhl. Provenance uvádí vstupy nejvyšší úrovně. Nic v Build tracku nevyžaduje úplný seznam závislostí, a právě k tomu slouží SBOM.
- Důvěryhodní insideři. Backdoor v xz přišel přes důvěryhodného správce a samotná SLSA by ho nezastavila.
SLSA a další rámce
SLSA jde do hloubky v integritě buildu. NIST SSDF je mnohem širší: pokrývá bezpečný vývoj jako celek, včetně postupu pro ochranu a archivaci vydání, který provenance SLSA podporuje. SLSA je projektem OpenSSF a mnoho týmů používá oba rámce společně. Širší souvislosti najdete v článku co je bezpečnost softwarového dodavatelského řetězce.
Kde se uplatní CRACI
CRACI nevytváří podepsanou provenance a nehlásí se k žádné úrovni SLSA, takže pokud ji potřebujete, použijte GitHub artifact attestations nebo podobnou službu. CRACI přidává to, co SLSA vynechává: úplný záznam o tom, co každý job GitHub Actions stáhl. Každý job běží ve vlastním izolovaném virtuálním stroji, každý balíček, který stáhne, se zapíše do SBOM, a egress policy blokuje spojení, která build nepotřebuje. Viz generování SBOM z doby buildu.
SLSA: časté dotazy
Co znamená zkratka SLSA?
Supply-chain Levels for Software Artifacts. Vyslovuje se „salsa“.
Jaké jsou úrovně SLSA?
Build track má čtyři: L0, žádné záruky; L1, provenance existuje; L2, hostovaná buildovací platforma, která provenance podepisuje; a L3, zabezpečené buildy s izolovanými běhy a chráněnými podpisovými klíči. Verze 1.2 navíc přidává Source track.
Co je provenance v SLSA?
Záznam o tom, jak byl artefakt sestaven: na jaké platformě, z jakého zdrojového kódu, jakým procesem a s jakými vstupy nejvyšší úrovně. Od Build L2 výše je podepsaná, takže ji odběratelé mohou ověřit.
Jaký je rozdíl mezi SLSA a SBOM?
SBOM uvádí, co software obsahuje. Provenance SLSA popisuje, jak a kde byl sestaven. Obvykle chcete obojí.
Je SLSA povinná?
Ne. Jde o dobrovolný rámec komunity OpenSSF. Někteří zákazníci a organizace mohou určitou úroveň požadovat, ale není to zákon.
O jakou úroveň SLSA bych měl usilovat?
Začněte na Build L1 tím, že budete sestavovat v CI a generovat provenance, a pak přejděte na L2 na hostované platformě, kam se mnoho týmů dostane rychle. L3 se hodí pro vydání, na kterých závisí mnoho dalších nebo která nesou vysoké riziko.
Zjistěte, co váš build stáhl
Provenance říká, odkud artefakt pochází. Podívejte se, co do něj vstoupilo, u každého jobu GitHub Actions.
Rezervujte si demo