Integrita kódu platformy

Důležitým problémem při provozování složitého systému, jako je Microsoft Azure, je zajistit, aby v systému běžel jenom autorizovaný software. Neautorizovaný software představuje pro jakoukoli firmu několik rizik:

  • Bezpečnostní rizika, jako jsou vyhrazené nástroje pro útoky, vlastní malware a software třetích stran se známými ohroženími zabezpečení
  • Rizika dodržování předpisů v případě, že se schválený proces správy změn nepoužívá k uvedení nového softwaru
  • Riziko kvality z externě vyvinutého softwaru, který nemusí splňovat provozní požadavky firmy

Azure čelí stejné výzvě, ale s výraznou složitostí. Tisíce serverů běží na softwaru, který vyvíjejí a udržují tisíce inženýrů. Tento rozsah představuje velkou útočnou plochu, kterou samotné obchodní procesy nezvládnou.

Přidání autorizační brány

Azure využívá bohatý inženýrský proces, který implementuje brány v oblasti bezpečnosti, souladu a kvality nasazeného softwaru. Tento proces zahrnuje kontrolu přístupu ke zdrojovému kódu, kontroly kódu od kolegy, statickou analýzu bezpečnostních zranitelností, Microsoft Security Development Lifecycle (SDL) a funkční a kvalitativní testování. Microsoft musí zajistit, že nasazený software tímto procesem prochází. Integrita kódu pomáhá dosáhnout této záruky.

Integrita kódu jako autorizační brána

Integrita kódu je služba na úrovni jádra, která byla dostupná od Windows Server 2016. Integrita kódu může použít striktní zásady řízení provádění při každém načtení ovladače nebo dynamicky propojené knihovny (DLL), spuštění spustitelného binárního souboru nebo spuštění skriptu. Podobné systémy, například DM-Verity, existují pro Linux. Politika integrity kódu se skládá ze sady autorizačních indikátorů, buď certifikátů pro podepisování kódu, nebo SHA-256 hashů souboru, které jádro porovná před načtením nebo spuštěním binárního souboru či skriptu.

Integrita kódu umožňuje správcům systému definovat politiku, která autorizuje pouze binární soubory a skripty, které konkrétní certifikáty podepisují nebo odpovídají specifikovaným SHA-256 hashům. Jádro vynucuje tuto zásadu tím, že blokuje spuštění všeho, co nesplňuje nastavené zásady.

Politika integrity kódu může blokovat kritický software v produkci a způsobit výpadek, pokud není politika zcela správná. Vzhledem k této obavě se možná ptáte, proč bezpečnostní monitoring nestačí k odhalení neoprávněného spuštění softwaru. Integrita kódu má auditní režim, který místo zabránění spuštění může upozornit na neautorizovaný software. Upozornění mohou výrazně přinést hodnotu při řešení rizik spojených s dodržováním předpisů. Nicméně u bezpečnostních rizik, jako je ransomware nebo vlastní malware, může být zpoždění reakce o několik sekund rozdílem mezi ochranou a tím, že protivník získá trvalé postavení ve vaší flotile. V rámci Azure společnost Microsoft významně investuje do řízení veškerých rizik spojených s integritou kódu, která by mohla přispět ke vzniku výpadku s dopadem na zákazníky.

Proces sestavování

Jak již bylo popsáno, build systém Azure má bohatou sadu testů, které zajišťují, že změny softwaru jsou bezpečné a v souladu s předpisy. Poté, co sestavení projde validací, ho systém sestavení podepíše pomocí certifikátu Azure pro sestavení. Certifikát uvádí, že sestavení prošlo celým procesem řízení změn. Posledním testem, kterým sestavení prochází, je ověřování kódových podpisů (CSV). CSV potvrzuje, že nově vytvořené binárky splňují politiku integrity kódu Microsoft před jejich nasazením do produkce. Toto ověření dává Microsoftu vysokou míru jistoty, že nesprávně podepsané binární soubory nezpůsobí výpadek s dopadem na zákazníky. Pokud CSV najde problém, build se rozbije a příslušní inženýři jsou vyzváni, aby problém vyšetřili a opravili.

Bezpečnost během nasazování

I když Azure provádí CSV pro každou verzi, nějaká změna nebo nekonzistence v produkci může stále způsobit výpadek související s integritou kódu. Například stroj může provozovat starou verzi politiky integrity kódu, nebo může být v nezdravém stavu, který vede k falešně pozitivním výsledkům v integritě kódu. Na úrovni Azure Microsoft viděl všechno. Azure nadále chrání před rizikem výpadku během nasazení.

Všechny změny v Azure musí proběhnout v sérii fází. První fáze jsou interní testovací instance Azure. Další fáze slouží pouze dalším produktovým týmům Microsoft. Poslední fáze slouží zákazníkům třetích stran. Když Azure nasadí změnu, tato změna postupně přechází do jednotlivých fází a v každé z nich se pozastaví, aby se vyhodnotil stav této fáze. Pokud změna nemá negativní dopad, postupuje do další fáze. Pokud Microsoft udělá špatnou změnu v zásadě integrity kódu, fázové nasazení změnu detekuje a vrátí ji zpět.

Reakce na incidenty

I přes tuto vrstvenou ochranu může server ve flotile blokovat správně autorizovaný software a způsobit problém s klienty, což je jeden z nejhorších scénářů Microsoft. Poslední vrstvou obrany je lidské vyšetřování. Pokaždé, když kontrola integrity kódu zablokuje soubor, vygeneruje upozornění pro pohotovostní inženýry, aby jej prošetřili. Upozornění umožňuje inženýrům zahájit bezpečnostní šetření a zasáhnout, ať už jde o skutečný útok, falešně pozitivní výsledek nebo jinou situaci ovlivňující zákazníka. Toto upozornění minimalizuje čas potřebný k odstranění problémů s integritou kódu.

Další kroky

Chcete-li se dozvědět více o tom, jak Microsoft podporuje integritu a bezpečnost platformy, viz: