El fallo de Windows. CrowdStrike ha hablado.

Ya ha pasado casi un mes de uno de los sucesos que ha sido, sin duda, uno de los problemas cibernéticos más importantes del año y posiblemente de la década. Esta definición no la doy solo yo, si no que la dan altos cargos de otras empresas como Omer Grossman (CIO de CyberArk).

La actualización defectuosa hizo que más de 8.5 millones de ordenadores con Windows como sistema operativo estuvieran inservibles y el daño a los procesos empresariales a nivel mundial fue dramático. Este fallo afectó tanto a pequeñas empresas como a infraestructuras críticas, como hospitales.

Desde CrowdStrike explicaron unos días despues lo sucedido y cual fue la causa del error y de no saltar las alarmas de los diversos controles realizados antes de su puesta en producción.

Primero comenzar explicando que hay dos punto clave en este problema:

  1. «Sensor content»
  2. «Rapid response content»

Sensor content

Fue el principal acusado en el momento de máxima tensión. Es muy común que se actualiza y para desplegar debe pasar diversos test (Unitarios, de integración, de estrés y de desempeño). Contiene diversos modelos de machine learning, IA, etc para detectar amenazas de una forma más efizaz.

Los clientes pueden elegir que versión tener. Es decir, pueden escoger actualizar siempre a la última versión (N) o pueden escoger alguna versión previa (N-1, N-2….), que debería estar más testada y, por tanto, ser más estable.

Desde CrowdStrike nos aclararon que este no fue el culpable del incidente. El despliegue fue correcto, paso un exhausitvo QA y todos los test. Es decir, no dio ningún problema.

Rapid response content

Es el encargado de analizar patrones de comportamiento. Busca similitudes con virus conocidos para detectar cuando algún virus muta o se camufla de cierta forma.

El «código» (que realmente no es código como tal), está en un archivo binario propietario. Es decir, es un archivo binario cuyo «código» es privado.

Básicamente funciona con heurísticas de comportamiento, es decir, intenta detectar amenazas basándose en como se comportan los programas y no en lo que son. Para que lo veamos con un ejemplo, se podría decir que se trata de un policía que en lugar de fijarse en tu nombre y antecedentes, analiza si estás teniendo un comportamiento extraño.

Esto se entrega como «Template instance», o lo que es lo mismo, modelos de comportamiento.

Dentro de cada actualización del sensor «Falcon», está dentro este «Rapid Response Content»

Falcon

Tiene tres subsistemas:

  • «Content Configuration System»
  • «Content Interpreter»
  • «Sensor Detection Engine»

Content Configuration System

Nos vamos a centrar en este, que es el que nos importa para este caso.

Antes de cada despliegue, una tarea a realizar es pasar un «Content Validator» que se encarga de comprobar que los «Template Instances» sean los correctos.

¿Qué ocurrió?

El día 28 de marzo se despliega el sensor 7.11. Añade un nuevo «IPC Template Type», que detecta novedosas vías de ataque. Ataques que atacaban a las «Named Pipes» por si te interesa informarte más en profundidad.

El 5 de marzo, se realiza un test de estrés del «IPC Template Type», que resulta exitoso. Se lanza el archivo «Channel File 291», siguiendo todos los tests exitosamente.

Otras tres «IPC Template Instances» se despliegan correctamente entre el 8 y el 24 de abril.

El 19 de julio, se despliegan 2 nuevas «IPC Template Instances». Y es en estas donde empiezan los problemas. El «Content Validator» tiene un bug que hace que no se detecten unos datos inválidos (a pesar de que el 5 de marzo se habían superado todos los test pertinentes). Como no detecta ningún error, se despliega en producción.

El sensor «Falcon» que tienen todos los ordenadores, recibe los datos y los carga en el «Content Interpreter». El «Channel File 291» produce un out-of-bounds memory exception porque también existía un bug de manejo de excepciones.

Y……

Medio mundo parado por una excepción mal manejada que salta de un fichero mínimamente incorrecto que no se detecta por un bug en un «Content Validator» que ha pasado unos tests que justamente no comprobaban lo que falló.

Tienes la explicación completa aquí: https://www.crowdstrike.com/falcon-content-update-remediation-and-guidance-hub/