David William Plummer, un ex ingeniero de software de Microsoft que desarrolló el Administrador de tareas de Windows, ha publicado un vídeo en el que describe cómo la actualización de CrowdStrike podría haber provocado la parada de Windows. Describió CrowdStrike Falcon como un antimalware para servidores Windows, que «detecta de forma proactiva nuevos ataques» y analiza el comportamiento de las aplicaciones. Para ello, CrowdStrike necesita ejecutarse como un controlador de dispositivo de núcleo. Los controladores de dispositivo de núcleo suelen proporcionar una forma de abstraer el hardware, como las tarjetas gráficas, de las aplicaciones. Cuando se ejecutan, suelen tener acceso total al ordenador y al sistema operativo y, en la terminología de los sistemas operativos, se dice que se ejecutan en el «Ring Zero». Esto es diferente del código de aplicación, que los usuarios ejecutan en el espacio de usuario del sistema operativo conocido como «Ring One». La diferencia, como señala Plummer, es que cuando una aplicación de usuario se bloquea, nada más en el ordenador debería verse afectado. Sin embargo, un fallo en el código que se ejecuta en el Ring Zero se considera tan grave que el sistema operativo se detiene inmediatamente, lo que, en Windows, da lugar a la denominada Pantalla Azul de la Muerte. “Aunque no hay un dispositivo de hardware con el que realmente se comunique, al escribir el código como un controlador de dispositivo, CrowdStrike se encuentra en el anillo cero del núcleo y tiene acceso completo y sin restricciones a las estructuras de datos del sistema y los servicios que CrowdStrike cree que necesita para hacer su trabajo”, dijo Plummer. Controladores de dispositivos certificados Plummer señaló que Microsoft, y probablemente también CrowdStrike, son conscientes de lo que está en juego cuando el software ejecuta código en modo kernel, y agregó: “Es por eso que Microsoft ofrece el WHQL [Windows Hardware Quality Labs] Según Plummer, la certificación implica que los proveedores de software de controladores de dispositivos prueben su código en varias plataformas y configuraciones de sistema. Luego, el código es firmado digitalmente por Microsoft, que certifica que es compatible con el sistema operativo Windows. Plummer dijo que el proceso de certificación significa que los usuarios de Windows pueden estar razonablemente seguros de que el software del controlador es sólido y confiable. La certificación es demasiado lenta para garantizar que la protección anti-malware como CrowdStrike se publique como actualizaciones de software cada vez que hay una nueva amenaza. Plummer cree que es más probable que CrowdStrike publique a menudo un archivo de definición que es procesado por su controlador de kernel de Windows. Esto evita el proceso de certificación de controladores de dispositivos WHQL y significa que los usuarios tienen acceso a la protección más reciente. «Quizás ya se pueda ver el problema», agregó. «Especulemos por un momento que el archivo de definición dinámica de CrowdStrike no es simplemente una definición de malware sino un programa completo escrito en pseudocódigo que el controlador puede ejecutar». Dijo que esto permitiría que el controlador del dispositivo de CrowdStrike ejecute el archivo de definición como código que se ejecuta dentro del núcleo de Windows en Ring Zero, aunque la actualización en sí nunca haya sido firmada. “Código p ejecutivo [pseudocode] «En el kernel es arriesgado en el mejor de los casos y, en el peor, es buscarse problemas», dijo Plummer. Al observar los volcados de memoria publicados en X (anteriormente Twitter), Plummer dijo que una «referencia de puntero nulo» provocó que el controlador del dispositivo CrowdStrike cargara un archivo vacío que contenía ceros, en lugar del pseudocódigo real. «No sabemos cómo ni por qué sucedió esto, pero lo que sabemos es que el controlador CrowdStrike que maneja y procesa estas actualizaciones no es muy resistente y parece tener una comprobación de errores y una validación de parámetros inadecuadas», agregó. Estos son necesarios para garantizar que los valores de datos requeridos por el software sean válidos y buenos. Si no lo son, el error no debería provocar que todo el sistema se bloquee, dijo Plummer. Si bien a menudo es posible reiniciar Windows desde el último «buen estado» conocido, lo que puede eliminar los controladores de kernel no autorizados que impiden que el sistema operativo se inicie, Plummer dijo que la situación empeoró por el hecho de que CrowdStrike está marcado como un controlador de inicio de arranque, lo que significa que es necesario para que Windows se inicie correctamente. Si bien es demasiado pronto para saber cómo garantizar que esto no vuelva a suceder, está claro que existen graves limitaciones en la certificación WHQL de Microsoft que permitieron a CrowdStrike instalar una actualización antimalware que tuvo un impacto tan devastador en la comunidad de Windows.