+− THE DAILY DIFFdev & AI news
SHIP IT

Un campo extra "crasheou" 8,5 millóns de PCs. 78 minutos.

19 de xullo de 2024, 04:09 UTC: CrowdStrike envía o ficheiro de canle 291 — unha actualización de contido de "Rapid Response" — a cada sensor de Windows Falcon en liña.

19 de xullo de 2024, 04:09 UTC: CrowdStrike envía o ficheiro de canle 291 — unha actualización de contido de "Rapid Response" — a cada sensor de Windows Falcon en liña. O modelo que alimenta foi declarado con 21 campos de entrada en febreiro; o código que fornece as entradas constrúe un array de 20. Durante catro meses, nada le o campo 21, porque cada regra o deixa como un comodín. Esta actualización pon un patrón real alí. O validador de contido da nube conta 21 contra a declaración e pásao; o intérprete de contido do sensor, sen verificación de límites, le o slot 21 en modo kernel e Windows ten fallos de páxina: PAGE_FAULT_IN_NONPAGED_AREA, csagent.sys. O controlador carga cedo no arranque a propósito, le o mesmo ficheiro, "crashea" de novo — "boot loop". Revertido ás 05:27 UTC, 78 minutos despois, pero 8,5 millóns de máquinas (reconto de Microsoft, menos do 1% de Windows) xa teñen o ficheiro, e a solución é un humano en cada teclado: Modo seguro, eliminar C-00000291*.sys, chave de recuperación de BitLocker. Aerolíneas, hospitais, bancos e centros de emerxencias paran; Delta cancela uns 7.000 voos e reclama polo menos 500 millóns de dólares a CrowdStrike e Microsoft; Parametrix sitúa a factura da Fortune 500 preto dos 5.400 millóns de dólares. Postmortem da propia Análise de Causa Raíz de CrowdStrike, a Revisión Preliminar Post-Incidente, o blog de Microsoft, o 8-K de Delta e o testemuño da Cámara. Git blame: 65 CrowdStrike / 25 o deseño en modo kernel / 10 o venres. Veredicto sobre a corrección: SHIP IT, por pouco.

Ler a edición escrita (inglés) ↗

Que abrangue este vídeo

  • 28 de febreiro – 24 de abril de 2024: o sensor 7.11 envía o Tipo de Modelo IPC (21 campos declarados, 20 fornecidos); a proba de estrés pasa o 5 de marzo; catro instancias funcionan porque o campo 21 é un comodín
  • 19 de xullo, 04:09 UTC: dúas novas Instancias de Modelo; o erro lóxico do Validador de Contido permite o paso do non-comodín; lectura fóra de límites no kernel; 05:27 UTC revertido
  • 19–29 de xullo: remediación manual (Modo seguro, eliminar o ficheiro, chave de BitLocker); ~97% dos sensores de volta para o 24 de xullo, ~99% para o 29 de xullo
  • 25 de xullo – 19 de agosto: verificación de límites en tempo de execución, validación de conta de campos en tempo de compilación, verificacións do validador, aneis de "canary" + despregamento, control do cliente sobre o Contido de Resposta Rápida, dúas revisións independentes; RCA completa con "crash dump" o 6 de agosto

Transcrición traducida

Traducido da narración orixinal en inglés. O audio e os subtítulos dispoñibles son controlados por YouTube.

0:00 Unha actualización de seguridade leva vinte e un campos a un controlador construído para vinte, e oito millóns e medio de máquinas Windows teñen a pantalla azul antes do almorzo. 19 de xullo de 2024, 04:09 UTC. CrowdStrike envía o ficheiro de canle 291 a cada sensor Falcon. Setenta e oito minutos despois retírano; para entón as aerolíneas, hospitais e bancos miran o mesmo rectángulo azul. A primeira publicación do CEO di que non é un ciberataque, certo, e non é o punto. Como ocorre, por que é posible e quen ten a culpa.

0:27 Isto é The Daily Diff, "postmortem". 28 de febreiro. O sensor 7.11 envía un novo detector para "named pipes". Declara vinte e un campos de entrada; o código que o alimenta constrúe un array de vinte. Ninguén se decata: durante catro meses cada regra deixa o campo vinte e un como un comodín, e ninguén le un comodín. Unha proba de estrés pasa, catro regras envíanse, todo ben. 19 de xullo, 04:09. Dúas novas regras; unha pon un patrón real no campo vinte e un.

0:51 O validador na nube conta vinte e un contra a declaración e di que está ben. Cada host de Windows en liña descárgao de inmediato, porque non hai anel "canary". O sensor le o slot vinte e un, que non é a súa memoria, e o kernel fai o que fan os kernels. 05:27, revertido. Demasiado tarde para calquera que reiniciou: o controlador carga cedo no arranque, le o mesmo ficheiro e "crashea" de novo. "Boot loop". Por que é posible isto? As regras son configuracións enviadas desde a nube, polo que non é código que salta a

1:16 liña de "pipeline" do código. O intérprete non ten verificación de límites; confía no validador, e o validador confía na declaración. E todo execútase en modo kernel, onde un punteiro erróneo non é unha excepción senón un fallo de páxina que Windows di que non pode ser protexido por "try-except". Patrick Wardle leuno dun "crash dump" esa tarde: índice cero "x" catorce, slot vinte e un. A solución é manual. Modo seguro, eliminar C-00000291, reiniciar. Con BitLocker, primeiro teclee unha chave de recuperación de

1:43 cuarenta e oito díxitos que vive nun servidor que tamén está azul. git blame. CrowdStrike, sesenta e cinco por cento: a RCA lista seis achados, e o achado seis é unha frase completa: As instancias de modelo deberían ter un despregamento escalonado. O deseño en modo kernel, vinte e cinco: CrowdStrike di que Windows non pode aínda aloxar seguridade fóra do kernel, Microsoft di que non é un incidente de Microsoft, e ao fallo de páxina non lle importa.

2:05 O venres, dez. A mensaxe do commit di que non é código. Radio de explosión: oito millóns e medio de dispositivos, menos do un por cento de Windows. Delta cancela sete mil voos e demanda por cincocentos millóns, Microsoft incluído. As aseguradoras sitúan a factura da Fortune 500 preto dos cinco mil millóns. Hacker News: corenta e cinco mil puntos. A ironía: unha actualización destinada a detectar novas técnicas de ataque entregou unha. Veredicto, "postmortem": SHIP IT, por pouco.

2:27 Verificación de límites en seis días, aneis escalonados, control do cliente sobre as actualizacións de contido, dúas revisións externas. Por pouco, porque todo iso xa era práctica estándar. Luns: calquera cousa que o seu axente "pullee" da nube obtén un anel "canary". A configuración é código no momento en que algo o analiza onde non pode lanzar unha excepción. Envíeme o incidente do que aínda non se lle permite falar, nos comentarios, ou en "the daily diff dot dev". E esa é a diferenza por hoxe.

2:48 Son Niko de Axrisi. Fusione con 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