—Disculpe, señor ¿tiene un minuto para hablarle sobre las actualizaciones de seguridad?
—Lo siento, pero estoy muy ocupado instalando parches.
Bromas aparte, vale la pena detenerse a pensar sobre qué tan eficientemente administras los parches.
En un mundo ideal, instalarías los parches para todo el software en uso en tu empresa tan pronto se lancen. Pero en la vida real, las cosas resultan más complicadas, y nunca hay tiempo suficiente para todos los parches. Así que debes establecer prioridades. Pero, ¿cuál es el mejor modo?
En la Conferencia RSA 2019, Jay Jacobs del Cyenta Institute y Michael Roytman de Kenna Security presentaron un estudio titulado “The Etiology of Vulnerability Exploitation” (“Etiología del aprovechamiento de vulnerabilidades”). Este estudio bien argumentado abordó las vulnerabilidades que merecen mayor atención y cómo mejorar drásticamente la instalación de parches y la estrategia de actualización de seguridad.
La premisa básica consiste en que, en la práctica, no todas la vulnerabilidades se ven aprovechadas. Asumiendo que esto sea cierto, se pueden descartar la gran mayoría de las actualizaciones, dando prioridad a las vulnerabilidades que realmente pueden usarse (y que muy probablemente lo sean) en un ataque. Pero, ¿cómo identificas las vulnerabilidades “peligrosas” para una variedad en “su mayoría” inofensiva?
Mediante las descripciones de la base de datos de CVE (Exposiciones y vulnerabilidades comunes, por sus siglas en inglés) y las bases de datos públicas sobre exploits, así como los datos provenientes de análisis de vulnerabilidad y sistemas IPS/IDS (un total de 7.3 mil millones de ataques registrados y 2.8 mil millones de vulnerabilidades en 13 millones de sistemas), los investigadores construyeron un modelo que maneja bastante bien las tareas. Para poner eso perspectiva se necesita un poco de análisis sobre el panorama de vulnerabilidad.
¿Cuántas CVE existen en activo?
Cualquier experto en seguridad informática te dirá que la cantidad de vulnerabilidades es enorme. Pocos, si alguno, saben la cifra exacta. A la fecha, se han publicado 108,000 CVE.
Asimismo, toma en cuenta que hace un par de años la tasa de de publicaciones mensuales aumentó: si durante los años 2005–2017 cerca de 300–500 CVE se publicaron cada mes, al final del 2017, el valor promedio mensual se disparó a 1,000, y desde entonces ha sido alto. Piénsalo: ¡eso equivale a una docena de nuevos bugs cada día!
La existencia de un exploit generalmente se conoce poco antes o inmediatamente después de la publicación de la CVE pertinente. Existen excepciones, pero en la mayoría de los casos, la ventana es más o menos de dos semanas en torno a la fecha de publicación de las CVE. De este modo, las CVE exigen una respuesta rápida.
Sobra decir que las tasas de instalaciones de actualizaciones se quedan un poco atrás. En promedio, solamente un cuarto de las vulnerabilidades se parchan un mes después de su detección. Toma 100 días eliminar la mitad, y un cuarto permanece sin parche un año después.
Más de tres tercios de las vulnerabilidades sin parche existen en productos provenientes de solo tres proveedores. No hay mérito alguno en adivinar qué proveedores y qué productos:
Mientras, un 77% de las CVE no tienen exploits publicados. Asimismo, resulta interesante que no todas las vulnerabilidades publicadas se encuentran en ambientes reales; solamente 37,000 de los 108,000 CVE existentes. Y solamente existen 5,000 CVE son al mismo tiempo aprovechables y en activo. Estas son las vulnerabilidades que deberían gozar prioridad; solamente hace falta que se las identifique correctamente.
Estrategias de parcheo existentes
Los investigadores midieron la importancia de las estrategias de parcheo mediante dos métricas: la porción de vulnerabilidades “peligrosas” dentro del número total de aquellas parchadas (eficiencia); y a la inversa: la porción de vulnerabilidades parchadas dentro del número total de aquellas “peligrosas” (cobertura).
Una de las estrategias de parcheo generalmente aceptadas se basan en el Sistema de puntaje de vulnerabilidades comunes (CVSS, por sus siglas en inglés), mediante la cual se asigna prioridad a los puntajes de CVSS que rebasan un valor específico. El cálculo de eficiencia y cobertura para CVSS de 10 arroja un 23% y un 7%, respectivamente. Es digno de mención que exactamente el mismo resultado (al menos según estas métricas) puede lograrse mediante la instalación aleatoria de parches.
El método más común es parchar todo lo que presente un puntaje “elevado” de CVSS (7 o superior), lo cual produce resultados notablemente mejores. Este método no es malo en su conjunto, pero requiere tiempo puesto que significa dar prioridad a la instalación de una gran cantidad de parches.
Una estrategia diferente sería dar prioridad al parcheo según el proveedor. Después de todo, los desarrolladores manejan diferentes cocientes entre la cantidad real de exploits y el número total de CVE, así que es lógico dar prioridad a aquellos cuyos productos contengan las vulnerabilidades con mayor probabilidad de aprovechamiento práctico.
Sin embargo, con base en la eficiencia y cobertura, esta estrategia resulta peor que el parcheo aleatorio: es la mitad de efectiva.
A la larga, este método es todavía menos pertinente que aquel basado en CVSS.
Modelo de cálculo de probabilidad para el aprovechamiento de vulnerabilidades
Esto nos trae de vuelta al modelo que los investigadores elaboraron. Al comparar las descripciones de CVE, las bases de datos públicas de exploits y los sistemas de IPS/IDS, el equipo pudo identificar una serie de signos que influyen en la probabilidad de que una vulnerabilidad tenga aprovechamiento práctico.
Por ejemplo, por una parte, los signos como la referencia de CVE de Microsoft, o la presencia de un exploit en Metasploit, incrementa dramáticamente la probabilidad de aprovechamiento de la vulnerabilidad en cuestión.
Alguno signos, por otra parte, reducen la probabilidad de aprovechamiento, como una vulnerabilidad dentro del navegador Safari, un exploit que se publicó en la base de datos de ExploitDB (el cual, por cuestiones prácticas, no resulta conveniente), la presencia de términos como “autentificado” o “doble liberación de memoria” en las descripciones de CVE y demás. Al combinar estos factores, los investigadores pueden calcular la probabilidad de aprovechamiento de una vulnerabilidad específica.
Para verificar la precisión del modelo, los investigadores compararon sus predicciones frente a los datos provenientes de ataques reales. Estos fueron sus hallazgos:
- El modelo funciona bien para las vulnerabilidades con probabilidad de aprovechamiento mínimo.
- El modelo tiende a sobreestimar la probabilidad de aprovechamiento de vulnerabilidades con una probabilidad predicha promedio.
- El modelo tiene a subestimar el riesgo para las vulnerabilidades con un elevada probabilidad de aprovechamiento.
Dicho esto, la precisión del modelo no es infalible, pero funciona en lo general. Con base en esto, los investigadores crearon tres parches de seguridad: altamente eficiente, balanceado y con máxima cobertura. La estrategia “balanceada”, por ejemplo, logra el doble de eficiencia de CVSS de 7+ con mejor cobertura (63% vs 52%) y la mitad del esfuerzo (es decir, la mitad de parches instalados). Esto es algo que vale la pena considerar, ¿no es así?
Para finalizar, he aquí algunos consejos de los investigadores sobre cómo actuar:
- Piensa si utilizarás algo diferente a CVSS en tu estrategia de parcheo.
- Explora cómo las vulnerabilidades abiertas/cerradas se registran en tu infraestructura.
- Comienza a recoger datos, provenientes de tus sensores, acerca de los exploits usados en ataques contra tus recursos.
- Cuando hayas recopilado una cantidad significativa de datos, utilízala para calcular los puntajes de eficiencia, cobertura y esfuerzo para tu infraestructura.
- Compara los valores frente a otras estrategias de priorización.
Estamos de acuerdo con los investigadores que aplicar parches a todos, sin un estrategia clara, es un desperdicio de recursos: Kaspersky Systems Management (parte de la solución Kaspersky Security for Business) utiliza monitoreo de vulnerabilidades y subsistemas de instalación de parches.
Ellos hacen posible identificar, dar prioridad y clausurar vulnerabilidades con rapidez. Además de los puntajes de CVSS, nuestra priorización utiliza la información proveniente de Kaspersky Security Network. Por ejemplo, si nuestros sistemas perciben que una vulnerabilidad actualmente se está aprovechando, su prioridad incrementa. Aquí encontrarás mayores detalles acerca de esta tecnología.