+− THE DAILY DIFFdev & AI news
SHIP IT

Jedno extra pole spôsobilo pád 8,5 milióna PC. 78 minút.

19.

19. júla 2024, 04:09 UTC: CrowdStrike tlačí Channel File 291 – aktualizáciu obsahu Rapid Response – na každý online senzor Windows Falcon. Šablóna, ktorú dodáva, bola vo februári deklarovaná s 21 vstupnými poľami; kód, ktorý dodáva vstupy, vytvára pole s 20 prvkami. Štyri mesiace nikto nečíta pole 21, pretože každé pravidlo ho ponecháva ako zástupný znak. Táto aktualizácia tam vloží skutočný vzor. Cloudový Content Validator napočíta 21 oproti deklarácii a prejde; Content Interpreter senzora, bez kontroly rozsahu, číta slot 21 v režime jadra a Windows vyvoláva chybu stránky: PAGE_FAULT_IN_NONPAGED_AREA, csagent.sys. Ovládač sa zámerne načíta skoro počas bootovania, prečíta ten istý súbor, znova spadne – bootovacia slučka. Vrátené späť o 05:27 UTC, o 78 minút neskôr, ale 8,5 milióna počítačov (podľa počtu Microsoftu, menej ako 1% Windows) už má súbor a oprava vyžaduje človeka pri každej klávesnici: Núdzový režim, odstránenie C-00000291*.sys, obnovovací kľúč BitLocker. Letecké spoločnosti, nemocnice, banky a 911 centrá sa zastavia; Delta ruší asi 7 000 letov a nárokuje si minimálne 500 miliónov dolárov od CrowdStrike a Microsoftu; Parametrix odhaduje účet Fortune 500 na takmer 5,4 miliardy dolárov. Postmortem z vlastnej analýzy hlavných príčin CrowdStrike (Root Cause Analysis), predbežnej revízie po incidente (Preliminary Post Incident Review), blogu Microsoftu, 8-K správy Delta a svedectiev Snemovne reprezentantov. Git blame: 65 CrowdStrike / 25 návrh režimu jadra / 10 piatok. Verdikt k oprave: SHIP IT, tesne.

Prečítajte si písanú edíciu (anglicky) ↗

Čo toto video pokrýva

  • 28. feb – 24. apr 2024: senzor 7.11 dodáva typ šablóny IPC (21 deklarovaných polí, 20 dodaných); záťažový test prešiel 5. marca; štyri inštancie fungujú, pretože pole 21 je zástupný znak
  • 19. júl, 04:09 UTC: dve nové inštancie šablóny; logická chyba Content Validátora prepustí tú, ktorá nie je zástupným znakom; čítanie mimo rozsahu v jadre; 05:27 UTC vrátené späť
  • 19. – 29. júl: manuálna náprava (Núdzový režim, odstránenie súboru, kľúč BitLocker); ~97% senzorov späť do 24. júla, ~99% do 29. júla
  • 25. júl – 19. aug: kontrola rozsahu za behu, validácia počtu polí pri kompilácii, kontroly Validátora, canary + nasadzovacie krúžky, zákaznícka kontrola nad obsahom Rapid Response, dve nezávislé recenzie; úplná RCA s výpisom pádu 6. augusta

Preložený prepis

Preložené z pôvodného anglického rozprávania. Dostupný zvuk a titulky sú kontrolované službou YouTube.

0:00 Jedna bezpečnostná aktualizácia nesie dvadsaťjeden polí do ovládača určeného pre dvadsať, a osem a pol milióna počítačov Windows zobrazí modrú obrazovku pred raňajkami. 19. júla 2024, 04:09 UTC. CrowdStrike tlačí Channel File 291 na každý senzor Falcon. O sedemdesiatosem minút neskôr ho stiahnu; dovtedy letecké spoločnosti, nemocnice a banky hľadia na ten istý modrý obdĺžnik. Prvý príspevok CEO hovorí, že nejde o kybernetický útok, pravda, a to nie je podstatné. Ako sa to stalo, prečo je to možné a kto za to môže.

0:27 Toto je The Daily Diff, postmortem. 28. februára. Senzor 7.11 dodáva nový detektor pre pomenované rúry. Deklaruje dvadsaťjeden vstupných polí; kód, ktorý ho dodáva, vytvára pole z dvadsiatich. Nikto si nevšimne: štyri mesiace každé pravidlo ponecháva pole dvadsaťjeden ako zástupný znak a nikto nečíta zástupný znak. Záťažový test prejde, štyri pravidlá sa dodajú, všetko v poriadku. 19. júla, 04:09. Dve nové pravidlá; jedno vloží skutočný vzor do poľa dvadsaťjeden.

0:51 Cloudový validátor napočíta dvadsaťjeden oproti deklarácii a povie, že je to v poriadku. Každý online hostiteľ Windows si ho stiahne naraz, pretože neexistuje žiadny kanárikový kruh. Senzor číta slot dvadsaťjeden, čo nie je jeho pamäť, a jadro robí to, čo robia jadrá. 05:27, vrátené. Príliš neskoro pre každého, kto reštartoval: ovládač sa načíta skoro počas bootovania, prečíta ten istý súbor a znova spadne. Bootovacia slučka. Prečo je to možné? Pravidlá sú konfigurácia pushovaná z cloudu, takže kód nepreskočí kódo

1:16 pipeline. Interpreter nemá kontrolu rozsahu; dôveruje validátoru, a validátor dôveruje deklarácii. A všetko to beží v režime jadra, kde zlý ukazovateľ nie je výnimkou, ale chybou stránky, ktorú Windows podľa neho nemôže chrániť pomocou try-except. Patrick Wardle to popoludní prečíta z výpisu pádu: index nula x štrnásť, slot dvadsaťjeden. Oprava je manuálna. Núdzový režim, odstrániť C-00000291, reštartovať. S BitLockerom najprv zadajte štyridsaťosemmiestny

1:43 obnovovací kľúč, ktorý žije na serveri, ktorý je tiež modrý. Git blame. CrowdStrike, šesťdesiatpäť percent: RCA uvádza šesť zistení, a zistenie šesť je celá veta: Inštancie šablóny by mali mať fázované nasadenie. Návrh režimu jadra, dvadsaťpäť: CrowdStrike hovorí, že Windows nemôže ešte hostiť bezpečnosť mimo jadra, Microsoft hovorí, že to nie je incident Microsoftu, a chybu stránky to nezaujíma.

2:05 Piatok, desať. Správa o commite hovorí, že nejde o kód. Dosah výbuchu: osem a pol milióna zariadení, menej ako jedno percento Windows. Delta ruší sedemtisíc letov a žaluje o päťsto miliónov, vrátane Microsoftu. Poisťovatelia odhadujú účet Fortune 500 na takmer päť miliárd. Hacker News: štyri a pol tisíc bodov. Irónia: aktualizácia, ktorá mala odhaliť nové útočné techniky, jednu sama priniesla. Verdikt, postmortem: SHIP IT, tesne.

2:27 Kontrola rozsahu za šesť dní, fázované kruhy, kontrola zákazníka nad aktualizáciami obsahu, dve externé recenzie. Tesne, pretože to všetko už bola štandardná prax. Pondelok: čokoľvek, čo váš agent stiahne z cloudu, dostane kanárikový kruh. Konfigurácia je kód v momente, keď ju niečo parsuje tam, kde nemôže hodiť výnimku. Pošlite mi incident, o ktorom ešte stále nemôžete hovoriť, v komentároch, alebo na the daily diff dot dev. A to je dnešný diff.

2:48 Som Niko z Axrisi. Spojte zodpovedne.

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

Súvisiace videá