Um campo extra travou 8,5 milhões de PCs. 78 minutos.
19 de julho de 2024, 04:09 UTC: A CrowdStrike envia o Arquivo de Canal 291 — uma atualização de Conteúdo de Resposta Rápida — para cada sensor Falcon online do Windows.
19 de julho de 2024, 04:09 UTC: A CrowdStrike envia o Arquivo de Canal 291 — uma atualização de Conteúdo de Resposta Rápida — para cada sensor Falcon online do Windows. O template que ele alimenta foi declarado com 21 campos de entrada em fevereiro; o código que fornece as entradas constrói um array de 20. Por quatro meses, nada lê o campo 21, porque toda regra o deixa como um curinga. Esta atualização coloca um padrão real ali. O Validador de Conteúdo na nuvem conta 21 contra a declaração e o aprova; o Interpretador de Conteúdo do sensor, sem verificação de limites, lê o slot 21 no modo kernel e o Windows apresenta falhas de página: PAGE_FAULT_IN_NONPAGED_AREA, csagent.sys. O driver carrega cedo na inicialização de propósito, lê o mesmo arquivo, trava novamente — loop de inicialização. 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 arquivo, e a solução é um humano em cada teclado: Modo de Segurança, excluir C-00000291*.sys, chave de recuperação do BitLocker. Companhias aéreas, hospitais, bancos e centros de 911 param; a Delta cancela cerca de 7.000 voos e exige pelo menos US$ 500 milhões da CrowdStrike e da Microsoft; a Parametrix estima a conta da Fortune 500 em quase US$ 5,4 bilhões. Postmortem da própria Análise de 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. Git blame: 65 CrowdStrike / 25 o design do modo kernel / 10 a sexta-feira. Veredito sobre a correção: SHIP IT, por pouco.
Leia a edição escrita (Inglês) ↗
O que este vídeo aborda
- 28 de fev – 24 de abr de 2024: sensor 7.11 envia o Tipo de Template IPC (21 campos declarados, 20 fornecidos); teste de estresse aprovado em 5 de mar; quatro instâncias funcionam porque o campo 21 é um curinga
- 19 de jul, 04:09 UTC: duas novas Instâncias de Template; erro lógico do Validador de Conteúdo permite a passagem da que não é curinga; leitura fora dos limites no kernel; 05:27 UTC revertido
- 19–29 de jul: remediação manual (Modo de Segurança, excluir o arquivo, chave do BitLocker); ~97% dos sensores restaurados 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, canário + anéis de implantação, controle do cliente sobre o Conteúdo de Resposta Rápida, duas revisões independentes; RCA completo com despejo de falha em 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 dão tela azul antes do café da manhã. 19 de julho de 2024, 04:09 UTC. A CrowdStrike envia o Arquivo de Canal 291 para cada sensor Falcon. Setenta e oito minutos depois eles o retiram; a essa altura companhias aéreas, hospitais e bancos encaram o mesmo retângulo azul. A primeira postagem do CEO diz que não é um ataque cibernético, verdade, e não é o ponto. Como acontece, por que é possível e quem leva a culpa.
0:27 Este é O Daily Diff, postmortem. 28 de fevereiro. O Sensor 7.11 envia um novo detector para pipes nomeados. Ele declara vinte e um campos de entrada; o código que o alimenta constrói um array de vinte. Ninguém nota: por quatro meses toda regra deixa o campo vinte e um como um curinga, e ninguém lê um curinga. Um teste de estresse é aprovado, quatro regras são enviadas, tudo bem. 19 de julho, 04:09. Duas novas regras; uma 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. Todo host Windows online o baixa de uma vez, porque não há anel canário. O sensor lê o slot vinte e um, que não é sua memória, e o kernel faz o que kernels fazem. 05:27, revertido. Tarde demais para quem reiniciou: o driver carrega cedo na inicialização, lê o mesmo arquivo e trava novamente. Loop de inicialização. Por que isso é possível? As regras são configurações enviadas da nuvem, então o código não pula o pipeline de
1:16 código. O interpretador não tem verificação de limites; ele confia no validador, e o validador confia na declaração. E tudo isso roda 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ê em um despejo de falha naquela tarde: índice zero x quatorze, slot vinte e um. A correção é manual. Modo de segurança, excluir C-00000291, reiniciar. Com BitLocker, primeiro digite uma chave de recuperação de quarenta e oito dígitos
1:43 que está em um servidor que também está azul. git blame. CrowdStrike, sessenta e cinco por cento: o RCA lista seis descobertas, e a descoberta seis é uma frase completa: As Instâncias de Template deveriam ter implantação faseada. O design do modo kernel, vinte e cinco: CrowdStrike diz que o Windows ainda não pode 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, Microsoft incluída. As seguradoras estimam a conta da Fortune 500 em quase cinco bilhões. Hacker News: quatro mil e quinhentos pontos. A ironia: uma atualização destinada a detectar novas técnicas de ataque entregou uma. Veredito, postmortem: SHIP IT, por pouco.
2:27 Verificação de limites em seis dias, anéis faseados, controle 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: o que seu agente puxar da nuvem recebe um anel canário. Configuração é código no momento em que algo o analisa onde não pode lançar uma exceção. Envie-me o incidente sobre o qual você ainda não tem permissão para falar, nos comentários, ou em the daily diff dot dev. E essa é a diferença de hoje.
2:48 Eu sou Niko da Axrisi. Funda 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



