+− THE DAILY DIFFdev & AI news
SHIP IT

Jedno dodatno polje srušilo je 8,5 miliona računara. 78 minuta.

19.

19. jul 2024, 04:09 UTC: CrowdStrike šalje datoteku kanala 291 — ažuriranje sadržaja brzog odgovora — svakom Windows Falcon senzoru na mreži. Predložak koji koristi je u februaru deklarisan sa 21 ulaznim poljem; kod koji obezbeđuje ulaze kreira niz od 20. Četiri meseca niko ne čita polje 21, jer ga svako pravilo ostavlja kao "džoker" (wildcard). Ovo ažuriranje stavlja pravi obrazac tamo. Content Validator sa "cloud" strane broji 21 u odnosu na deklaraciju i propušta ga; Content Interpreter senzora, bez provere granica, čita slot 21 u kernel modu i Windows "page-faults": PAGE_FAULT_IN_NONPAGED_AREA, csagent.sys. Drajver se namerno učitava rano pri "boot"-u, čita istu datoteku, ponovo se ruši — "boot loop". Poništeno u 05:27 UTC, 78 minuta kasnije, ali 8,5 miliona mašina (prema Microsoftu, manje od 1% Windowsa) već ima datoteku, a rešenje je čovek za svakom tastaturom: Safe Mode, obrišite C-00000291*.sys, BitLocker ključ za oporavak. Aviokompanije, bolnice, banke i 911 centri prestaju sa radom; Delta otkazuje oko 7.000 letova i traži najmanje 500 miliona dolara od CrowdStrike-a i Microsofta; Parametrix procenjuje račun za Fortune 500 na blizu 5,4 milijarde dolara. Postmortem iz CrowdStrike-ove sopstvene analize uzroka (Root Cause Analysis), Preliminarnog pregleda nakon incidenta (Preliminary Post Incident Review), Microsoftovog bloga, Deltinog 8-K i svedočenja u Predstavničkom domu. Git blame: 65 CrowdStrike / 25 dizajn kernel moda / 10 petak. Presuda o popravci: SHIP IT, tesno.

Pročitajte pisano izdanje (engleski) ↗

Šta ovaj video pokriva

  • 28. februar – 24. april 2024: senzor 7.11 isporučuje tip IPC predloška (deklarisano 21 polje, isporučeno 20); "stress test" prolazi 5. marta; četiri instance rade jer je polje 21 "džoker"
  • 19. jul, 04:09 UTC: dve nove instance predloška; logička greška Content Validatora propušta onu koja nije "džoker"; čitanje van granica u kernelu; 05:27 UTC poništeno
  • 19–29. jul: ručna sanacija (Safe Mode, brisanje datoteke, BitLocker ključ); ~97% senzora vraćeno do 24. jula, ~99% do 29. jula
  • 25. jul – 19. avgust: provera granica u runtime-u, validacija broja polja u compile-time-u, Validator provere, "canary" + prstenovi za implementaciju, korisnička kontrola nad Rapid Response Sadržajem, dva nezavisna pregleda; potpuna RCA sa "crash dump"-om 6. avgusta

Preveden transkript

Prevedeno sa originalne engleske naracije. Dostupan audio i titlovi kontrolisani su od strane YouTube-a.

0:00 Jedno sigurnosno ažuriranje nosi dvadeset jedno polje u drajver napravljen za dvadeset, i osam i po miliona Windows mašina prikazuje "plavi ekran" pre doručka. 19. jul 2024, 04:09 UTC. CrowdStrike šalje datoteku kanala 291 svakom Falcon senzoru. Sedamdeset osam minuta kasnije je povuku; do tada aviokompanije, bolnice i banke gledaju isti plavi pravougaonik. Prva objava CEO-a kaže da nije sajber napad, istina, i to nije poenta. Kako se to događa, zašto je to moguće i ko snosi krivicu.

0:27 Ovo je The Daily Diff, postmortem. 28. februar. Senzor 7.11 isporučuje novi detektor za imenovane cevi. Deklariše dvadeset jedno ulazno polje; kod koji ga hrani gradi niz od dvadeset. Niko ne primećuje: četiri meseca svako pravilo ostavlja polje dvadeset jedno kao "džoker" (wildcard), i niko ne čita "džoker". Stres test prolazi, četiri pravila se isporučuju, sve je u redu. 19. jul, 04:09. Dva nova pravila; jedno stavlja pravi obrazac u polje dvadeset jedno.

0:51 Cloud validator broji dvadeset jedno u odnosu na deklaraciju i kaže da je u redu. Svaki online Windows host to odmah preuzima, jer nema "canary ring"-a. Senzor čita slot dvadeset jedan, što nije njegova memorija, i kernel radi ono što kerneli rade. 05:27, poništeno. Prekasno za svakoga ko je restartovao: drajver se učitava rano pri "boot"-u, čita istu datoteku i ponovo se ruši. Boot loop. Zašto je ovo moguće? Pravila su konfiguracija gurnuta iz "clouda", tako da kod ne preskače "code pipeline".

1:16 Interpreter nema proveru granica; on veruje validatoru, a validator veruje deklaraciji. I sve to radi u kernel modu, gde loš pokazivač nije izuzetak već "page fault" za koji Windows kaže da se ne može zaštititi "try-except"-om. Patrick Wardle to čita sa "crash dump"-a tog popodneva: indeks nula x četrnaest, slot dvadeset jedan. Popravka je ručna. Safe Mode, obrišite C-00000291, restartujte. Sa BitLockerom, prvo ukucajte četrdeset osam cifara

1:43 ključ za oporavak koji se nalazi na serveru koji je takođe "plav". git blame. CrowdStrike, šezdeset pet procenata: RCA navodi šest nalaza, a nalaz šest je cela rečenica: instance predloška bi trebalo da imaju faznu implementaciju. Dizajn kernel moda, dvadeset pet: CrowdStrike kaže da Windows ne može još uvek da hostuje sigurnost izvan kernela, Microsoft kaže da to nije Microsoftov incident, i "page fault" to ne zanima.

2:05 Petak, deset. Poruka "commit"-a kaže da nije kod. Blast radius: osam i po miliona uređaja, manje od jednog procenta Windowsa. Delta otkazuje sedam hiljada letova i tuži za pet stotina miliona, uključujući Microsoft. Osiguravači procenjuju račun za Fortune 500 na blizu pet milijardi. Hacker News: četiri hiljade pet stotina poena. Ironija: ažuriranje namenjeno otkrivanju novih napadačkih tehnika isporučilo je jednu. Presuda, postmortem: SHIP IT, tesno.

2:27 Provera granica za šest dana, fazni prstenovi, korisnička kontrola nad ažuriranjima sadržaja, dva spoljna pregleda. Tesno, jer je sve to već bila standardna praksa. Ponedeljak: šta god vaš agent povuče iz "clouda" dobija "canary ring". Konfiguracija je kod onog trenutka kada je nešto parsira gde ne može da baci grešku. Pošaljite mi incident o kome još uvek ne smete da pričate, u komentarima, ili na daily diff dot dev. I to je "diff" za danas.

2:48 Ja sam Niko iz Axrisi-ja. Spajajte odgovorno.

Izvori

  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

Povezani video snimci