+− THE DAILY DIFFdev & AI news
SHIP IT

Адно дадатковае поле выклікала збой 8,5 мільёна ПК. 78 хвілін.

19 ліпеня 2024 г., 04:09 UTC: CrowdStrike рассылае файл канала 291 — абнаўленне змесціва Rapid Response — на кожны анлайн-датчык Windows Falcon.

19 ліпеня 2024 г., 04:09 UTC: CrowdStrike рассылае файл канала 291 — абнаўленне змесціва Rapid Response — на кожны анлайн-датчык 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 адмяняе каля 7 000 рэйсаў і патрабуе як мінімум 500 мільёнаў долараў ад CrowdStrike і Microsoft; Parametrix ацэньвае рахунак Fortune 500 каля 5,4 мільярда долараў. Паслясмертны аналіз ад уласнага аналізу асноўных прычын CrowdStrike, папярэдні агляд пасля інцыдэнту, блог Microsoft, 8-K Delta і сведчанні ў Палаце прадстаўнікоў. Віна Git: 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 жніўня: праверка межаў падчас выканання, праверка колькасці палёў падчас кампіляцыі, праверкі валідатара, канарка + кольцы разгортвання, кантроль кліента над змесцівам Rapid Response, два незалежныя агляды; поўны RCA з дампам збою 6 жніўня

Перакладзеная стэнаграма

Перакладзена з арыгінальнай англійскай агучкі. Даступнае аўдыя і субтытры кантралююцца YouTube.

0:00 Адно абнаўленне бяспекі перадае дваццаць адно поле ў драйвер, створаны для дваццаці, і восем з паловай мільёнаў машын Windows "сіняць" экран перад сняданкам. 19 ліпеня 2024 г., 04:09 UTC. CrowdStrike рассылае файл канала 291 на кожны датчык Falcon. Праз семдзесят восем хвілін яны яго адклікаюць; да таго часу авіякампаніі, бальніцы і банкі глядзяць на адзін і той жа сіні прамавугольнік. Першы пост генеральнага дырэктара кажа, што гэта не кібератака, праўда, і не ў гэтым сэнс. Як гэта адбываецца, чаму гэта магчыма, і хто нясе віну.

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

0:51 Воблачны валідатар лічыць дваццаць адзін супраць дэкларацыі і кажа, што ўсё ў парадку. Кожны анлайн-хост Windows загружае яго адразу, таму што няма "канаркавага" кольца. Датчык чытае слот дваццаць адзін, што не з'яўляецца яго памяццю, і ядро робіць тое, што робяць ядры. 05:27, адменена. Занадта позна для тых, хто перазагрузіўся: драйвер загружаецца на ранняй стадыі загрузкі, чытае той жа файл і зноў выклікае збой. Цыкл загрузкі. Чаму гэта магчыма? Правілы — гэта канфігурацыя, якая паступае з воблака, таму код не прапускае

1:16 канвеер кода. Інтэрпрэтатар не мае праверкі межаў; ён давярае валідатару, а валідатар давярае дэкларацыі. І ўсё гэта працуе ў рэжыме ядра, дзе дрэнны паказальнік — гэта не выключэнне, а памылка старонкі, якую Windows кажа, што нельга абараніць "спрабуй-выключы". Патрык Уордл прачытаў гэта з дампа збою ў той дзень: індэкс нуль і чатырнаццаць, слот дваццаць адзін. Выпраўленне ручное. Бяспечны рэжым, выдаліць C-00000291, перазагрузіць. З BitLocker спачатку ўвядзіце сорак васьмізначны

1:43 ключ аднаўлення, які знаходзіцца на серверы, які таксама сіні. Віна Git. CrowdStrike, шэсцьдзесят пяць працэнтаў: RCA пералічвае шэсць выяўленых праблем, і шостая праблема — гэта поўны сказ: экзэмпляры шаблонаў павінны мець паэтапнае разгортванне. Дызайн рэжыму ядра, дваццаць пяць: CrowdStrike кажа, што Windows не можа пакуль размяшчаць бяспеку па-за ядром, Microsoft кажа, што гэта не інцыдэнт Microsoft, і памылцы старонкі ўсё роўна.

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

2:27 Праверка межаў праз шэсць дзён, паэтапныя кольцы, кантроль кліента над абнаўленнямі змесціва, два знешнія агляды. З невялікім адрывам, таму што ўсё гэта было стандартнай практыкай ужо. Панядзелак: усё, што ваш агент выцягвае з воблака, атрымлівае "канаркавае" кольца. Канфігурацыя з'яўляецца кодам у той момант, калі нешта яе аналізуе там, дзе яна не можа выкінуць памылку. Дашліце мне інцыдэнт, пра які вам усё яшчэ не дазволена гаварыць, у каментарах або на daily diff dot dev. І гэта ўсё на сёння.

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 · be · 25 вер 2026 г.

Баг у адну мілісекунду спыніў паветраны рух Вялікабрытаніі. На шэсць гадзін.

У 10:00 у аўторак, 8 верасня, адзін звычайны запыт squawk-кода ў Нацыянальнай паветранай сістэме (NAS) NATS быў перапынены паведамленнем з больш высокім прыярытэтам, пакуль ён знаходзіўся на паўдарогі

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

Перазагрузка адправіла Telstra ў 2006 год. Дзевяць мільёнаў тэлефонаў.

Інжынер у Мельбурне ўключае шасі сінхранізацыі ў 2:50 раніцы, і да сняданку найбуйнейшая мабільная сетка Аўстраліі пагаджаецца, што гэта лістапад 2006 года. 8 ліпеня 2026 года: карта GPS у шасі NTP Te

3:15 ↗