Un grave fallo en Linux de hace 12 años permite ser root en cualquier distro

Obtener permisos de administrador en cualquier sistema operativo puede ser útil para hacer modificaciones importantes en el sistema. El problema viene cuando ese permiso puede ser adquirido por cualquier atacante en nuestro ordenador, pudiendo tomar el control de nuestro dispositivo.

Eso y mucho más es lo que permite una vulnerabilidad que lleva presente 12 años en Linux. Este fallo está presente en una herramienta del sistema llamada Polkit (previamente llamada PolicyKit), que da a los atacantes permisos de root en ordenadores que tengan cualquier distro de Linux.

Vulnerabilidad de hace 12 años para ser root en Linux

Polkit se encarga de gestionar los privilegios del sistema en sistemas operativos basados en Unix. Ofrece un mecanismo para procesos sin privilegios para que interactúen de manera segura con procesos que sí tienen los privilegios. Además, también permite a los usuarios ejecutar comandos con un alto nivel de privilegios usando un componente llamado pkexec.

La jerarquía de permisos en Unix permite al sistema determinar qué aplicaciones o usuarios pueden interactuar con partes sensibles del sistema, y cuándo pueden hacerlo. Así, si se instala una app maliciosa, o una es hackeada, se puede limitar el nivel de daños que puede causar.

El problema es que el elemento que se encarga de controlar eso ha tenido una vulnerabilidad de corrupción de memoria desde 2009 que permite a alguien con permisos limitados escalar privilegios hasta alcanzar permisos de root. Explotar la vulnerabilidad es muy fácil y 100% fiable, donde cualquier persona que tenga un acceso por mínimo que sea a una máquina puede ejecutar código malicioso o insertar malware más dañino con control total del sistema.

La vulnerabilidad requiere acceso local con autenticación a un dispositivo, y no se puede explotar de manera remota sin esa autenticación. Sin embargo, si se combina esta LPE con una RCE, cualquier atacante puede tomar el control de un ordenador de manera remota.

La vulnerabilidad ha sido llamada PwnKit, y puede explotarse incluso si Polkit no está ejecutándose. Los investigadores de Qualys la descubrieron en noviembre, y al estar ya parcheada en casi todas las distros de Linux, han decidido publicar la información. No obstante, todavía no van a lanzar la prueba de concepto que permite aprovecharla, ya que habrá muchos sistemas operativos que no la tengan parcheada. Además, afirman que los hackers van a empezar a aprovecharla con bastante rapidez.

Actualiza ya o ejecuta este comando

Es recomendable actualizar lo antes posible para evitar verse afectado por el ataque. En el caso de no poder parchear de manera inmediata, se puede utilizar el comando chmod 0755 /usr/bin/pkexec para eliminar la parte de SUID de pkexec.

Los investigadores afirman que la vulnerabilidad puede ser explotada sin dejar ni rastro en un ordenador. En el caso de que haya algún rastro, se puede comprobar el registro buscando el comando «The value for the SHELL variable was not found the /etc/shells file» o «The value for environment variable […] contains suspicious content«.

Además de las distros de Linux, también hay otros sistemas basados en Unix que podrían estar afectados, como Solaris y *BSD. No obstante, OpenBSD no es vulnerable porque su kernel rechaza execve() en un programa si el argc es cero. En el caso de Android, normalmente no se incluye pkexec, por lo que este escalado de privilegios no valdría para conseguir root en móviles que tengan el bootloader bloqueado o no tengan otra vía de ser rooteados actualmente.