Vulnerabilidad de corrupción de memoria Pkexec – Polkit de Linux
El equipo de Ciberseguridad de Netglobalis informa que el equipo de investigación de Qualys ha descubierto una vulnerabilidad de corrupción de memoria en pkexec de polkit, un programa raíz de SUID que se instala de forma predeterminada en todas las principales distribuciones de Linux. Esta vulnerabilidad fácilmente explotable permite que cualquier usuario sin privilegios obtenga privilegios completos de raíz en un host vulnerable al explotar esta vulnerabilidad en su configuración predeterminada.
Descripción:
Acerca de Polkit pkexec para Linux
Polkit (anteriormente PolicyKit) es un componente para controlar los privilegios de todo el sistema en sistemas operativos similares a Unix. Proporciona una forma organizada para que los procesos no privilegiados se comuniquen con los procesos privilegiados. También es posible usar polkit para ejecutar comandos con privilegios elevados usando el comando pkexec seguido del comando que se pretende ejecutar (con permiso de root).
Impacto potencial de la vulnerabilidad de PwnKit
La explotación exitosa de esta vulnerabilidad permite que cualquier usuario sin privilegios obtenga privilegios de root en el host vulnerable. Los investigadores de seguridad de Qualys han podido verificar de forma independiente la vulnerabilidad, desarrollar un exploit y obtener privilegios completos de raíz en las instalaciones predeterminadas de Ubuntu, Debian, Fedora y CentOS. Otras distribuciones de Linux son vulnerables y probablemente explotables. Esta vulnerabilidad se ha estado ocultando a plena vista durante más de 12 años y afecta a todas las versiones de pkexec desde su primera versión en mayo de 2009 (confirmar c8c3d83, «Agregar un comando pkexec(1)»).
Cronología de la divulgación de vulnerabilidades
- 2021-11-18: Aviso enviado a secalert@redhat.
- 2022-01-11: Aviso y parche enviados a distros@openwall.
- 2022-01-25: Fecha de lanzamiento coordinada (5:00 p. m. UTC).
Mitigación:
Para los clientes que no pueden actualizar de inmediato y no tienen habilitada la función de arranque seguro, el problema se puede mitigar ejecutando los siguientes pasos:
1) Instale los paquetes y las dependencias systemtap requeridos según lo señalado por https://access.redhat.com/solutions/5441
2) Instale la información de depuración de polkit:
debuginfo-instalar polkit
3) Cree el siguiente script systemtap y asígnele el nombre pkexec-block.stp:
probe process(«/usr/bin/pkexec»).function(«main») {
if (cmdline_arg(1) == «»)
raise(9);
}
4) Cargue el módulo systemtap en el kernel en ejecución:
stap -g -F -m stap_pkexec_block pkexec_block.stp
5) Asegúrese de que el módulo esté cargado:
lsmod | grep -i stap_pkexec_block
stap_pkexec_block 434176 0
6) Una vez que el paquete polkit se actualizó a la versión que contiene la corrección, el módulo kernel generado por systemtap se puede eliminar ejecutando:
rmmod stap_pkexec_block
Esta mitigación no funciona para el sistema habilitado para arranque seguro, ya que SystemTap requeriría un servidor de compilación externo para poder firmar el módulo del kernel generado
con una clave inscrita en el conjunto de claves del kernel.
Enlaces: