Un bug no detectado de hace 7 años permite escalar privilegios con polkit
Kevin Backhouse (un investigador de seguridad) compartió hace pocos dias en el blog de GitHub la nota de que había encontrado un error en el servicio de polkit asociado con systemd (un sistema común de Linux y un componente de administrador de servicios), con el cual la vulnerabilidad de hace siete años que permitía poder realizar una escalada de privilegios que ha estado al acecho en varias distribuciones de Linux y la cual fue parcheada la semana pasada en una divulgación coordinada.
Polkit es un kit de herramientas a nivel de aplicación para definir y manejar la política que permite que los procesos sin privilegios hablen con los procesos privilegiados, se instala de forma predeterminada en varias distribuciones de Linux. La vulnerabilidad se introdujo en la versión 0.113 hace siete años (commit bfa5036 ) y se corrigió el 3 de junio después de su reciente divulgación por el investigador de seguridad Kevin Backhouse.
Como miembro del Laboratorio de seguridad de GitHub , mi trabajo es ayudar a mejorar la seguridad del software de código abierto mediante la búsqueda y notificación de vulnerabilidades. Hace unas semanas, encontré una vulnerabilidad de escalada de privilegios en polkit. Coordiné la divulgación de la vulnerabilidad con los mantenedores de polkit y con el equipo de seguridad de Red Hat. Se dio a conocer públicamente, la corrección se lanzó el 3 de junio de 2021 y se le asignó CVE-2021-3560
«Cada sistema Linux que usa una versión vulnerable de polkit está potencialmente expuesto a ataques que explotan la falla CVE-2021-3560», comenta Backhouse, además dice que la falla es sorprendentemente fácil de explotar, ya que solo requirie de unos pocos comandos usando herramientas de terminal estándar como bash, kill y dbus-send.
«La vulnerabilidad se activa al iniciar un dbus-sendcomando, pero matándolo mientras polkit todavía está procesando la solicitud», explicó Backhouse.
Backhouse publicó un video PoC de un ataque que explota esta vulnerabilidad demostrando que es fácil de activar.
“La vulnerabilidad permite que un usuario local sin privilegios obtenga un shell root en el sistema. Es fácil de explotar con algunas herramientas de línea de comandos estándar, como puede ver en este breve video «escribió el experto en una publicación de blog.
Al matar dbus-send (un comando de comunicación entre procesos), en medio de una solicitud de autenticación provoca un error que surge de polkit que solicita el UID de una conexión que ya no existe (porque la conexión fue eliminada).
«De hecho, polkit maneja mal el error de una manera particularmente desafortunada: en lugar de rechazar la solicitud, la trata como si procediera de un proceso con UID 0», explica Backhouse. «En otras palabras, autoriza inmediatamente la solicitud porque cree que la solicitud proviene de un proceso raíz».
Esto no sucede todo el tiempo, porque la consulta de UID de polkit al se dbus-daemonproduce varias veces en diferentes rutas de código. Por lo general, esas rutas de código manejan el error correctamente, dijo Backhouse, pero una ruta de código es vulnerable, y si la desconexión ocurre cuando esa ruta de código está activa, es entonces cuando ocurre la elevación de privilegios. Todo es cuestión de tiempo, que varía de formas impredecibles porque están involucrados múltiples procesos.
Además, el investigador publicó la siguiente tabla que contiene la lista de distribuciones actualmente vulnerables:
DISTRIBUCIÓN | ¿VULNERABLE? |
---|---|
RHEL 7 | No |
RHEL 8 | sí |
Fedora 20 (o anterior) | No |
Fedora 21 (o posterior) | sí |
Debian 10 (“buster”) | No |
Debian testing | sí |
Ubuntu 18.04 | No |
Ubuntu 20.04 | sí |
Las distribuciones de Linux que tienen instalada la versión 0.113 o posterior de polkit, como Debian (rama inestable), RHEL 8, Fedora 21 y superior y Ubuntu 20.04, se ven afectados.
La naturaleza intermitente del error, especula Backhouse, es la razón por la que no se detectó durante siete años.
«CVE-2021-3560 permite que un atacante local sin privilegios obtenga privilegios de root», dijo Backhouse. «Es muy simple y rápido de explotar, por lo que es importante que actualice sus instalaciones de Linux lo antes posible».
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.