Grave fallo en Linux de hace 12 años permite ser root en cualquier distro (LPE)
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.
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 (CVE-2021-4034 - CVSS 7.8), 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.
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 y, si el exploit funciona, se puede solucionar deshabilitando el bit setuid en pkexec con alguno de los siguientes comandos:
$ sudo chmod a-s $(which pkexec)
$ chmod 0755 /usr/bin/pkexec
Luego de la ejecución de dichos comandos se debería obtener el siguiente resultado:
$ /usr/bin/pkexec
pkexec must be setuid root
Los investigadores afirman que la vulnerabilidad puede ser explotada sin dejar ni rastro. 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.
Saludos estimados.
ResponderBorrarEntonces esto quiere decir que este tipo de permiso
-rwsr-xr-x. 1 root root 22544 May 7 2015 /usr/bin/pkexec
es de la vulnerabilidad que se habla ?
Esto es un CentOS 7.9 con kernel 3.10.0-1160.53.1
Yeap.
BorrarQué deberia aparecer ?
$ /usr/bin/pkexec
pkexec must be setuid root
$ ls /usr/bin/pkexec -l
-rwxr-xr-x 1 root root 31032 May 26 2021 /usr/bin/pkexec