Análisis del CVSS de ShellShock

Una de las vulnerabilidades más importantes del año sin duda ha sido ShellShock. En el artículo de hoy vamos a explicaros cómo funciona el sistema de evaluación de vulnerabilidades más extendido, el CVSS (Common Vulnerability Scoring System), haciendo uso de dicha vulnerabilidad.

Como ya sabéis la vulnerabilidad de ShellShock corresponde a un bug en Bash que afecta a sistemas UNIX, Linux y OS X que incorporan esta herramienta en su sistema. Dentro de la métrica CVSS podemos encontrar este bug dividido en dos ocurrencias: CVE-2014-6271 y CVE-2014-7169.

¿Qué es CVSS?

CVSS es una métrica para evaluar vulnerabilidades que nos reporta un valor, o conjunto de valores, que nos dan una idea del peligro que conlleva una vulnerabilidad.

Si buscamos el CVSS Score de las vulnerabilidades nombradas en la National Vulnerability Database (NVD) veremos que su valor es 10.

¿Cómo se utiliza?

CVSS utiliza tres métricas básicas para medir el alcance que puede tener una vulnerabilidad. Podemos verlas en la siguiente imagen para la CVE-2014-6271

01grafico

1. Métrica Base 

Dentro de la métrica base tenemos evaluados aquellos parámetros que son constantes en el tiempo y el entorno. Dicha métrica se suele expresar como un vector.

02base

Esto es lo que se conoce con el nombre de vector base y sería el siguiente:

CVSS v2 Vector (AV:N/AC:L/Au:N/C:C/I:C/A:C)

  • AV: Vector de Acceso, es decir, la manera a través de la cual podemos acceder a la vulnerabilidad. En nuestro caso para explotar la vulnerabilidad podemos acceder desde cualquier red, no sólo en local (N:Network).
  • AC: Complejidad de Acceso, es decir, la complejidad que requiere el atacante una vez ha accedido al sistema, en nuestro caso complejidad baja (L: Low).
  • Au: Autenticación, es decir, cuantas veces debe autenticarse el usuario para poder hacer uso de la vulnerabilidad, en nuestro caso ninguna (N:None).
  • C: Impacto de Confidencialidad, es decir, como afecta esta vulnerabilidad en cuanto a la confidencialidad. En este caso el impacto es total, porque podemos ejecutar cualquier código en el sistema, lo que conlleva acceso a cualquier archivo, rompiendo de manera completa la confidencialidad del sistema (C: Complete).
  • I: Impacto de Integridad, es decir, como afecta esta vulnerabilidad en cuanto a la integridad. Al igual que en el caso anterior, tenemos acceso completo a modificar cualquier archivo de tal forma que se rompe este principio completamente (C: Complete).
  • A: Impacto a la Disponibilidad, más de lo mismo, si podemos ejecutar en el sistema cualquier comando podemos echar abajo servicios entre otras cosas. Por tanto afecta a la disponibilidad de manera completa (C: Complete)

Normalmente a la hora de evaluar una vulnerabilidad mediante el CVSS tan sólo se suele valorar la métrica base, ya que las dos siguientes son opcionales y cambiantes en el tiempo. En caso de la vulnerabilidad que tratamos aquí no han sido evaluadas, pero no obstante vamos a explicar cada uno de los campos.

2. Métrica Temporal 

Esta métrica varía en el tiempo, en ella podemos evaluar varios parámetros como vemos a continuación:

03temporal

 

  • Explotabilidad: se refiere a si existen exploits y si están disponibles, o sólo existen pruebas de concepto, si los exploit sólo existen en X sistemas o por el contrario existe código multiplataforma.
  • Nivel de curación: hace referencia a la existencia o no de soluciones para corregir dicho bug, si estas provienen de fuentes oficiales o anónimas, o incluso si son soluciones temporales.
  • Confianza del anuncio: trata de evaluar la veracidad en la existencia de dicha vulnerabilidad, si ha sido confirmada por fuentes oficiales (el responsable del software o sistema) o sólo por grupos independientes de seguridad.

A continuación os muestro la evaluación que podríamos hacer de esta métrica para la CVE-2014-6271.

03temporal-shell

 

Explicación: La explotabilidad es alta ya que existen numerosos exploits documentados, en cuanto a la cura también existen parches de fuentes oficiales para todas las plataformas afectadas y en cuanto a su confirmación, está más que confirmada su existencia.

3. Métrica del entorno

Esta métrica también varía en el tiempo, en ella podemos evaluar varios parámetros relacionados al entorno al cual afecta la vulnerabilidad. Los vemos a continuación:

04entornol

  • Daño colateral potencial: hace referencia al daño que puede ocasionar a terceros, como a personas, bienes físicos, la productividad o beneficios.
  • Distribución de objetivos: aquí medimos la proporción de sistemas vulnerables en el entorno, se suele dar valor numérico entre 0 y 10; y se expresa en intervalos de mínimo y máximo.
  • Modificadores de las subpuntaciones de impacto: aquí se trata del grado de afectación dentro de los objetivos de la seguridad como son Confidencialidad, Integridad y Disponibilidad. Es decir, mediante estos valores podemos medir cuan importante es para esta vulnerabilidad cada uno de estos parámetros.

A continuación os muestro la evaluación que podríamos hacer de esta métrica para la CVE-2014-6271.

04entornol-shell

Explicación: El daño colateral es enorme, ya que si se puede explotar esta vulnerabilidad en un entorno de una empresa, por ejemplo, podríamos hacer lo que quisiéramos. Datos de clientes que provoquen pérdidas económicas, proyectos de investigación en manos inadecuadas que roben ideas, etc.

En cuanto al número de sistemas afectados, estaréis de acuerdo conmigo que entre el 76% y 100% de sistemas han tenido que parchear dicha vulnerabilidad, desde el smartphone Android que llevamos en el bolsillo hasta el servidor linux que se utiliza en el trabajo.

En referencia a los modificadores en cuanto a Confidencialidad, Integridad y Disponibilidad; podemos decir que cualquiera de los tres objetivos de la seguridad son importantes en esta vulnerabilidad, de ahí su valor High.

Conclución

Una vez evaluados todos los parámetros y explicados cada uno de ellos, podemos recalcular el CVSS de la CVE-2014-7169 usando el propio sistema de cálculo que nos facilita NVD (CVSS v2 Calculator), y obtendremos el siguiente resultado:

05final

El vector completo para CVE-2014-7169 quedaría de la siguiente forma:

CVSS v2 Vector (AV:N/AC:L/Au:N/C:C/I:C/A:C/E:H/RL:OF/RC:C/CDP:H/TD:H/CR:H/IR:H/AR:H)

Espero que a partir de ahora entendáis mejor este sistema de evaluación de vulnerabilidades.

Un handshake de @eduSatoe

«Debes aprender mientras dure tu ignorancia; si creemos al dicho, mientras dure tu vida«

Séneca