Едно допълнително поле срина 8,5 милиона компютри. 78 минути.
19 юли 2024 г., 04:09 UTC: CrowdStrike изпраща Channel File 291 — актуализация на съдържанието за бърз отговор — до всеки онлайн сензор на Windows Falcon.
19 юли 2024 г., 04:09 UTC: CrowdStrike изпраща Channel File 291 — актуализация на съдържанието за бърз отговор — до всеки онлайн сензор на Windows Falcon. Шаблонът, който захранва, е деклариран с 21 входни полета през февруари; кодът, който подава входовете, изгражда масив от 20. В продължение на четири месеца нищо не прочита поле 21, защото всяко правило го оставя като заместващ символ. Тази актуализация поставя истински модел там. Cloud-базираният Content Validator брои 21 спрямо декларацията и го пропуска; Content Interpreter на сензора, без проверка на границите, прочита слот 21 в режим на ядрото и Windows генерира грешки в страниците: PAGE_FAULT_IN_NONPAGED_AREA, csagent.sys. Драйверът се зарежда рано при стартиране нарочно, прочита същия файл, срива се отново — цикъл на зареждане. Отменен в 05:27 UTC, 78 минути по-късно, но 8,5 милиона машини (по данни на Microsoft, под 1% от Windows) вече имат файла, а поправката е човек на всяка клавиатура: Safe Mode, изтриване на C-00000291*.sys, ключ за възстановяване на BitLocker. Авиокомпании, болници, банки и центрове за спешни повиквания спират; 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 Template Type (21 декларирани полета, 20 доставени); стрес тестът преминава на 5 март; четири инстанции работят, защото поле 21 е заместващ символ
- 19 юли, 04:09 UTC: две нови Template Instances; логическата грешка на Content Validator пропуска тази без заместващ символ; излизане извън границите на паметта в ядрото; 05:27 UTC отменено
- 19–29 юли: ръчно отстраняване (Safe Mode, изтриване на файла, BitLocker ключ); ~97% от сензорите се връщат до 24 юли, ~99% до 29 юли
- 25 юли – 19 август: проверка на границите по време на изпълнение, валидиране на броя на полетата по време на компилация, проверки на Validator, канарче + пръстени за разгръщане, клиентски контрол върху 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 Cloud валидаторът брои двадесет и едно спрямо декларацията и казва, че е наред. Всеки онлайн Windows хост го изтегля наведнъж, защото няма „канарски пръстен“. Сензорът прочита слот двадесет и едно, което не е негова памет, и ядрото прави това, което правят ядрата. 05:27, отменено. Твърде късно за всеки, който е рестартирал: драйверът се зарежда рано при стартиране, прочита същия файл и се срива отново. Цикъл на зареждане. Защо е възможно това? Правилата са конфигурация, изпратена от облака, така че не е код, който пропуска кодовия
1:16 поток. Интерпретаторът няма проверка на границите; той се доверява на валидатора, а валидаторът се доверява на декларацията. И всичко това работи в режим на ядрото, където лош показалец не е изключение, а грешка в страница, която Windows казва, че не може да бъде защитена чрез try-except. Патрик Уордъл го прочита от данни за срив същия следобед: индекс нула x четиринадесет, слот двадесет и едно. Поправката е ръчна. Safe Mode, изтриване на C-00000291, рестартиране. С BitLocker, първо въведете четиридесет и осем цифрен
1:43 ключ за възстановяване, който се намира на сървър, който също е син. git blame. CrowdStrike, шестдесет и пет процента: RCA изброява шест констатации, и констатация шест е цяло изречение: Template Instances трябва да имат поетапно разгръщане. Дизайнът на режима на ядрото, двадесет и пет: CrowdStrike казва, че Windows не може все още да хоства сигурност извън ядрото, Microsoft казва, че не е инцидент на Microsoft, и грешката в страницата не се интересува.
2:05 Петък, десет. Съобщението за commit казва, че не е код. Радиус на взрива: осем и половина милиона устройства, под един процент от Windows. Delta отменя седем хиляди полета и съди за петстотин милиона, включително Microsoft. Застрахователите оценяват сметката за Fortune 500 на близо пет милиарда. Hacker News: четири хиляди и петстотин точки. Иронията: актуализация, предназначена да открива нови техники за атака, достави такава. Присъда, постмортем: SHIP IT, на косъм.
2:27 Проверка на границите след шест дни, поетапни пръстени, клиентски контрол върху актуализациите на съдържанието, две външни проверки. На косъм, защото всичко това вече беше стандартна практика. Понеделник: каквото и да изтегли вашият агент от облака, получава „канарски пръстен“. Конфигурацията е код в момента, в който нещо я анализира там, където не може да генерира грешка. Изпратете ми инцидента, за който все още не ви е позволено да говорите, в коментарите или на daily diff dot dev. И това е The Daily Diff за днес.
2:48 Аз съм Нико от Axrisi. Сливайте отговорно.
Източници
- 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



