Um campo extra causou a "queda" de 8,5 milhões de PCs. 78 minutos.
19 de julho de 2024, 04:09 UTC: A CrowdStrike envia o Ficheiro de Canal 291 — uma atualização de Conteúdo de Resposta Rápida — para todos os sensores Windows Falcon online.
19 de julho de 2024, 04:09 UTC: A CrowdStrike envia o Ficheiro de Canal 291 — uma atualização de Conteúdo de Resposta Rápida — para todos os sensores Windows Falcon online. O modelo que alimenta foi declarado com 21 campos de entrada em fevereiro; o código que fornece as entradas constrói um array de 20. Durante quatro meses, nada lê o campo 21, porque cada regra o deixa como um "wildcard". Esta atualização coloca um padrão real lá. O Validador de Conteúdo do lado da nuvem conta 21 contra a declaração e passa-o; o Intérprete de Conteúdo do sensor, sem verificação de limites, lê o slot 21 em modo kernel e o Windows falha na página: PAGE_FAULT_IN_NONPAGED_AREA, csagent.sys. O "driver" carrega cedo no "boot" de propósito, lê o mesmo ficheiro, "cai" novamente — ciclo de "boot". Revertido às 05:27 UTC, 78 minutos depois, mas 8,5 milhões de máquinas (contagem da Microsoft, menos de 1% do Windows) já têm o ficheiro, e a correção é um humano em cada teclado: Modo de Segurança, apagar C-00000291*.sys, chave de recuperação BitLocker. Companhias aéreas, hospitais, bancos e centros 911 param; a Delta cancela cerca de 7.000 voos e exige pelo menos 500 milhões de dólares da CrowdStrike e da Microsoft; a Parametrix estima a conta da Fortune 500 em cerca de 5,4 mil milhões de dólares. "Postmortem" da própria Análise da Causa Raiz da CrowdStrike, a Revisão Preliminar Pós-Incidente, o blog da Microsoft, o 8-K da Delta e o testemunho da Câmara. Culpa no Git: 65 CrowdStrike / 25 o design do modo kernel / 10 a sexta-feira. Veredicto sobre a correção: SHIP IT, por pouco.
Ler a edição escrita (Inglês) ↗
O que este vídeo aborda
- 28 de fev. – 24 de abr. de 2024: o sensor 7.11 envia o Tipo de Modelo IPC (21 campos declarados, 20 fornecidos); o teste de stress passa a 5 de mar.; quatro instâncias funcionam porque o campo 21 é um "wildcard"
- 19 de jul., 04:09 UTC: duas novas Instâncias de Modelo; o erro lógico do Validador de Conteúdo deixa passar a não-wildcard; leitura fora dos limites no kernel; 05:27 UTC revertido
- 19–29 de jul.: remediação manual (Modo de Segurança, apagar o ficheiro, chave BitLocker); ~97% dos sensores voltam até 24 de jul., ~99% até 29 de jul.
- 25 de jul. – 19 de ago.: verificação de limites em tempo de execução, validação de contagem de campos em tempo de compilação, verificações do Validador, anel "canary" + anéis de implementação, controlo do cliente sobre o Conteúdo de Resposta Rápida, duas revisões independentes; RCA completo com despejo de falha a 6 de ago.
Transcrição traduzida
Traduzido da narração original em inglês. Áudio e legendas disponíveis são controlados pelo YouTube.
0:00 Uma atualização de segurança leva vinte e um campos para um "driver" construído para vinte, e oito milhões e meio de máquinas Windows mostram o "ecrã azul" antes do pequeno-almoço. 19 de julho de 2024, 04:09 UTC. A CrowdStrike envia o Ficheiro de Canal 291 para cada sensor Falcon. Setenta e oito minutos depois, eles removem-no; a essa altura, companhias aéreas, hospitais e bancos olham para o mesmo retângulo azul. O primeiro "post" do CEO diz que não é um ataque cibernético, verdade, e não é o ponto. Como acontece, por que é possível e quem é o culpado.
0:27 Este é The Daily Diff, "postmortem". 28 de fevereiro. O Sensor 7.11 envia um novo detetor para "named pipes". Declara vinte e um campos de entrada; o código que o alimenta constrói um "array" de vinte. Ninguém repara: durante quatro meses, cada regra deixa o campo vinte e um como um "wildcard", e ninguém lê um "wildcard". Um teste de "stress" passa, quatro regras são enviadas, tudo bem. 19 de julho, 04:09. Duas novas regras; uma delas coloca um padrão real no campo vinte e um.
0:51 O validador da nuvem conta vinte e um contra a declaração e diz que está bem. Cada "host" Windows online descarrega-o de uma vez, porque não há anel "canary". O sensor lê o "slot" vinte e um, que não é a sua memória, e o "kernel" faz o que os "kernels" fazem. 05:27, revertido. Tarde demais para quem reiniciou: o "driver" carrega cedo no "boot", lê o mesmo ficheiro e falha novamente. Ciclo de "boot". Por que é isso possível? As regras são configurações enviadas da nuvem, então nenhum código salta o "pipeline" de
1:16 código. O intérprete não tem verificação de limites; ele confia no validador, e o validador confia na declaração. E tudo corre em modo "kernel", onde um ponteiro inválido não é uma exceção, mas uma falha de página que o Windows diz que não pode ser protegida por "try-except". Patrick Wardle lê-o de um "crash dump" naquela tarde: índice zero "x" catorze, "slot" vinte e um. A correção é manual. Modo de Segurança, apagar C-00000291, reiniciar. Com BitLocker, primeiro digite uma chave de recuperação de quarenta e oito dígitos
1:43 que reside num servidor que também está azul. Culpa no "git". CrowdStrike, sessenta e cinco por cento: o RCA lista seis descobertas, e a descoberta seis é uma frase completa: As Instâncias de Modelo devem ter implementação faseada. O design do modo "kernel", vinte e cinco: A CrowdStrike diz que o Windows não pode ainda hospedar segurança fora do "kernel", a Microsoft diz que não é um incidente da Microsoft, e a falha de página não se importa.
2:05 A sexta-feira, dez. A mensagem de "commit" diz que não é código. Raio de explosão: oito milhões e meio de dispositivos, menos de um por cento do Windows. A Delta cancela sete mil voos e processa por quinhentos milhões, incluindo a Microsoft. As seguradoras estimam a conta da Fortune 500 em cerca de cinco mil milhões. Hacker News: quatro mil e quinhentos pontos. A ironia: uma atualização destinada a detetar novas técnicas de ataque entregou uma. Veredicto, "postmortem": SHIP IT, por pouco.
2:27 Verificação de limites em seis dias, anéis faseados, controlo do cliente sobre as atualizações de conteúdo, duas revisões externas. Por pouco, porque tudo isso já era prática padrão. Segunda-feira: qualquer coisa que o seu agente puxe da nuvem recebe um anel "canary". A configuração é código no momento em que algo a analisa onde não pode falhar. Envie-me o incidente sobre o qual ainda não lhe é permitido falar, nos comentários, ou em "thedailydiff dot dev". E essa é a diferença de hoje.
2:48 Sou o Niko da Axrisi. Fazer "merge" com responsabilidade.
Fontes
- 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



