Empresa Qualys catro en OpenBSD, unha das cales permite conexións remotas a certos servizos de rede sen autenticación, mentres que as outras tres permiten a escalada de privilexios no sistema. O informe de Qualys sinalou a rápida resposta dos desenvolvedores de OpenBSD: todos os problemas foron resoltos. в и dentro das 40 horas posteriores á notificación privada.
A vulnerabilidade remotamente explotable está causada por un erro na organización da chamada ao xestor de autenticación na biblioteca libc, o que provoca
O programa /usr/libexec/auth/login_style, pasando argumentos na liña de comandos. Ao chamar a login_style usando o parámetro opcional "-s service", pódese pasar o nome do protocolo. Se se usa o carácter "-" ao comezo do nome de usuario, este nome procesarase como unha opción ao iniciar login_style. En consecuencia, se especificas "-schallenge" ou "-schallenge:passwd" como nome de usuario durante a autenticación, login_style interpretará a solicitude como unha solicitude para usar o controlador. .
O problema é que o protocolo S/Key en login_style só se admite formalmente, pero ignórase de forma efectiva cun indicador de autenticación exitoso. Polo tanto, un atacante pode, facéndose pasar polo usuario "-challenge", eludir a autenticación e obter acceso sen proporcionar un contrasinal nin claves. Todos os servizos de rede que usan chamadas libc estándar para a autenticación son potencialmente vulnerables a este problema. Por exemplo, confirmouse a posibilidade de eludir a autenticación en smtpd (AUTH PLAIN), ldapd e radiusd.
A vulnerabilidade non se manifesta en sshd, xa que ten protección adicional ao comprobar se o usuario iniciou sesión. Non obstante, sshd pódese usar para probar a vulnerabilidade dun sistema: ao acceder ao nome de usuario "-sresponse:passwd", a conexión bloquéase porque sshd agarda a que login_passwd devolva os parámetros de desafío, mentres que login_passwd agarda a que se pasen os parámetros que faltan (o nome "-sresponse" trátase como unha opción). Un atacante local podería tentar eludir a autenticación na utilidade su, pero pasar o nome "-sresponse" provocaría un fallo do proceso debido á devolución dun punteiro nulo ao executar a función getpwnam_r("-schallenge", ...).
Outras vulnerabilidades:
- CVE-2019-19520: Escalada de privilexios locais mediante a manipulación da utilidade xlock, que se subministra co indicador sgid, cambiando o grupo a "auth". No código xlock, a redefinición da ruta da biblioteca só se desactiva cando se cambia o identificador de usuario (setuid), o que permite a un atacante modificar a variable de ambiente "LIBGL_DRIVERS_PATH" e cargar a súa propia biblioteca compartida, cuxo código se executará despois de escalar os privilexios ao grupo "auth".
- CVE-2019-19522: permite que un usuario local do grupo "auth" execute código con privilexios de root cando a autenticación S/Key ou YubiKey está activada no sistema (non activada por defecto). A pertenza ao grupo "auth", ao que se pode acceder aproveitando a vulnerabilidade mencionada anteriormente en xlock, permite escribir ficheiros nos directorios /etc/skey e /var/db/yubikey. Por exemplo, un atacante podería engadir un novo ficheiro a /etc/skey/root para xerar claves de uso único para a autenticación S/Key como usuario root.
- CVE-2019-19519: Posibilidade de aumentar os límites de recursos mediante a manipulación da utilidade su. Ao especificar a opción "-L", que implica un bucle de intentos de autenticación repetidos en caso de fallo, a clase de usuario defínese só unha vez e non se restablece nos intentos posteriores. Un atacante pode executar "su -l -L" e, no primeiro intento, introducir o inicio de sesión doutra persoa cunha clase de conta diferente, pero autenticarse correctamente no segundo intento. Nesta situación, ao usuario asignaranse límites correspondentes á clase de usuario especificada no primeiro intento (por exemplo, o número máximo de procesos ou o tamaño da memoria por proceso). Este método só funciona para tomar prestados límites de usuarios sen privilexios, xa que o usuario root require a pertenza ao grupo wheel.
Ademais, pódese sinalar OpenBSD introduce un novo método para comprobar a validez das chamadas ao sistema, o que complica aínda máis a explotación. Este método permite que as chamadas ao sistema sexan executadas só se se accede a elas desde rexións de memoria prerexistradas. Para marcar as rexións de memoria, nova chamada de sistema .
Fonte: opennet.ru
