En el gestor de sistemas systemd una vulnerabilidad (), que potencialmente permite ejecutar código con privilegios elevados al enviar una solicitud especialmente formada a través del bus DBus. El problema ha sido corregido en la versión de prueba (parches que resuelven el problema: , , ). La vulnerabilidad ha sido solucionada en las distribuciones , , (se manifiesta en RHEL 8, pero no afecta a RHEL 7), , y , pero al momento de redactar esta noticia permanece sin solución en y .
La vulnerabilidad es causada por acceder a un área de memoria ya liberada (use-after-free), que ocurre durante la ejecución asincrónica de solicitudes a Polkit al procesar mensajes de DBus. Algunos interfaces de DBus utilizan un caché para almacenar objetos por un corto tiempo y eliminan los elementos del caché tan pronto como el bus de DBus se libera para manejar otras solicitudes. Si el manejador del método DBus utiliza bus_verify_polkit_async(), puede ser necesario esperar a que la acción en Polkit se complete. Una vez que Polkit está listo, se llama nuevamente al manejador y accede a datos que previamente se habían asignado en memoria. Si la solicitud a Polkit tarda demasiado, los elementos en el caché pueden eliminarse antes de que el manejador del método DBus sea llamado por segunda vez.
Entre los servicios que permiten explotar la vulnerabilidad se encuentra systemd-machined, que proporciona la API de DBus org.freedesktop.machine1.Image.Clone, lo que conduce a la conservación temporal de datos en el caché y a la interacción asincrónica con Polkit. La interfaz
org.freedesktop.machine1.Image.Clone está disponible para todos los usuarios no privilegiados del sistema, que pueden iniciar un fallo en los servicios de systemd o potencialmente lograr ejecutar código con privilegios de root (el prototipo del exploit aún no ha sido demostrado). El código que permite explotar la vulnerabilidad fue en systemd-machined en 2015 en la versión (en RHEL 7.x se utiliza systemd 219).
Fuente: opennet.ru
