+− THE DAILY DIFFdev & AI news
SHIP IT

Одне зайве поле призвело до краху 8,5 мільйонів ПК. 78 хвилин.

19 липня 2024 року, 04:09 UTC: CrowdStrike надсилає Channel File 291 — оновлення Rapid Response Content — на кожен онлайн-сенсор Windows Falcon.

19 липня 2024 року, 04:09 UTC: CrowdStrike надсилає Channel File 291 — оновлення Rapid Response Content — на кожен онлайн-сенсор Windows Falcon. Шаблон, який він використовує, був оголошений з 21 вхідним полем у лютому; код, який надає вхідні дані, створює масив з 20. Протягом чотирьох місяців ніщо не зчитувало поле 21, оскільки кожне правило залишало його як маску. Це оновлення розміщує там реальний шаблон. Хмарний Content Validator рахує 21 відповідно до оголошення та пропускає його; Content Interpreter сенсора, без перевірки меж, зчитує слот 21 у режимі ядра, і Windows видає помилку сторінки: PAGE_FAULT_IN_NONPAGED_AREA, csagent.sys. Драйвер завантажується рано під час завантаження навмисно, зчитує той самий файл, знову аварійно завершує роботу — цикл завантаження. Відкат відбувся о 05:27 UTC, через 78 хвилин, але 8,5 мільйона машин (за підрахунками Microsoft, менше 1% Windows) вже мають файл, і виправлення полягає в тому, що людина має працювати за кожною клавіатурою: безпечний режим, видалити C-00000291*.sys, ключ відновлення BitLocker. Авіакомпанії, лікарні, банки та центри 911 зупиняються; Delta скасовує близько 7000 рейсів і вимагає щонайменше 500 мільйонів доларів від CrowdStrike та Microsoft; Parametrix оцінює збитки Fortune 500 майже в 5,4 мільярда доларів. Посмертний аналіз власного Root Cause Analysis від CrowdStrike, Preliminary Post Incident Review, блогу Microsoft, 8-K Delta та свідчень у Палаті представників. Git blame: 65 CrowdStrike / 25 дизайн режиму ядра / 10 п’ятниця. Вирок щодо виправлення: SHIP IT, ледве.

Читати письмову версію (англійською) ↗

Що охоплює це відео

  • 28 лютого – 24 квітня 2024: сенсор 7.11 постачає тип шаблону IPC (оголошено 21 поле, надано 20); стрес-тест проходить 5 березня; чотири екземпляри працюють, оскільки поле 21 є маскою
  • 19 липня, 04:09 UTC: два нові екземпляри шаблону; логічна помилка Content Validator пропускає той, що не є маскою; читання за межами в режимі ядра; 05:27 UTC відкат
  • 19–29 липня: ручне виправлення (безпечний режим, видалення файлу, ключ BitLocker); ~97% сенсорів відновлено до 24 липня, ~99% до 29 липня
  • 25 липня – 19 серпня: перевірка меж під час виконання, перевірка кількості полів під час компіляції, перевірки Validator, кільця canary + розгортання, контроль клієнтів над Rapid Response Content, два незалежні огляди; повний RCA зі знімком аварії 6 серпня

Перекладена стенограма

Перекладено з оригінальної англійської розповіді. Доступне аудіо та субтитри контролюються YouTube.

0:00 Одне оновлення безпеки передає двадцять одне поле в драйвер, створений для двадцяти, і вісім з половиною мільйонів машин Windows отримують синій екран до сніданку. 19 липня 2024 року, 04:09 UTC. CrowdStrike надсилає Channel File 291 на кожен сенсор Falcon. Через сімдесят вісім хвилин вони його відкликають; до того часу авіакомпанії, лікарні та банки дивляться на той самий синій прямокутник. Перший пост генерального директора говорить, що це не кібератака, правда, і не в цьому справа. Як це відбувається, чому це можливо, і хто винен.

0:27 Це The Daily Diff, посмертний аналіз. 28 лютого. Сенсор 7.11 поставляє новий детектор для іменованих каналів. Він оголошує двадцять одне вхідне поле; код, який його живить, створює масив з двадцяти. Ніхто не помічає: протягом чотирьох місяців кожне правило залишає поле двадцять один як маску, і ніхто не читає маску. Стрес-тест проходить, чотири правила завантажуються, все гаразд. 19 липня, 04:09. Два нові правила; одне розміщує реальний шаблон у полі двадцять один.

0:51 Хмарний валідатор рахує двадцять один відповідно до оголошення і каже, що все гаразд. Кожен онлайн-хост Windows завантажує його одразу, тому що немає кільця canary. Сенсор читає слот двадцять один, який не є його пам'яттю, і ядро робить те, що роблять ядра. 05:27, відкат. Занадто пізно для тих, хто перезавантажився: драйвер завантажується рано під час завантаження, читає той самий файл і знову аварійно завершує роботу. Цикл завантаження. Чому це можливо? Правила — це конфігурація, яка надсилається з хмари, тому не код пропускає конвеєр

1:16 коду. Інтерпретатор не має перевірки меж; він довіряє валідатору, а валідатор довіряє оголошенню. І все це працює в режимі ядра, де поганий покажчик — це не виняток, а помилка сторінки, яку Windows каже, що не можна захистити за допомогою try-except. Патрік Вордл читає це зі знімка аварії того дня: індекс нуль x чотирнадцять, слот двадцять один. Виправлення ручне. Безпечний режим, видалити C-00000291, перезавантажити. З BitLocker спочатку введіть сорокавосьмизначний

1:43 ключ відновлення, який знаходиться на сервері, який також синій. Git blame. CrowdStrike, шістдесят п'ять відсотків: RCA перелічує шість висновків, і висновок шість — це повне речення: екземпляри шаблонів повинні мати поетапне розгортання. Дизайн режиму ядра, двадцять п'ять: CrowdStrike каже, що Windows не може ще розміщувати безпеку поза ядром, Microsoft каже, що це не інцидент Microsoft, і помилці сторінки байдуже.

2:05 П'ятниця, десять. Повідомлення про комміт говорить, що це не код. Радіус ураження: вісім з половиною мільйонів пристроїв, менше одного відсотка Windows. Delta скасовує сім тисяч рейсів і подає до суду на п'ятсот мільйонів, включно з Microsoft. Страховики оцінюють збитки Fortune 500 майже в п'ять мільярдів. Hacker News: чотири тисячі п'ятсот балів. Іронія: оновлення, призначене для виявлення нових методів атаки, саме спричинило таку. Вирок, посмертний аналіз: SHIP IT, ледве.

2:27 Перевірка меж за шість днів, поетапні кільця, контроль клієнтів над оновленнями контенту, два зовнішні огляди. Ледве, тому що все це вже було стандартною практикою. Понеділок: що б ваш агент не витягнув з хмари, отримує кільце canary. Конфігурація стає кодом у той момент, коли щось її аналізує там, де вона не може видати помилку. Надішліть мені інцидент, про який вам досі не дозволено говорити, у коментарях або на the daily diff dot dev. І це The Daily Diff за сьогодні.

2:48 Я Ніко з Axrisi. Об'єднуйте відповідально.

Джерела

  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

Пов'язані відео

postmortem · uk · 25 вер. 2026 р.

Мільйонна частка секунди зупинила авіатрафік Великої Британії. Шість годин.

О 10:00 у вівторок, 8 вересня, один звичайний запит коду транспондера в Національній системі повітряного простору (NAS) NATS переривається повідомленням з вищим пріоритетом, доки він частково оновлює

3:06 ↗
postmortem · uk · 22 вер. 2026 р.

Перезавантаження відкинуло Telstra у 2006 рік. Дев'ять мільйонів телефонів.

Інженер у Мельбурні о 2:50 ночі знову вмикає шасі синхронізації, і до сніданку найбільша мобільна мережа Австралії погоджується, що зараз листопад 2006 року. 8 липня 2026 року: GPS-карта в шасі NTP Te

3:15 ↗