El investigador de seguridad de GitHub Security Lab, Kevin Backhouse, detalla el procedimiento que permite realizar una escalada de privilegios en sistemas Linux que utilizan el servicio polkit. Polkit es un servicio instalado por defecto en muchas distribuciones de Linux. Es utilizado por systemd, por lo que cualquier distribución de Linux que utilice systemd también utiliza polkit.Distribuciones actualmente vulnerables como RHEL 8, Fedora 21 o Ubuntu 20.04
Polkit es un conjunto de herramientas para definir y manejar autorizaciones en distribuciones de Linux, y se utiliza para permitir que los procesos sin privilegios se comuniquen con los procesos con privilegios.
Identificada como CVE-2021-3560 (puntuación CVSS: 7.8), la falla afecta a las versiones de polkit entre 0.113 y 0.118 y fue descubierta por el investigador de seguridad de GitHub Kevin Backhouse, quien dijo que el problema se introdujo en una actualización realizada el 9 de noviembre de 2013. Cedric Buissart de Red Hat señaló que las distribuciones basadas en Debian, basadas en polkit 0.105, también son vulnerables.
Vulnerabilidad en Polkit permite escalada-elevación de privilegios en Linux CVE-2021-3560
Un atacante sin privilegios puede obtener una shell con el usuario root utilizando la vulnerabilidad de evasión de autenticación en el servicio polkit.
Aunque muchas distribuciones de Linux no han incluido la versión vulnerable de polkit hasta hace poco, cualquier sistema Linux que tenga instalado polkit 0.113 o posterior está expuesto a este ataque.
La lista de distribuciones actualmente vulnerables compartida por Kevin Backhouse incluye distribuciones populares como RHEL 8, Fedora 21 (o posterior), Ubuntu 20.04, así como versiones inestables como Debian testing (‘bullseye’) y sus derivados.
Explotar la vulnerabilidad es extremadamente fácil, ya que sólo se necesitan unos pocos comandos de terminal utilizando únicamente herramientas estándar como bash, kill y dbus-send; a continuación se incluye un vídeo de demostración proporcionado por Kevin Backhouse.
Cuando un proceso solicitante se desconecta del servicio dbus justo antes de que se inicie la llamada a polkit_system_bus_name_get_creds_sync, el proceso no puede obtener un uid y pid únicos del proceso y no puede verificar los privilegios del proceso que solicitó la petición. La mayor amenaza de esta vulnerabilidad es para la confidencialidad e integridad de los datos, así como para la disponibilidad del sistema.
«La vulnerabilidad es sorprendentemente fácil de explotar. Todo lo que se necesita son unos pocos comandos en la terminal usando solo herramientas estándar como bash, kill y dbus-send»,
dijo Backhouse en un artículo, agregando que la falla es provocada por enviando un comando
dbus-send (digamos, para crear un nuevo usuario) pero terminando el
proceso mientras polkit todavía está en medio de procesar la solicitud.
«dbus-send» es un mecanismo de comunicación entre procesos (IPC) de Linux que se utiliza para enviar un mensaje al bus de mensajes D-Bus, lo que permite la comunicación entre varios procesos que se ejecutan simultáneamente en la misma máquina. El demonio de autoridad de políticas de Polkit se implementa como un servicio conectado al bus del sistema para autenticar las credenciales de forma segura. Al eliminar el comando, provoca una omisión de autenticación, porque polkit maneja mal el mensaje terminado y trata la solicitud como si proviniera de un proceso con privilegios de root (UID 0), autorizando así inmediatamente la solicitud.
«Para activar la ruta de código vulnerable, debe desconectarse en el momento adecuado», dijo Backhouse. «Y debido a que hay múltiples procesos involucrados, el tiempo de ese ‘momento correcto’ varía de una ejecución a la siguiente. Por eso, generalmente se necesitan algunos intentos para que el exploit tenga éxito. Supongo que también es la razón por la que el error no fue descubierto previamente».
Se anima a los usuarios a actualizar sus instalaciones de Linux lo antes posible para remediar cualquier riesgo potencial
Distribuciones vulnerables
Distribution | Vulnerable? |
---|---|
RHEL 7 | No |
RHEL 8 | Yes |
Fedora 20 (or earlier) | No |
Fedora 21 (or later) | Yes |
Debian 10 (“buster”) | No |
Debian testing (“bullseye”) | Yes |
Ubuntu 18.04 | No |
Ubuntu 20.04 | Yes |
Fuentes:
https://unaaldia.hispasec.com/2021/06/escalada-de-privilegios-en-linux-con-polkit.html
https://blog.segu-info.com.ar/2021/06/vulnerabilidad-en-polkit-permite.html
Fuente obtenida de: https://blog.elhacker.net/2021/06/vulnerabilidad-desde-hace-7-anos-en-polkit-permite-elevacion-local-privilegios.html