+− THE DAILY DIFFdev & AI news
SHIP IT

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

  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