Una vulnerabilidad en Polkit que permite escalar tus privilegios en el sistema

Se ha identificado una vulnerabilidad (CVE-2021-3560) en el componente Polkit, que se utiliza en distribuciones para permitir a usuarios sin privilegios realizar acciones que requieren derechos de acceso elevados (por ejemplo, montar una unidad USB), lo que permite a un usuario local obtener derechos de root en el sistema. La vulnerabilidad está solucionada en la versión 0.119 de Polkit.

El problema ha estado presente desde la versión 0.113, pero muchas distribuciones, incluidas RHEL, Ubuntu, Debian y SUSE, han adaptado la funcionalidad afectada a paquetes basados ​​en versiones anteriores de Polkit (las correcciones de paquetes ya están disponibles en las distribuciones).

El problema se manifiesta en la función polkit_system_bus_name_get_creds_sync(), que obtiene los identificadores (uid y pid) del proceso que solicita la elevación de privilegios. Polkit identifica un proceso asignando un nombre único en DBus, que luego se utiliza para verificar los privilegios. Si un proceso se desconecta de dbus-daemon justo antes de que se inicie el controlador polkit_system_bus_name_get_creds_sync, el controlador recibe un código de error en lugar de un nombre único.

La vulnerabilidad se debe al hecho de que el código de error devuelto no se procesa correctamente y la función polkit_system_bus_name_get_creds_sync() devuelve VERDADERO en lugar de FALSO, a pesar de no poder hacer coincidir el proceso con el uid/pid y verificar los privilegios solicitados para el proceso. El código desde el cual se llamó a la función polkit_system_bus_name_get_creds_sync() supone que la verificación fue exitosa y que la solicitud para escalar privilegios provino de la raíz y no de un usuario sin privilegios, lo que hace posible realizar acciones privilegiadas sin autenticación ni verificación de credenciales adicionales.

Fuente: opennet.ru

Añadir un comentario