+− THE DAILY DIFFdev & AI news
SHIP IT

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

  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

Vídeos relacionados