+− THE DAILY DIFFdev & AI news
SHIP IT

Jedno pole navíc shodilo 8,5 milionu PC. 78 minut.

19.

19. července 2024, 04:09 UTC: CrowdStrike tlačí Channel File 291 – aktualizaci Rapid Response Content – na každý online senzor Windows Falcon. Šablona, kterou krmí, byla v únoru deklarována s 21 vstupními poli; kód, který dodává vstupy, vytváří pole o 20. Po čtyři měsíce nic nečte pole 21, protože každé pravidlo ho ponechává jako zástupný znak. Tato aktualizace tam vloží skutečný vzor. Cloudový Content Validator počítá 21 proti deklaraci a projde ji; Content Interpreter senzoru, bez kontroly hranic, čte slot 21 v režimu jádra a Windows způsobí chybu stránky: PAGE_FAULT_IN_NONPAGED_AREA, csagent.sys. Ovladač se načítá záměrně brzy při spouštění, čte stejný soubor, znovu spadne – boot loop. Vráceno v 05:27 UTC, o 78 minut později, ale 8,5 milionu strojů (podle Microsoftu, méně než 1 % Windows) již soubor má a oprava vyžaduje člověka u každé klávesnice: Nouzový režim, smazat C-00000291*.sys, obnovovací klíč BitLockeru. Letecké společnosti, nemocnice, banky a centra tísňové linky 911 se zastaví; Delta ruší asi 7 000 letů a požaduje alespoň 500 milionů dolarů od CrowdStrike a Microsoftu; Parametrix odhaduje účet pro Fortune 500 na téměř 5,4 miliardy dolarů. Postmortem z vlastní analýzy CrowdStrike Root Cause Analysis, Preliminary Post Incident Review, blogu Microsoftu, Delta 8-K a svědectví Sněmovny. Git blame: 65 CrowdStrike / 25 design režimu jádra / 10 pátek. Verdikt o opravě: SHIP IT, těsně.

Přečtěte si psané vydání (anglicky) ↗

Co toto video pokrývá

  • 28. únor – 24. duben 2024: senzor 7.11 dodává typ šablony IPC (deklarováno 21 polí, dodáno 20); zátěžový test projde 5. března; čtyři instance fungují, protože pole 21 je zástupný znak
  • 19. červenec, 04:09 UTC: dvě nové instance šablony; logická chyba Content Validatoru propustí instanci bez zástupného znaku; čtení mimo hranice v jádře; 05:27 UTC vráceno
  • 19.–29. červenec: manuální náprava (Nouzový režim, smazat soubor, klíč BitLockeru); ~97 % senzorů zpět do 24. července, ~99 % do 29. července
  • 25. červenec – 19. srpen: kontrola hranic za běhu, validace počtu polí při kompilaci, kontroly validátoru, canary + nasazovací kruhy, zákaznická kontrola nad obsahem Rapid Response, dvě nezávislé revize; plná RCA s výpisem pádu 6. srpna

Přeložený přepis

Přeloženo z původního anglického vyprávění. Dostupné audio a titulky jsou řízeny YouTube.

0:00 Jedna bezpečnostní aktualizace nese dvacet jedna polí do ovladače vytvořeného pro dvacet, a osm a půl milionu Windows strojů zobrazí modrou obrazovku před snídaní. 19. července 2024, 04:09 UTC. CrowdStrike tlačí Channel File 291 na každý senzor Falcon. O sedmdesát osm minut později ho stáhnou; do té doby letecké společnosti, nemocnice a banky zírají na stejný modrý obdélník. První příspěvek CEO říká, že nejde o kybernetický útok, pravda, a to není pointa. Jak se to stane, proč je to možné a kdo nese vinu.

0:27 Toto je The Daily Diff, postmortem. 28. února. Senzor 7.11 dodává nový detektor pro pojmenované roury. Deklaruje dvacet jedna vstupních polí; kód, který ho krmí, vytváří pole o dvaceti. Nikdo si nevšimne: po čtyři měsíce každé pravidlo ponechává pole dvacet jedna jako zástupný znak a nikdo nečte zástupný znak. Zátěžový test projde, čtyři pravidla se vydají, vše v pořádku. 19. července, 04:09. Dvě nová pravidla; jedno vloží skutečný vzor do pole dvacet jedna.

0:51 Cloudový validátor počítá dvacet jedna proti deklaraci a říká, že je to v pořádku. Každý online hostitel Windows si to stáhne najednou, protože neexistuje žádný "canary ring". Senzor čte slot dvacet jedna, což není jeho paměť, a jádro dělá to, co dělají jádra. 05:27, vráceno. Příliš pozdě pro každého, kdo restartoval: ovladač se načítá brzy při spouštění, čte stejný soubor a znovu spadne. Boot loop. Proč je to možné? Pravidla jsou konfigurace tlačená z cloudu, takže ne kód přeskočí kódovou

1:16 pipeline. Interpreter nemá kontrolu hranic; důvěřuje validátoru, a validátor důvěřuje deklaraci. A vše běží v režimu jádra, kde špatný ukazatel není výjimka, ale chyba stránky, o které Windows říká, že nemůže být chráněna try-except. Patrick Wardle to odpoledne přečte z výpisu pádu: index nula x čtrnáct, slot dvacet jedna. Oprava je manuální. Nouzový režim, smazat C-00000291, restartovat. S BitLockerem nejprve zadejte čtyřiceti osmi místný

1:43 obnovovací klíč, který žije na serveru, který je také modrý. git blame. CrowdStrike, šedesát pět procent: RCA uvádí šest zjištění, a zjištění šest je celá věta: Instance šablon by měly mít fázované nasazení. Design režimu jádra, dvacet pět: CrowdStrike říká, že Windows nemůže zatím hostovat zabezpečení mimo jádro, Microsoft říká, že to není incident Microsoftu, a chyba stránky se nestará.

2:05 Pátek, deset. Zpráva o commitu říká, že to není kód. Poloměr exploze: osm a půl milionu zařízení, méně než jedno procento Windows. Delta ruší sedm tisíc letů a žaluje za pět set milionů, včetně Microsoftu. Pojišťovny odhadují účet pro Fortune 500 na téměř pět miliard. Hacker News: čtyřicet pět set bodů. Ironie: aktualizace určená k detekci nových útočných technik jednu dodala. Verdikt, postmortem: SHIP IT, těsně.

2:27 Kontrola hranic do šesti dnů, fázované kruhy, zákaznická kontrola nad aktualizacemi obsahu, dvě externí recenze. Těsně, protože to všechno už byla standardní praxe. Pondělí: cokoli, co váš agent stáhne z cloudu, dostane canary ring. Konfigurace je kód v okamžiku, kdy ji něco parsuje tam, kde nemůže vyhodit chybu. Pošlete mi incident, o kterém stále nesmíte mluvit, v komentářích nebo na the daily diff dot dev. A to je dnešní rozdíl.

2:48 Jsem Niko z Axrisi. Spojujte zodpovědně.

Zdroje

  1. CrowdStrike, Root Cause Analysis — Channel File 291 (Aug 6, 2024, 12 pp.)www.crowdstrike.com
  2. CrowdStrike, Executive Summary of the RCA (Aug 6, 2024)www.crowdstrike.com
  3. CrowdStrike, Preliminary Post Incident Review (Jul 24, 2024)www.crowdstrike.com
  4. CrowdStrike, Remediation and Guidance Hub — Channel File 291 (the workaround steps)www.crowdstrike.com
  5. CrowdStrike, tech alert of Jul 19, 2024 (archived: Safe Mode → delete C-00000291*.sys → BitLocker key)web.archive.org
  6. Microsoft, David Weston, "Helping our customers through the CrowdStrike outage" (Jul 20, 2024; the 8.5 million figure)blogs.microsoft.com
  7. Delta Air Lines, Form 8-K (Aug 8, 2024; ~7,000 cancellations, at least $500 million)www.sec.gov
  8. Adam Meyers (CrowdStrike SVP), written testimony, House Homeland Security Subcommittee (Sep 24, 2024)homeland.house.gov
  9. George Kurtz on X, Jul 19, 2024, 09:45 UTCx.com
  10. Patrick Wardle on X, Jul 19, 2024 (the crash-dump index 0x14)x.com
  11. Hacker News, Jul 19, 2024 — "CrowdStrike Update: Windows Bluescreen and Boot Loops" (4,489 points)news.ycombinator.com
  12. The Guardian, Jul 24, 2024 — "CrowdStrike global outage to cost US Fortune 500 companies $5.4bn" (Parametrix estimate)www.theguardian.com
  13. Hacker News, Jul 21, 2024 — "Initial details about why CrowdStrike's CSAgent.sys crashed" (519 points)news.ycombinator.com
  14. Wikipedia — 2024 CrowdStrike-related IT outagesen.wikipedia.org

Související videa