Nos encontramos de nuevo ante una vulnerabilidad “mediática” que tiene su propia web con logo incluido y que asegura ser bastante grave en sistemas Linux (y Android). Dirty Cow se aprovecha de un fallo de seguridad antiguo presente en el kernel de Linux desde hace 11 años, pero que ahora sale a la luz del gran público con la esperanza de que sea parcheada de una vez por todas.
Una vulnerabilidad con historia
Como acabamos de decir, esta vulnerabilidad no es nueva, y el propio Linus Torvalds ya intentó solucionarla sin éxito hace 11 años. Él mismo habla de esta vulnerabilidad en un mensaje en la lista de correo no oficial del kernel de Linux y propone una solución para evitar que esta vulnerabilidad sea aprovechada por un atacante.
Dirty Cow es una vulnerabilidad provocada por problemas en el sistema de memoria del kernel de Linux cuando se realizan ciertas operaciones en memoria, permitiendo a un usuario sin permisos utilizar este fallo para conseguir permisos de escritura y escalar privilegios en el sistema hasta llegar a ser root.
El nombre de la vulnerabilidad es un acrónimo de Copy On Write (COW), una técnica utilizada por los sistemas operativos y consiste en no realizar la copia tan pronto como es solicitada, accediendo al archivo o bloque de memoria original y realizándola solo cuando este sea modificado, consiguiendo así un ahorro de tiempo.
Sin embargo, existe la posibilidad de que esta técnica falle y esta copia no se realice correctamente cuando toca o incluso se haga en una ubicación errónea. Este segundo escenario es lo que provoca que exista la vulnerabilidad Dirty Cow, y es que los datos copiados se colocan en una posición errónea de la memoria.
Implicaciones de Dirty Cow
Ahora que ya sabemos cuál es el fallo que permite la existencia de esta vulnerabilidad, vamos a ver qué implicaciones tiene en la seguridad de los sistemas Linux. El principal problema es que permite una escalada de privilegios a usuarios locales con permisos limitados hasta conseguir obtener privilegios de root, el usuario con mayores permisos en un sistema Linux.
Para entenderlo mejor, veamos el siguiente vídeo publicado por Chema Alonso donde se muestra un ejemplo claro de esta escalada de privilegios:
Esta escalada de privilegios hace que el acceso local a un sistema vulnerable pueda suponer un grave riesgo de seguridad. Un atacante podría acceder al sistema con los máximos privilegios y modificar prácticamente todo lo que quiera.
Por ese motivo es importante que actualicemos nuestro sistema Linux tan pronto como exista un parche disponible (algunas de las distribuciones más importantes ya lo han publicado) y, en caso de no saber si nuestro sistema es vulnerable, siempre podemos ejecutar alguno de los múltiples scripts que se han preparado para averiguarlo.
Dirty Cow en Android
Hay un problema añadido a esta vulnerabilidad, y es que no afecta exclusivamente a sistemas operativos Linux de escritorio. Varios investigadores, como por ejemplo Sergi Álvarez, han demostrado que Android también se ve afectado por esta vulnerabilidad, debido a que se basa en gran parte en Linux.
Es muy probable que si tenemos un dispositivo que esté ejecutando un kernel de Linux superior a 2.6.22 sea vulnerable. Esto afecta a todas las versiones modificadas de Android utilizadas por algunos de los principales fabricantes de smartphones.
La principal diferencia con respecto a la vulnerabilidad para sistemas Linux de escritorio es que un atacante no necesita acceso local al dispositivo, puesto que se puede llegar a engañar al usuario para que instale una aplicación maliciosa que ejecute el exploit.
Además, las actualizaciones en Android no suelen ser tan frecuentes como en los sistemas Linux de escritorio, por lo que es muy probable que cientos de millones de dispositivos Android tengan una vulnerabilidad más sin parchear que los atacantes incorporarán sin duda a su arsenal.
Es por eso que el consejo de no instalar aplicaciones desde fuentes desconocidas sirve también como forma de mitigar posibles ataques que se aprovechen de Dirty Cow. Asimismo, debemos tener cuidado a la hora de conectar nuestro dispositivo por USB a un ordenador que no sea de confianza, puesto que (teóricamente) se podría utilizar la conexión ADB que permite interactuar con un smartphone Android desde un ordenador infectado con un malware que aprovechase esta vulnerabilidad.
Conclusión
Esta nueva vulnerabilidad demuestra que hay fallos de seguridad que pueden pasar desapercibidos o sin solución durante largos periodos de tiempo. Sin embargo, una vez publicados los detalles de esta, los usuarios que se vean afectados pueden tomar medidas tanto para solucionar el problema como para mitigar los posibles efectos nocivos en sus sistemas.
De no haberse publicado, esta y otras vulnerabilidad seguirían siendo utilizadas por los delincuentes de forma maliciosa y los usuarios no tendrían ninguna posibilidad para protegerse. Por ese motivo es importante apoyar a los investigadores que dedican tiempo y esfuerzos en descubrirlas, para que se tomen las medidas necesarias para solucionarlas.