El fallo,
que aún no está solucionado, es reproducible ejecutando cualquier aplicación
que utilice PolicyKit
PolicyKit,
comúnmente llamado Polkit, es un componente para los sistemas Unix que permite
a procesos no privilegiados ejecutar funciones que requieren permisos de
superusuario, sin que estos tengan que ejecutarse como root. A diferencia de
sudo, no requiere que todo el proceso sea ejecutado con privilegios del
sistema, dando un mayor control sobre los permisos.
Este
componente, empleado en la mayoría de distribuciones GNU/Linux y utilizado por
múltiples programas, no controla correctamente los permisos cuando el usuario
tiene un número de identificación (UID) superior al de INT_MAX (2147483647),
pudiendo utilizar Polkit sin ninguna restricción y sin que se pida ninguna
contraseña.
Un ejemplo
de programa que utiliza Polkit es Systemctl: cuando no son necesarios permisos,
por ejemplo para ejecutar ‘systemctl status nginx’, se ejecuta el comando sin
restricciones. No obstante, para ejecutar ‘systemctl stop nginx’ (parar un
servicio), aparece una ventana de confirmación solicitando la contraseña del
usuario, y sólo si éste estuviese autorizado podrá realizar la acción. Con esta
vulnerabilidad, el comando se ejecuta sin necesidad de estar autorizado y sin
que aparezca la ventana de confirmación.
La vulnerabilidad,
con identificador CVE-2018-19788, todavía no se encuentra solucionada, aunque
su explotación es complicada salvo que exista ya un usuario con un uid superior
a 2147483647, algo de por sí difícil, y que probablemente sea la razón por la
que ha pasado el fallo tanto tiempo desapercibido. Para probar la
vulnerabilidad, basta con crear un nuevo usuario del sistema y modificar el
uid, pudiendo ejecutar cualquiera de los comandos anteriores.
Más información:
- CVE-2018-19788: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-19788
- unprivileged users with UID > INT_MAX can successfully execute any systemctl command: https://github.com/systemd/systemd/issues/11026
- Freedesktop issue: https://gitlab.freedesktop.org/polkit/polkit/issues/74
Fuente:
Hispasec