Un campo extra bloqueó 8.5 millones de PC. 78 minutos.
19 de julio de 2024, 04:09 UTC: CrowdStrike envía el archivo de canal 291 —una actualización de contenido de respuesta rápida— a todos los sensores Windows Falcon en línea.
19 de julio de 2024, 04:09 UTC: CrowdStrike envía el archivo de canal 291 —una actualización de contenido de respuesta rápida— a todos los sensores Windows Falcon en línea. La plantilla que alimenta fue declarada con 21 campos de entrada en febrero; el código que suministra las entradas construye un array de 20. Durante cuatro meses, nada lee el campo 21, porque cada regla lo deja como un comodín. Esta actualización pone un patrón real allí. El validador de contenido en la nube cuenta 21 contra la declaración y lo pasa; el intérprete de contenido del sensor, sin verificación de límites, lee la ranura 21 en modo kernel y Windows causa fallos de página: PAGE_FAULT_IN_NONPAGED_AREA, csagent.sys. El controlador se carga temprano en el arranque a propósito, lee el mismo archivo, se bloquea de nuevo —bucle de arranque—. Revertido a las 05:27 UTC, 78 minutos después, pero 8.5 millones de máquinas (el recuento de Microsoft, menos del 1% de Windows) ya tienen el archivo, y la solución es un humano en cada teclado: Modo seguro, eliminar C-00000291*.sys, clave de recuperación de BitLocker. Aerolíneas, hospitales, bancos y centros 911 se detienen; Delta cancela aproximadamente 7,000 vuelos y reclama al menos $500 millones a CrowdStrike y Microsoft; Parametrix estima la factura de Fortune 500 cerca de $5.4 mil millones. Postmortem del propio análisis de causa raíz de CrowdStrike, la revisión preliminar posterior al incidente, el blog de Microsoft, el 8-K de Delta y el testimonio de la Cámara. Culpa de Git: 65 CrowdStrike / 25 el diseño en modo kernel / 10 el viernes. Veredicto sobre la solución: SHIP IT, por poco.
Leer la edición escrita (inglés) ↗
Lo que cubre este video
- 28 de febrero – 24 de abril de 2024: el sensor 7.11 envía el tipo de plantilla IPC (21 campos declarados, 20 suministrados); la prueba de estrés pasa el 5 de marzo; cuatro instancias funcionan porque el campo 21 es un comodín
- 19 de julio, 04:09 UTC: dos nuevas instancias de plantilla; el error lógico del validador de contenido deja pasar la que no es comodín; lectura fuera de límites en el kernel; 05:27 UTC revertido
- 19–29 de julio: remediación manual (Modo seguro, eliminar el archivo, clave de BitLocker); ~97% de los sensores funcionando para el 24 de julio, ~99% para el 29 de julio
- 25 de julio – 19 de agosto: verificación de límites en tiempo de ejecución, validación del recuento de campos en tiempo de compilación, verificaciones del validador, anillos canary + de despliegue, control del cliente sobre el contenido de respuesta rápida, dos revisiones independientes; RCA completo con volcado de memoria el 6 de agosto
Transcripción traducida
Traducido de la narración original en inglés. El audio y los subtítulos disponibles son controlados por YouTube.
0:00 Una actualización de seguridad lleva veintiún campos a un controlador diseñado para veinte, y ocho millones y medio de máquinas Windows muestran la pantalla azul antes del desayuno. 19 de julio de 2024, 04:09 UTC. CrowdStrike envía el archivo de canal 291 a cada sensor Falcon. Setenta y ocho minutos después lo retiran; para entonces las aerolíneas, los hospitales y los bancos miran el mismo rectángulo azul. La primera publicación del CEO dice que no es un ciberataque, cierto, y no es el punto. Cómo sucede, por qué es posible y quién tiene la culpa.
0:27 Este es The Daily Diff, postmortem. 28 de febrero. El sensor 7.11 envía un nuevo detector para tuberías con nombre. Declara veintiún campos de entrada; el código que lo alimenta construye un array de veinte. Nadie se da cuenta: durante cuatro meses cada regla deja el campo veintiuno como un comodín, y nadie lee un comodín. Una prueba de estrés pasa, se envían cuatro reglas, todo bien. 19 de julio, 04:09. Dos nuevas reglas; una pone un patrón real en el campo veintiuno.
0:51 El validador en la nube cuenta veintiuno contra la declaración y dice que está bien. Cada host Windows en línea lo descarga de inmediato, porque no hay anillo canary. El sensor lee la ranura veintiuno, que no es su memoria, y el kernel hace lo que hacen los kernels. 05:27, revertido. Demasiado tarde para cualquiera que reiniciara: el controlador se carga temprano en el arranque, lee el mismo archivo y se bloquea de nuevo. Bucle de arranque. ¿Por qué es posible esto? Las reglas son configuración enviada desde la nube, así que no es código que salta la
1:16 tubería de código. El intérprete no tiene verificación de límites; confía en el validador, y el validador confía en la declaración. Y todo se ejecuta en modo kernel, donde un puntero defectuoso no es una excepción sino un fallo de página que Windows dice que no puede ser protegido por try-except. Patrick Wardle lo lee de un volcado de memoria esa tarde: índice cero x catorce, ranura veintiuno. La solución es manual. Modo seguro, eliminar C-00000291, reiniciar. Con BitLocker, primero escriba una clave de recuperación
1:43 de cuarenta y ocho dígitos que reside en un servidor que también está azul. Culpa de Git. CrowdStrike, sesenta y cinco por ciento: el RCA enumera seis hallazgos, y el hallazgo seis es una frase completa: las instancias de plantilla deberían haber tenido un despliegue escalonado. El diseño en modo kernel, veinticinco: CrowdStrike dice que Windows no puede aún alojar seguridad fuera del kernel, Microsoft dice que no es un incidente de Microsoft, y al fallo de página no le importa.
2:05 El viernes, diez. El mensaje de commit dice que no es código. Radio de explosión: ocho millones y medio de dispositivos, menos del uno por ciento de Windows. Delta cancela siete mil vuelos y demanda por quinientos millones, Microsoft incluido. Las aseguradoras estiman la factura de Fortune 500 cerca de cinco mil millones. Hacker News: cuatro mil quinientos puntos. La ironía: una actualización destinada a detectar nuevas técnicas de ataque entregó una. Veredicto, postmortem: SHIP IT, por poco.
2:27 Verificación de límites en seis días, anillos escalonados, control del cliente sobre las actualizaciones de contenido, dos revisiones externas. Por poco, porque todo eso ya era práctica estándar. Lunes: cualquier cosa que su agente extraiga de la nube obtiene un anillo canary. La configuración es código en el momento en que algo la analiza donde no puede lanzar una excepción. Envíeme el incidente del que todavía no se le permite hablar, en los comentarios, o en the daily diff dot dev. Y esa es la diferencia de hoy.
2:48 Soy Niko de Axrisi. Fusionen responsablemente.
Fuentes
- 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



