Eén extra veld liet 8,5 miljoen pc's crashen. 78 minuten.
19 juli 2024, 04:09 UTC: CrowdStrike pusht Channel File 291 — een Rapid Response Content-update — naar elke Windows Falcon-sensor online.
19 juli 2024, 04:09 UTC: CrowdStrike pusht Channel File 291 — een Rapid Response Content-update — naar elke Windows Falcon-sensor online. De template die het voedt, werd in februari gedeclareerd met 21 invoervelden; de code die de invoer levert, bouwt een array van 20. Vier maanden lang leest niets veld 21, omdat elke regel het als een wildcard laat. Deze update plaatst daar een echt patroon. De cloud-side Content Validator telt 21 tegen de declaratie en geeft het door; de Content Interpreter van de sensor, zonder grenzencontrole, leest slot 21 in kernelmodus en Windows veroorzaakt een page-fault: PAGE_FAULT_IN_NONPAGED_AREA, csagent.sys. De driver wordt expres vroeg tijdens het opstarten geladen, leest hetzelfde bestand, crasht opnieuw — bootloop. Teruggedraaid om 05:27 UTC, 78 minuten later, maar 8,5 miljoen machines (Microsoft's telling, minder dan 1% van Windows) hebben het bestand al, en de oplossing is een mens bij elk toetsenbord: Veilige Modus, verwijder C-00000291*.sys, BitLocker-herstelcode. Luchtvaartmaatschappijen, ziekenhuizen, banken en 112-centrales stoppen; Delta annuleert ongeveer 7.000 vluchten en eist minstens $500 miljoen van CrowdStrike en Microsoft; Parametrix schat de rekening voor de Fortune 500 op bijna $5,4 miljard. Postmortem van CrowdStrike's eigen Root Cause Analysis, de Preliminary Post Incident Review, Microsoft's blog, Delta's 8-K en de getuigenis van het Huis. Git blame: 65 CrowdStrike / 25 het kernel-modusontwerp / 10 de vrijdag. Oordeel over de oplossing: SHIP IT, nipt.
Lees de geschreven editie (Engels) ↗
Wat deze video behandelt
- 28 februari – 24 april 2024: sensor 7.11 verzendt het IPC Template Type (21 velden gedeclareerd, 20 geleverd); stresstest slaagt op 5 maart; vier instanties werken omdat veld 21 een wildcard is
- 19 juli, 04:09 UTC: twee nieuwe Template Instances; de logische fout van de Content Validator laat de niet-wildcard erdoor; out-of-bounds read in de kernel; 05:27 UTC teruggedraaid
- 19-29 juli: handmatige herstel (Veilige Modus, verwijder het bestand, BitLocker-code); ~97% van de sensoren terug op 24 juli, ~99% op 29 juli
- 25 juli – 19 augustus: runtime-grenzencontrole, compile-time veldtellingvalidatie, Validator-controles, canary + deployment rings, klantcontrole over Rapid Response Content, twee onafhankelijke reviews; volledige RCA met crashdump op 6 augustus
Vertaald transcript
Vertaald vanuit de originele Engelse gesproken tekst. Beschikbare audio en ondertiteling worden beheerd door YouTube.
0:00 Eén beveiligingsupdate voert eenentwintig velden in een driver die is gebouwd voor twintig, en acht en een half miljoen Windows-machines krijgen een blauw scherm voor het ontbijt. 19 juli 2024, 04:09 UTC. CrowdStrike pusht Channel File 291 naar elke Falcon-sensor. Zevenenzeventig minuten later trekken ze het terug; tegen die tijd staren luchtvaartmaatschappijen, ziekenhuizen en banken naar dezelfde blauwe rechthoek. De eerste post van de CEO zegt geen cyberaanval, waar, en niet het punt. Hoe het gebeurt, waarom het mogelijk is, en wie de schuld krijgt.
0:27 Dit is The Daily Diff, postmortem. 28 februari. Sensor 7.11 verzendt een nieuwe detector voor benoemde pipes. Het declareert eenentwintig invoervelden; de code die het voedt, bouwt een array van twintig. Niemand merkt het op: vier maanden lang laat elke regel veld eenentwintig als een wildcard, en niemand leest een wildcard. Een stresstest slaagt, vier regels worden verzonden, alles in orde. 19 juli, 04:09. Twee nieuwe regels; één plaatst een echt patroon in veld eenentwintig.
0:51 De cloud validator telt eenentwintig tegen de declaratie en zegt in orde. Elke online Windows-host downloadt het onmiddellijk, omdat er geen canary ring is. De sensor leest slot eenentwintig, wat niet zijn geheugen is, en de kernel doet wat kernels doen. 05:27, teruggedraaid. Te laat voor iedereen die opnieuw opstartte: de driver laadt vroeg tijdens het opstarten, leest hetzelfde bestand en crasht opnieuw. Bootloop. Waarom is dit mogelijk? De regels zijn configuratie die vanuit de cloud wordt gepusht, dus geen code slaat de code
1:16 pipeline over. De interpreter heeft geen grenzencontrole; het vertrouwt de validator, en de validator vertrouwt de declaratie. En het draait allemaal in kernelmodus, waar een foute pointer geen uitzondering is maar een page-fault waarvan Windows zegt dat deze niet kan worden beschermd door try-except. Patrick Wardle leest het die middag uit een crashdump: index nul x veertien, slot eenentwintig. De oplossing is handmatig. Veilige Modus, verwijder C-00000291, herstarten. Met BitLocker, typ eerst een achtenveertig-cijferige
1:43 herstelsleutel die leeft op een server die ook blauw is. git blame. CrowdStrike, vijfenzeventig procent: de RCA somt zes bevindingen op, en bevinding zes is een volledige zin: Template Instances hadden gefaseerde implementatie moeten hebben. Het kernel-modusontwerp, vijfentwintig: CrowdStrike zegt dat Windows nog niet beveiliging buiten de kernel kan hosten, Microsoft zegt geen Microsoft-incident, en de page-fault maakt het niet uit.
2:05 De vrijdag, tien. De commit message zegt geen code. Blast radius: acht en een half miljoen apparaten, minder dan één procent van Windows. Delta annuleert zevenduizend vluchten en klaagt aan voor vijfhonderd miljoen, Microsoft inbegrepen. Verzekeraars schatten de Fortune 500-rekening op bijna vijf miljard. Hacker News: vijfenveertighonderd punten. De ironie: een update bedoeld om nieuwe aanvalstechnieken te detecteren, leverde er zelf een. Oordeel, postmortem: ship it, nipt.
2:27 Grenzencontrole in zes dagen, gefaseerde ringen, klantcontrole over contentupdates, twee externe reviews. Nipt, omdat dat allemaal al standaardpraktijk was. Maandag: wat uw agent ook uit de cloud haalt, krijgt een canary ring. Configuratie is code op het moment dat iets het parseert waar het niet kan falen. Stuur me het incident waar u het nog steeds niet over mag hebben, in de reacties, of op the daily diff dot dev. En dat is de diff voor vandaag.
2:48 Ik ben Niko van Axrisi. Merge verantwoordelijk.
Bronnen
- CrowdStrike, Root Cause Analysis — Channel File 291 (Aug 6, 2024, 12 pp.)www.crowdstrike.com
- CrowdStrike, Executive Summary of the RCA (Aug 6, 2024)www.crowdstrike.com
- CrowdStrike, Preliminary Post Incident Review (Jul 24, 2024)www.crowdstrike.com
- CrowdStrike, Remediation and Guidance Hub — Channel File 291 (the workaround steps)www.crowdstrike.com
- CrowdStrike, tech alert of Jul 19, 2024 (archived: Safe Mode → delete C-00000291*.sys → BitLocker key)web.archive.org
- Microsoft, David Weston, "Helping our customers through the CrowdStrike outage" (Jul 20, 2024; the 8.5 million figure)blogs.microsoft.com
- Delta Air Lines, Form 8-K (Aug 8, 2024; ~7,000 cancellations, at least $500 million)www.sec.gov
- Adam Meyers (CrowdStrike SVP), written testimony, House Homeland Security Subcommittee (Sep 24, 2024)homeland.house.gov
- George Kurtz on X, Jul 19, 2024, 09:45 UTCx.com
- Patrick Wardle on X, Jul 19, 2024 (the crash-dump index 0x14)x.com
- Hacker News, Jul 19, 2024 — "CrowdStrike Update: Windows Bluescreen and Boot Loops" (4,489 points)news.ycombinator.com
- The Guardian, Jul 24, 2024 — "CrowdStrike global outage to cost US Fortune 500 companies $5.4bn" (Parametrix estimate)www.theguardian.com
- Hacker News, Jul 21, 2024 — "Initial details about why CrowdStrike's CSAgent.sys crashed" (519 points)news.ycombinator.com
- Wikipedia — 2024 CrowdStrike-related IT outagesen.wikipedia.org



