Encontramos tres vulnerabilidades en systemd: entendemos cuál es el problema

A principios de mes, los expertos en seguridad de Qualys descubrieron de inmediato tres vulnerabilidades en systemd , el subsistema de inicialización de Linux, que permiten a un atacante obtener derechos de superusuario. Les decimos cuál es su esencia y qué distribuciones están sujetas a ellas.


/ Flickr / David Goehring / CC BY / Foto modificada

Viejas nuevas vulnerabilidades


Las tres vulnerabilidades están asociadas con el servicio de registro systemd, journald. Se les han asignado los siguientes identificadores en la base de datos de CVE : CVE-2018-16864 , CVE-2018-16865 y CVE-2018-16866 . Estas vulnerabilidades le dan al atacante la capacidad de obtener privilegios de root en el sistema atacado.

Todas las distribuciones sin la función de protección del espacio del usuario ( -fstack-check ) - Debian, Ubuntu, Fedora, CentOS, Mageia, etc. están en riesgo. Entre las excepciones están SUSE Linux Enterprise 15 y openSUSE Leap 15.0, así como las versiones 28 y 29 de Fedora.

Curiosamente, las tres vulnerabilidades han existido durante varios años , simplemente no se sabía nada de ellas. CVE-2018-16864 surgió en 2013, pero fue posible operarlo en 2016, cuando systemd se actualizó a la versión 230. CVE-2018-16865 apareció en el sistema operativo en 2011, pero se volvió crítico solo dos años después del lanzamiento de la versión 201 de systemd.

En cuanto a la tercera vulnerabilidad (CVE-2018-16866), existe desde 2015. Sin embargo, se cerró accidentalmente con la actualización systemd v240 unos años más tarde. Las máquinas sin este parche todavía están en peligro.

¿Cuál es la esencia de los "agujeros" descubiertos?


La vulnerabilidad CVE-2018-16864 permite a un atacante manipular la línea de comando y enviar muchos argumentos (que pesan varios megabytes) a systemd-journald, lo que hace que el proceso se bloquee. Además, el hacker tiene la oportunidad de tomar el control del puntero de instrucción extendida (EIP).

El problema con CVE-2018-16864 está relacionado con escribir un mensaje grande en / run / systemd / journal / socket. Como resultado, parte de este mensaje sale de la pila y entra en la región mmap . Después de eso, un atacante puede sobrescribir el segmento de lectura-escritura de libc y reemplazar el puntero de función y ejecutar cualquier cadena de programa deseada en el sistema.

En cuanto a CVE-2018-16866, está asociado con un error de análisis de línea. Si envía un mensaje especial (que termina con un carácter de dos puntos) en el formato syslog al sistema de registro, el sistema ignorará el final de la línea y escribirá la siguiente parte de la pila en el registro.

Las vulnerabilidades segunda y tercera permiten que la implementación del llamado ataque regrese a la biblioteca y ejecute en la máquina de la víctima cualquier función. Según los expertos de Qualys, lograron crear un exploit y obtener derechos de superusuario en computadoras con la arquitectura i386 y amd64 en 10 y 70 minutos, respectivamente.

“Estas vulnerabilidades son bastante graves, dado que permiten aumentar los derechos de acceso en el sistema. Los autores aún mantienen en secreto su código de explotación, ya que hay una gran cantidad de distribuciones de "agujeros", comentó Sergey Belkin, jefe del departamento de desarrollo del proveedor de IaaS 1cloud.ru . "Lo publicarán cuando se cierren las vulnerabilidades". Algunos desarrolladores, por ejemplo de Ubuntu y Red Hat , ya han publicado los parches necesarios. Se pueden encontrar en los repositorios oficiales ".


/ Flickr / bradleypjohnson / CC BY

¿Qué otras vulnerabilidades se encontraron en systemd?


La última vez que se descubrió una vulnerabilidad de systemd en octubre de 2018. El cliente DHCPv6 del administrador de servicios se inició automáticamente cuando se recibió un mensaje de cualquier servidor DHCP en la red local o en el proveedor de servicios de Internet. El uso de este mensaje en systemd podría causar una falla de memoria y obtener el control de la computadora.

Antes de esto, se encontraron varios errores en el código del administrador de servicios en 2017. Uno de ellos permitió a los atacantes usar paquetes TCP para ejecutar cualquier código en el sistema. Los paquetes TCP "forzaron" systemd para asignar muy poco espacio de búfer para el mensaje. Esto nos permitió escribir datos arbitrarios fuera del búfer en la memoria principal.

Otra vulnerabilidad de 2017 estuvo relacionada con la obtención no autorizada de derechos de superusuario. En algunas distribuciones, por ejemplo CentOS y RHEL7, en systemd fue posible crear un perfil con un nombre de usuario que comienza con un número. Aunque generalmente en Linux esta característica no se proporciona. Pero si ese usuario aparecía en el sistema, el administrador del servicio le otorgaba derechos de administrador.

Todas estas vulnerabilidades se cerraron en poco tiempo. Los "parches" para los nuevos "agujeros" descubiertos en enero también aparecen gradualmente. Es de esperar que las vulnerabilidades se cierren pronto en la mayoría de las distribuciones, y los administradores de servidores y computadoras Linux solo tendrán que instalar una actualización del sistema.

Publicaciones del blog corporativo de 1cloud:

Source: https://habr.com/ru/post/437556/


All Articles