Hace 3 años | Por mr_b a github.blog
Publicado hace 3 años por mr_b a github.blog

polkit es un servicio del sistema que gestiona autorizaciones y permisos instalado por defecto en muchas distribuciones de Linux. Lo usa systemd, por lo que cualquier distribución de Linux que use systemd también usa polkit. En polkit existe una vulnerabilidad que permite que un usuario local sin privilegios obtenga una shell con permisos de root. Es fácil de explotar con herramientas de línea de comandos estándar, como puede verse en este vídeo.

Comentarios

meneandro

Polkit es anterior a systemd, y precisamente su función es pedir permisos para que un usuario sin permisos pueda ejecutar cosas que requieren de los mismos (pidiéndote las credenciales adecuadas, claro), o sea, políticas de interacción entre procesos no privilegiados y procesos privilegiados. Sobre estas políticas, se monta logind, que gestiona sesiones de usuario (y por lo tanto, sus privilegios y la relación de las sesiones con las aplicaciones que se ejecuten en el sistema), cuyo precursor era consolekit (¿vemos la tendencia?).

Antes de acortarle el nombre, era policykit y funcionaba junto con packagekit como una manera de abstraer los sistemas de paquetería subyacentes. Tú hablabas con packagekit y packagekit con apt o rpm (o el backend que fuera que tuvieras instalado en tu sistema) y podías montar por encima aplicaciones de gestión de paquetería independientes de la paquetería (como por ejemplo, gnome-software o la tienda de ubuntu, en el mundo kde creo que ¿discover? o algo así, también funcionaba sobre packagekit). Como frontend también tenía su propio interfaz en modo texto (alguna vez me salvó el culo, porque muchas herramientas tipo yum/dnf/zypper dependen de python y si por casualidad en tu sistema instalas una versión incompatible con la necesaria por estos frontends...)

También existió devicekit, que viene a ser el udev actual (o más bien un intento de sustituír a HAL, la capa de abstracción de hardware anterior).

Systemd simplemente ha ido aprovechando parte de la infraestructura que ya existía, refinándola y enfocándola.

(Que con todo esto no defiendo systemd, de hecho el bug parece posterior a la integración, simplemente estoy dando un contexto y explicando un poco por encima de dónde viene, qué es este componente y qué importancia tiene)