Informe sobre la Falla Global de Microsoft Causada por CrowdStrike

Introducción

El 19 de julio de 2024, una actualización defectuosa de software de CrowdStrike provocó una interrupción tecnológica global que afectó a múltiples sectores y regiones. En este artículo, intento explicarte el origen del problema, el impacto  global ocasionado y las medidas que podrían haberse tomado para evitarlo desde el punto de vista del control de calidad.

1. Origen del Problema

El origen del problema fue  debido a una actualización defectuosa del «Falcon Sensor» de CrowdStrike, un producto de seguridad informática diseñado para la Detección y Respuesta de Endpoint (EDR, por sus siglas en inglés). La actualización contenía errores que entraron en conflicto con los sistemas operativos Microsoft Windows, resultando en la temida «Pantalla Azul de la Muerte» (BSOD), que bloquea los sistemas al reiniciarse. La pregunta que aquí hay que hacerse es: ¿Qué raro que no se hayan tomado las medidas correspondientes al control de calidad, verdad? O posiblemente las tomaron pero no revisaron su alcance y el control aplicado.

2. Impacto Global Ocasionado

El impacto de este error fue significativo y se extendió a diversos sectores:

  • Aviación: Aerolíneas como American Airlines, Delta Airlines y United Airlines tuvieron que suspender vuelos, causando caos en aeropuertos y afectando a miles de pasajeros. ¿Cuántas personas habrán sido perjudicadas? ¿Quién se habrá ocupado de compensarlas económicamente? En fin…consecuencias de un bug a nivel global.
  • Banca y Finanzas: Instituciones financieras reportaron interrupciones en sus servicios, afectando transacciones y operaciones bancarias. ¿Cuántas transacciones habrán originado conflictos para cerrar acuerdos? ¿Quién compensará a los perjudicados? 
  • Salud: Sistemas de reservas médicas quedaron fuera de línea, complicando la gestión de citas y procedimientos médicos. ¿Cuántas personas que necesitaban turnos con algún médico de manera urgente tuvieron que esperar con la consecuencia que eso implica? ¿Cómo se habrán solucionado estos temas?
  • Medios de Comunicación: Difusores como Sky News en el Reino Unido experimentaron interrupciones, afectando la transmisión de noticias.
  • Servicios Públicos: Servicios gubernamentales y centros de llamadas de emergencia (911) también se vieron afectados, comprometiendo la seguridad y la respuesta a emergencias. ¿Cuántas personas se habrán visto perjudicadas al no recibir la respuesta que estaban esperando y en qué habrá quedado todo?
  • Impacto Global: La interrupción afectó a organizaciones en todo el mundo, incluyendo países como Estados Unidos, Australia, Nueva Zelanda y España, con un estimado de 8,5 millones de dispositivos Windows afectados y costos que podrían ascender a 1.000 millones de dólares​.

3. Cómo se Podría Haber Evitado

Para evitar un incidente de esta magnitud, se podrían haber implementado las siguientes medidas, con ejemplos concretos y técnicos basados en el contenido del programa de estudios del ISTQB CTAI:

  1. Pruebas Exhaustivas antes del Despliegue
    • Pruebas de Regresión: Realizar pruebas de regresión exhaustivas para asegurarse de que la nueva actualización no afecte las funcionalidades existentes. Por ejemplo, automatizar un conjunto de pruebas de regresión utilizando herramientas como Selenium o JUnit para ejecutar pruebas en diferentes versiones de Windows.
    • Pruebas de Integración: Asegurarse de que el «Falcon Sensor» sea compatible con otros componentes del sistema, como controladores y aplicaciones de terceros. Por ejemplo, utilizar herramientas de integración continua como Jenkins para automatizar el proceso de integración y pruebas.
  2. Automatización de Pruebas
    • Utilizar herramientas de automatización de pruebas para cubrir un mayor espectro de casos de prueba y detectar posibles fallos más rápidamente. Herramientas como Selenium WebDriver pueden ser utilizadas para automatizar pruebas en diferentes entornos y dispositivos.
    • Implementar scripts de prueba para simular diferentes escenarios de uso y carga. Por ejemplo, utilizar Apache JMeter para realizar pruebas de carga y estrés, asegurando que el sistema pueda manejar múltiples solicitudes simultáneas sin fallar.
  3. Entornos de Prueba Replicables
    • Crear entornos de prueba que repliquen el entorno de producción lo más fielmente posible. Utilizar contenedores Docker para crear entornos de prueba consistentes y reproducibles que simulen diferentes configuraciones de hardware y software.
    • Implementar pruebas en un entorno de preproducción antes de desplegar la actualización en el entorno de producción. Esto permite identificar problemas que solo podrían surgir en condiciones de uso real.
  4. Pruebas de Recuperación y Contingencia
    • Realizar pruebas de recuperación y contingencia para asegurarse de que el sistema pueda recuperarse rápidamente de fallos. Por ejemplo, realizar simulaciones de fallos y verificar que los sistemas de respaldo y recuperación funcionen correctamente.
    • Desarrollar y probar planes de contingencia que incluyan procedimientos detallados para restaurar el servicio en caso de una interrupción. 
  5. Colaboración y Comunicación
    • Fomentar una comunicación abierta y constante entre los equipos de desarrollo, operaciones y pruebas para asegurar que todos estén al tanto de los cambios y posibles riesgos. Utilizar herramientas de gestión de proyectos como Jira y Xray para mantener un seguimiento detallado de las tareas y problemas reportados.
    • Implementar prácticas de DevOps que integren el desarrollo y las operaciones, permitiendo una mayor colaboración y una respuesta más rápida a los problemas que surjan.
  6. Monitoreo Post-Despliegue
    • Implementar un sistema de monitoreo robusto para detectar y reaccionar rápidamente a cualquier problema que surja después del despliegue de una actualización. Utilizar herramientas como Nagios para monitorear el rendimiento del sistema y recibir alertas en tiempo real sobre cualquier anomalía.
    • Establecer un equipo de respuesta rápida que pueda actuar inmediatamente ante cualquier problema detectado post-despliegue, minimizando el tiempo de inactividad y el impacto en los usuarios.

Glosario de Términos Técnicos

  • Endpoint Detection and Response (EDR): Tecnología de ciberseguridad que monitorea continuamente y responde a las amenazas avanzadas en los endpoints, como computadoras y dispositivos móviles.
  • Pantalla Azul de la Muerte (BSOD): Error crítico del sistema operativo Windows que indica un problema grave que requiere el reinicio del sistema.
  • Regresión: En pruebas de software, se refiere a la ejecución de pruebas para asegurarse de que los cambios recientes no han afectado las funciones existentes del software.
  • Integración: Pruebas que se realizan para verificar que diferentes módulos o servicios de una aplicación trabajan juntos correctamente.
  • Entorno de Producción: El entorno donde el software se utiliza en operaciones reales, a diferencia de los entornos de desarrollo o prueba.
  • Automatización de Pruebas: Uso de software para ejecutar pruebas automáticamente, comparar los resultados esperados y reales, y reportar los resultados.
  • Pruebas de Recuperación y Contingencia: Pruebas que aseguran que el sistema pueda recuperarse de fallos y que hay planes en marcha para restaurar el servicio.
  • DevOps: Práctica que combina el desarrollo de software (Dev) y las operaciones de TI (Ops) para mejorar la colaboración y la eficiencia.

Comentario final

La falla global de Microsoft causada por una actualización defectuosa del software de CrowdStrike resalta la importancia de procedimientos de prueba robustos y la necesidad de un monitoreo continuo post-despliegue. Mediante la implementación de prácticas adecuadas de prueba y colaboración, se pueden minimizar los riesgos asociados con las actualizaciones de software y evitar interrupciones significativas en los servicios tecnológicos a nivel mundial.

Fuentes de consulta e inspiración:

  • https://cnnespanol.cnn.com/
  • https://www.infobae.com/

 

Gus Terrera

Apasionado por el agile testing y la ia.