Vulnerabilidades en OpenBSD que permiten escalar privilegios y eludir la autenticación en smtpd, ldapd y radiusd

La empresa Qualys ha identificado cuatro una vulnerabilidad En OpenBSD, una de las vulnerabilidades permite conectarse de forma remota sin autenticación a ciertos servicios de red, mientras que las otras tres elevan sus privilegios en el sistema. En el informe de Qualys se destaca la rápida respuesta de los desarrolladores de OpenBSD: todos los problemas fueron han sido solucionadas en OpenBSD 6.5 y OpenBSD 6.6 dentro de las 40 horas posteriores a la notificación privada.

La vulnerabilidad explotable de forma remota es causada por un error en la organización de la llamada al manejador de autenticación en la biblioteca libc, que invoca
el programa /usr/libexec/auth/login_style pasándole argumentos en la línea de comandos. Esto incluye que al invocar login_style con el parámetro opcional «-s service», se permite la transmisión del nombre del protocolo. Si el nombre de usuario comienza con el símbolo «-», este será tratado como una opción al ejecutar login_style. Por lo tanto, si se especifica como nombre de usuario «-schallenge» o «-schallenge:passwd», login_style interpretará la solicitud como una solicitud de uso del manejador S/Key.

El problema es que el protocolo S/Key en login_style se soporta solo de manera formal, mientras que en la práctica se ignora, emitiendo un indicador de autenticación exitosa. Así, un atacante que se presente como el usuario «-schallenge» puede evadir la autenticación y acceder sin proporcionar una contraseña o claves. Todos los servicios de red que utilizan llamadas estándar de libc para realizar la autenticación son potencialmente vulnerables. Por ejemplo, se ha confirmado la posibilidad de eludir la autenticación en smtpd (AUTH PLAIN), ldapd y radiusd.

En sshd, la vulnerabilidad no se manifiesta, ya que hay una protección adicional que verifica la presencia del usuario en el sistema. Sin embargo, sshd se puede utilizar para comprobar la susceptibilidad del sistema a la vulnerabilidad: al acceder con el nombre de usuario «-sresponse:passwd», la conexión se congela, ya que sshd espera que login_passwd devuelva los parámetros de llamada (challenge), mientras que login_passwd espera la transmisión de los parámetros faltantes (el nombre «-sresponse» se interpreta como una opción). Un atacante local podría intentar eludir la autenticación en la utilidad su, pero pasar el nombre «-sresponse» provoca un choque del proceso debido al retorno de un puntero nulo al ejecutar la función getpwnam_r(«-schallenge», …).

Otras vulnerabilidades:

  • CVE-2019-19520 — elevación de privilegios local a través de manipulaciones con la utilidad xlock, que se entrega con la bandera sgid, cambiando el grupo a «auth». En el código de xlock, la redefinición de las rutas a las bibliotecas solo se prohibe al cambiar el identificador de usuario (setuid), lo que permite al atacante modificar la variable de entorno «LIBGL_DRIVERS_PATH» y cargar su propia biblioteca compartida, cuyo código se ejecutará después de la elevación de privilegios al grupo «auth».
  • CVE-2019-19522 — permite a un usuario local que pertenece al grupo «auth» ejecutar código con privilegios de root al iniciar sesión en el sistema de autenticación a través de S/Key o YubiKey (que no están habilitados por defecto). La pertenencia al grupo «auth», al que se puede acceder explotando la vulnerabilidad mencionada anteriormente en xlock, permite escribir archivos en los directorios /etc/skey y /var/db/yubikey. Por ejemplo, un atacante puede agregar un nuevo archivo /etc/skey/root para generar claves de un solo uso para la autenticación como usuario root a través de S/Key.
  • CVE-2019-19519 — posibilidad de aumentar los límites de recursos mediante manipulaciones con la utilidad su. Al especificar la opción «-L», que implica repeticiones cíclicas de los intentos de autenticación en caso de fallo, la clase de usuario se establece solo una vez y no se restablece en los intentos subsiguientes. Un atacante puede ejecutar «su -l -L» y en el primer intento introducir un nombre de usuario ajeno con otra clase de cuenta, pero en el segundo intento autenticar con éxito como sí mismo. En esta situación, al usuario se le establecerán límites correspondientes a la clase de usuario indicada en el primer intento (por ejemplo, el número máximo de procesos o el tamaño de memoria para el proceso). Este método solo funciona para heredar límites de usuarios no privilegiados, ya que para el usuario root se requiere pertenecer al grupo wheel).

También se puede destacar implementación en OpenBSD se introdujo un nuevo método de verificación de la validez de los llamados a las llamadas del sistema, que complica aún más la explotación de vulnerabilidades. El método permite la realización de llamadas del sistema solo si son invocadas desde áreas de memoria previamente registradas. Para marcar áreas de memoria se propone nueva llamada al sistema msyscall().

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster