+− THE DAILY DIFFdev & AI news
SHIP IT

Ett extra fält kraschade 8,5 miljoner datorer. 78 minuter.

19 juli 2024, 04:09 UTC: CrowdStrike skickar Channel File 291 – en Rapid Response Content-uppdatering – till varje online Windows Falcon-sensor.

19 juli 2024, 04:09 UTC: CrowdStrike skickar Channel File 291 – en Rapid Response Content-uppdatering – till varje online Windows Falcon-sensor. Mallen den matas med deklarerades med 21 inmatningsfält i februari; koden som tillhandahåller inmatningarna bygger en array med 20. I fyra månader läser inget fält 21, eftersom varje regel lämnar det som en jokertecken. Denna uppdatering sätter ett riktigt mönster där. Den molnbaserade Content Validator räknar 21 mot deklarationen och godkänner den; sensorns Content Interpreter, utan gränskontroll, läser plats 21 i kärnläget och Windows får sidfel: PAGE_FAULT_IN_NONPAGED_AREA, csagent.sys. Drivrutinen laddas tidigt vid uppstart med flit, läser samma fil, kraschar igen – uppstartsloop. Återställd 05:27 UTC, 78 minuter senare, men 8,5 miljoner maskiner (Microsofts räkning, under 1% av Windows) har redan filen, och lösningen är en människa vid varje tangentbord: felsäkert läge, radera C-00000291*.sys, BitLocker-återställningsnyckel. Flygbolag, sjukhus, banker och 112-centraler stannar; Delta ställer in cirka 7 000 flygningar och kräver minst 500 miljoner dollar från CrowdStrike och Microsoft; Parametrix uppskattar Fortune 500-notan till nära 5,4 miljarder dollar. Obduktion från CrowdStrikes egen Root Cause Analysis, den preliminära Post Incident Review, Microsofts blogg, Deltas 8-K och Husets vittnesmål. Git blame: 65 CrowdStrike / 25 kärnlägesdesignen / 10 fredagen. Bedömning av fixen: SHIP IT, med nöd och näppe.

Läs den skrivna upplagan (engelska) ↗

Vad den här videon täcker

  • 28 feb – 24 apr 2024: sensor 7.11 skickar IPC Template Type (21 fält deklarerade, 20 tillhandahållna); stresstest godkänns 5 mar; fyra instanser fungerar eftersom fält 21 är en jokertecken
  • 19 jul, 04:09 UTC: två nya mallinstanser; Content Validators logikfel släpper igenom den icke-jokertecken-baserade; läsning utanför gränserna i kärnan; 05:27 UTC återställd
  • 19–29 jul: manuell åtgärd (felsäkert läge, radera filen, BitLocker-nyckel); ~97% av sensorerna tillbaka senast 24 jul, ~99% senast 29 jul
  • 25 jul – 19 aug: körtidsgränskontroll, kompileringstidsfältantalvalidering, Validator-kontroller, kanarie- + distributionsringar, kundkontroll över Rapid Response Content, två oberoende granskningar; full RCA med kraschdump den 6 aug

Översatt transkription

Översatt från den ursprungliga engelska berättelsen. Tillgängligt ljud och undertexter styrs av YouTube.

0:00 En säkerhetsuppdatering innehåller tjugoett fält till en drivrutin byggd för tjugo, och åtta och en halv miljon Windows-maskiner får blåskärm innan frukost. 19 juli 2024, 04:09 UTC. CrowdStrike skickar Channel File 291 till varje Falcon-sensor. Sjuttioåtta minuter senare drar de tillbaka det; då stirrar flygbolag, sjukhus och banker på samma blå rektangel. VD:ns första inlägg säger att det inte är en cyberattack, sant, och inte poängen. Hur det händer, varför det är möjligt och vem som får skulden.

0:27 Detta är The Daily Diff, postmortem. 28 februari. Sensor 7.11 skickar en ny detektor för namngivna rör. Den deklarerar tjugoett inmatningsfält; koden som matar den bygger en array med tjugo. Ingen märker: i fyra månader lämnar varje regel fält tjugoett som en jokertecken, och ingen läser en jokertecken. Ett stresstest godkänns, fyra regler skickas, allt bra. 19 juli, 04:09. Två nya regler; en sätter ett riktigt mönster i fält tjugoett.

0:51 Molnvalidatorn räknar tjugoett mot deklarationen och säger att det är bra. Varje online Windows-värd laddar ner det på en gång, eftersom det inte finns någon kanariefågelring. Sensorn läser plats tjugoett, vilket inte är dess minne, och kärnan gör vad kärnor gör. 05:27, återställd. För sent för alla som startat om: drivrutinen laddas tidigt vid uppstart, läser samma fil och kraschar igen. Uppstartsloop. Varför är detta möjligt? Reglerna är konfiguration som skickas från molnet, så ingen kod hoppar över kod-

1:16 pipelinen. Tolken har ingen gränskontroll; den litar på validatorn, och validatorn litar på deklarationen. Och allt körs i kärnläget, där en dålig pekare inte är ett undantag utan ett sidfel som Windows säger inte kan skyddas av try-except. Patrick Wardle läser det från en kraschdump den eftermiddagen: index noll x fjorton, plats tjugoett. Lösningen är manuell. Felsäkert läge, radera C-00000291, starta om. Med BitLocker, skriv först en fyrtioåtta-siffrig

1:43 återställningsnyckel som finns på en server som också är blå. git blame. CrowdStrike, sextiofem procent: RCA:n listar sex fynd, och fynd sex är en fullständig mening: Mallinstanser borde ha stegvis distribution. Kärnlägesdesignen, tjugofem: CrowdStrike säger att Windows inte kan ännu hosta säkerhet utanför kärnan, Microsoft säger inte en Microsoft-incident, och sidfelet bryr sig inte.

2:05 Fredagen, tio. Commit-meddelandet säger inte kod. Spridningsradie: åtta och en halv miljon enheter, under en procent av Windows. Delta ställer in sjutusen flygningar och stämmer för femhundra miljoner, Microsoft inkluderat. Försäkringsbolagen uppskattar Fortune 500-notan till nära fem miljarder. Hacker News: fyrtiofemhundra poäng. Ironin: en uppdatering som var tänkt att upptäcka nya attacktekniker levererade en. Bedömning, postmortem: SHIP IT, med nöd och näppe.

2:27 Gränskontroll om sex dagar, stegvisa ringar, kundkontroll över innehållsuppdateringar, två externa granskningar. Med nöd och näppe, för allt detta var redan standardpraxis. Måndag: vad din agent än drar från molnet får en kanariefågelring. Konfiguration är kod i samma ögonblick som något tolkar den där den inte kan kasta ett fel. Skicka mig incidenten du fortfarande inte får prata om, i kommentarerna, eller på the daily diff dot dev. Och det var dagens diff.

2:48 Jag är Niko från Axrisi. Sammanfoga ansvarsfullt.

Källor

  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

Relaterade videor