Jedno dodatkowe pole zawiesiło 8,5 miliona komputerów. 78 minut.
19 lipca 2024, 04:09 UTC: CrowdStrike przesyła Channel File 291 — aktualizację treści Rapid Response — do każdego sensora Windows Falcon online.
19 lipca 2024, 04:09 UTC: CrowdStrike przesyła Channel File 291 — aktualizację treści Rapid Response — do każdego sensora Windows Falcon online. Szablon, który zasila, został zadeklarowany z 21 polami wejściowymi w lutym; kod dostarczający dane wejściowe tworzy tablicę 20. Przez cztery miesiące nic nie odczytuje pola 21, ponieważ każda reguła pozostawia je jako symbol wieloznaczny. Ta aktualizacja umieszcza tam rzeczywisty wzorzec. Content Validator po stronie chmury zlicza 21 pól w stosunku do deklaracji i je przepuszcza; Content Interpreter sensora, bez sprawdzania granic, odczytuje slot 21 w trybie jądra i powoduje błędy strony Windows: PAGE_FAULT_IN_NONPAGED_AREA, csagent.sys. Sterownik ładuje się celowo wcześnie podczas rozruchu, odczytuje ten sam plik, ponownie się zawiesza — pętla rozruchowa. Cofnięto o 05:27 UTC, 78 minut później, ale 8,5 miliona maszyn (liczba Microsoftu, poniżej 1% Windows) już ma ten plik, a rozwiązaniem jest człowiek przy każdej klawiaturze: Tryb awaryjny, usunięcie C-00000291*.sys, klucz odzyskiwania BitLocker. Linie lotnicze, szpitale, banki i centra 911 zatrzymują działalność; Delta odwołuje około 7000 lotów i żąda co najmniej 500 milionów dolarów od CrowdStrike i Microsoftu; Parametrix szacuje koszty dla firm z listy Fortune 500 na około 5,4 miliarda dolarów. Raport pośmiertny z własnej analizy przyczyn źródłowych CrowdStrike, wstępnego przeglądu po incydencie, bloga Microsoftu, raportu 8-K Delta i zeznań w Izbie Reprezentantów. Git blame: 65 CrowdStrike / 25 projekt trybu jądra / 10 piątek. Werdykt w sprawie poprawki: SHIP IT, nieznacznie.
Przeczytaj wydanie pisemne (angielski) ↗
Co obejmuje ten film
- 28 lutego – 24 kwietnia 2024: sensor 7.11 dostarcza szablon IPC Template Type (21 zadeklarowanych pól, 20 dostarczonych); test obciążeniowy przechodzi 5 marca; cztery instancje działają, ponieważ pole 21 jest symbolem wieloznacznym
- 19 lipca, 04:09 UTC: dwie nowe instancje szablonu; błąd logiczny Content Validatora przepuszcza instancję bez symbolu wieloznacznego; odczyt poza granicami pamięci w jądrze; 05:27 UTC cofnięto
- 19–29 lipca: ręczna naprawa (tryb awaryjny, usunięcie pliku, klucz BitLocker); ~97% sensorów wraca do normy do 24 lipca, ~99% do 29 lipca
- 25 lipca – 19 sierpnia: sprawdzenie granic w czasie wykonania, walidacja liczby pól w czasie kompilacji, sprawdzanie walidatora, canary + pierścienie wdrożeniowe, kontrola klienta nad Rapid Response Content, dwie niezależne recenzje; pełna analiza RCA z zrzutem awaryjnym 6 sierpnia
Przetłumaczona transkrypcja
Przetłumaczono z oryginalnej narracji angielskiej. Dostępne audio i napisy są kontrolowane przez YouTube.
0:00 Jedna aktualizacja bezpieczeństwa przenosi dwadzieścia jeden pól do sterownika zbudowanego na dwadzieścia, a osiem i pół miliona maszyn z systemem Windows wyświetla niebieski ekran przed śniadaniem. 19 lipca 2024, 04:09 UTC. CrowdStrike przesyła Channel File 291 do każdego sensora Falcon. Siedemdziesiąt osiem minut później go wycofują; do tego czasu linie lotnicze, szpitale i banki patrzą na ten sam niebieski prostokąt. Pierwszy post CEO mówi, że to nie cyberatak, prawda, i to nie o to chodzi. Jak to się dzieje, dlaczego jest to możliwe i kto ponosi winę.
0:27 To jest The Daily Diff, postmortem. 28 lutego. Sensor 7.11 dostarcza nowy detektor dla potoków nazwanych. Deklaruje dwadzieścia jeden pól wejściowych; kod, który go zasila, tworzy tablicę z dwudziestu. Nikt nie zauważa: przez cztery miesiące każda reguła pozostawia pole dwudzieste pierwsze jako symbol wieloznaczny, a nikt nie odczytuje symbolu wieloznacznego. Test obciążeniowy przechodzi, cztery reguły zostają wysłane, wszystko w porządku. 19 lipca, 04:09. Dwie nowe reguły; jedna umieszcza prawdziwy wzorzec w polu dwudziestym pierwszym.
0:51 Walidator chmury zlicza dwadzieścia jeden pól w stosunku do deklaracji i mówi, że jest w porządku. Każdy host Windows online pobiera go natychmiast, ponieważ nie ma pierścienia canary. Sensor odczytuje slot dwudziesty pierwszy, który nie jest jego pamięcią, a jądro robi to, co robią jądra. 05:27, cofnięto. Za późno dla każdego, kto ponownie uruchomił: sterownik ładuje się wcześnie w procesie rozruchu, odczytuje ten sam plik i ponownie się zawiesza. Pętla rozruchowa. Dlaczego jest to możliwe? Reguły to konfiguracja przesyłana z chmury, więc nie kod pomija potok kodu
1:16 potok. Interpreter nie ma sprawdzania granic; ufa walidatorowi, a walidator ufa deklaracji. A wszystko to działa w trybie jądra, gdzie zły wskaźnik to nie wyjątek, lecz błąd strony, którego Windows, jak mówi, nie może chronić za pomocą try-except. Patrick Wardle odczytuje to z zrzutu awaryjnego tego popołudnia: indeks zero x czternaście, slot dwadzieścia jeden. Naprawa jest ręczna. Tryb awaryjny, usuń C-00000291, uruchom ponownie. Z BitLockerem, najpierw wpisz czterdzieści osiem cyfr
1:43 klucz odzyskiwania, który znajduje się na serwerze, który również jest niebieski. git blame. CrowdStrike, sześćdziesiąt pięć procent: RCA wymienia sześć ustaleń, a ustalenie szóste to pełne zdanie: Instancje szablonów powinny mieć etapowe wdrożenie. Projekt trybu jądra, dwadzieścia pięć: CrowdStrike mówi, że Windows nie może jeszcze hostować bezpieczeństwa poza jądrem, Microsoft mówi, że to nie incydent Microsoftu, a błąd strony się tym nie przejmuje.
2:05 Piątek, dziesięć. Komunikat commitu mówi, że to nie kod. Promień rażenia: osiem i pół miliona urządzeń, mniej niż jeden procent Windows. Delta odwołuje siedem tysięcy lotów i pozywa o pięćset milionów, w tym Microsoft. Ubezpieczyciele szacują koszty dla firm z listy Fortune 500 na blisko pięć miliardów. Hacker News: cztery i pół tysiąca punktów. Ironia: aktualizacja mająca wykrywać nowe techniki ataków sama taką dostarczyła. Werdykt, postmortem: SHIP IT, nieznacznie.
2:27 Sprawdzenie granic za sześć dni, etapowe pierścienie, kontrola klienta nad aktualizacjami treści, dwie zewnętrzne recenzje. Nieznacznie, ponieważ wszystko to było już standardową praktyką. Poniedziałek: wszystko, co twój agent pobierze z chmury, trafia do pierścienia canary. Konfiguracja jest kodem w momencie, gdy coś ją parsuje tam, gdzie nie może rzucić wyjątku. Wyślij mi incydent, o którym nadal nie wolno ci mówić, w komentarzach, lub na the daily diff dot dev. I to tyle na dziś.
2:48 Jestem Niko z Axrisi. Scalaj odpowiedzialnie.
Źródła
- 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



