¿Conoces la vulnerabilidad Dirty Cow? Aprende a proteger tu servidor Linux de ella

 02/Nov/2016 -   Sistemas

Es habitual localizar bugs en el kernel de Linux, agujeros que permanecen vigentes durante varios años sin que nadie haga nada para solucionarlos, incluso en muchas ocasiones, teniendo conocimiento de sus existencia. Es lo que ha ocurrido con el último caso sacado a la luz. Lleva por nombre Dirty Cow aunque su nombre técnico es CVE-2016-5195 publicado en Canonical, Red Hat, y Debian. Un problema de seguridad muy importante que ha estado vigente durante 9 años.

¿En qué consiste la vulnerabilidad Dirty Cow?

La vulnerabilidad de la que hablamos en esta entrada, fue descubierta por Phil Oester, un experto en seguridad y desarrollador de Linux. Este bug, lo que permite es una escalada de privilegios de forma remota o local.

En sí, el problema está localizado en el subsistema de memoria kernel y afecta al proceso de copia virtual de operaciones de escritura que hace el núcleo. De forma resumida, lo que permite esta vulnerabilidad es que un usuario normal sin privilegios, podría utilizarla para escribir y tener acceso a partes del sistema que pertenecen a otros usuarios, incluso de root. Es decir, archivos que únicamente son de lectura, podrían ser modificados por usuarios que no son sus propietarios, con los problemas que esto podría acarrear.

Como no podía ser de otra forma, esta vulnerabilidad ya fue corregida por los responsables del kernel, aunque no todos los usuarios tendrán acceso a esa actualización donde se corrige este problema.

¿Cómo se si mi equipo sufre la vulnerabilidad Dirty Cow?

Según se ha comprobado, la vulnerabilidad ha existido dentro del kernel del Linux desde su versión 2.6.22 liberada en el año 2007. Ya en su momento, se tuvo conocimiento de ella. Para mitigar sus efectos, se lanzó un parche que no dio los resultados esperados ya que era incompatible con otras funciones del kernel. Ahí se quedó la cosa hasta hace unos días que volvió a salir a la luz.

Para saber si la versión que utilizamos en nuestro sistema es segura, deberemos mirar la versión que utilizamos y asegurarnos de que está dentro del listado de versiones seguras. En este momento son Linux 4.8.3, 4.7.9 y 4.4.26 LTS.

Dependiendo de la versión del sistema operativo que utilicemos, la forma de localizar el kernel que estamos utilizando puede variar.

Ubuntu / Debian

Para encontrar la versión, desde la línea de comandos deberemos ejecutar la siguiente instrucción.

uname –rv

Por pantalla, nos deberá aparecer información parecida al siguiente ejemplo que os dejamos.

4.4.0-42-generic #62-Ubuntu SMP Fri Oct 7 23:11:45 UTC 2016

Si vuestra versión es anterior a estas que os dejamos, entonces la vulnerabilidad os afecta directamente.

  • 8.0-26.28para Ubuntu 16.10
  • 4.0-45.66para Ubuntu 16.04 LTS
  • 13.0-100.147para Ubuntu 14.04 LTS
  • 2.0-113.155para Ubuntu 12.04 LTS
  • 16.36-1+deb8u2 para Debian 8
  • 2.82-1para Debian 7
  • 7.8-1para Debian unstable

CentOS

Algunas versiones de CentOS, pueden utilizar este script proporcionado por Red Hat para comprobar la vulnerabilidad del sistema. Para probarlo, lo primero que debemos hacer será descargarlo.

wget https://access.redhat.com/sites/default/files/rh-cve-2016-5195_1.sh

Posteriormente, lo deberemos de ejecutar.

bash rh-cve-2016-5195_1.sh

Si el sistema es vulnerable, por pantalla aparecerá un mensaje parecido a lo siguiente que os dejamos.

“Your kernel is 3.10.0-327.36.1.el7.x86_64 which IS vulnerable.
Red Hat recommends that you update your kernel. Alternatively, you can apply partial
mitigation described at https://access.redhat.com/security/vulnerabilities/2706661 .”

Poner solución a la vulnerabilidad Dirty Cow

Por suerte, poner solución a este problema es sencillo. Lo único que debemos hacer es actualizar el sistema y reiniciar el servidor.

En Ubuntu y Debian, podemos actualizar utilizando “apt-get”.

sudo apt-get update && sudo apt-get dist-upgrade

En el caso de CentOS 5, 6 y 7, podéis actualizar el sistema con “sudo yum update”, pero si sólo quieres solucionar este problema, entonces deberías ejecutar lo siguiente:

sudo yum update kernel

Una vez que se haya actualizado, debemos reiniciar el sistema.

Android, uno de los más afectados

En el punto anterior, hemos visto que poner solución a esta vulnerabilidad es fácil, únicamente hay que actualizar la versión del kernel de nuestro sistema. El problema lo podemos encontrar en aquellos sistemas operativos que hacen uso del kernel de Linux pero cuya actualización no es tan rápida como cabría de esperar.

El caso más claro lo tenemos con Android. En la mayoría de los casos, la actualización del sistema depende de los propios fabricantes y en muchos casos, pasan de llevarlas a cabo. De esta forman, nos encontramos en una situación en la que la mayoría de usuarios con terminales Android, serán susceptibles de que alguien pueda atacarles mediante este problema. La solución en estos casos es esperar a que los fabricantes lancen actualizaciones o bien utilizar rooms de terceras empresas que solucionen este problema.