Se ha identificado una vulnerabilidad en el servidor OpenSSH incluido en FreeBSD (CVE-2024-7589) que permite la ejecución remota de código con privilegios de root sin autenticación. Esta vulnerabilidad es una variante del problema que se descubrió a principios de julio en OpenSSH (CVE-2024-6387) y también es causada por una condición de carrera que ocurre debido a la ejecución de funciones en el manejador de señales que no están diseñadas para ser llamadas en modo asíncrono.
Los desarrolladores de FreeBSD resolvieron la vulnerabilidad original de julio inmediatamente después del anuncio, pero la corrección no abarcó todos los posibles vectores de ataque. La solución consistió en desactivar la llamada a la función sshlogv, que asigna memoria dinámicamente, lo que podría resultar en la corrupción de las estructuras internas de malloc al activarse el manejador de señal SIGALRM durante la ejecución de un código específico. Resultó que un problema similar surgía en una llamada específica de FreeBSD a la función blacklist_notify, que proporciona integración con el proceso en segundo plano blacklistd.
Además de aplicar el parche, la vulnerabilidad se puede bloquear configurando el parámetro 'LoginGraceTime=0' en /etc/ssh/sshd_config, pero deshabilitar el tiempo de espera facilitará la iniciación de un ataque de denegación de servicio al establecer un gran número de conexiones que superen los límites establecidos a través del parámetro MaxStartups.
Además, se han solucionado otras tres vulnerabilidades en FreeBSD:
- CVE-2024-6760: vulnerabilidad que permite evadir la protección contra el uso de ktrace para rastrear procesos suid, lo que permite que un usuario no privilegiado acceda al contenido de archivos para los que no tiene permisos de lectura, como el contenido de un archivo con hashes de contraseñas de usuarios.
- CVE-2024-6759: en el cliente NFS se identificó la posibilidad de usar en los nombres de archivos los caracteres de separación de rutas '..' y '/';
- CVE-2024-6640: vulnerabilidad en el filtro de paquetes PF, debido a la cual los paquetes ICMPv6 con un identificador nulo no se registraban bajo las reglas del cortafuegos, que asumen que los paquetes entrantes son reflejados en la tabla de estado (state table).
Fuente: opennet.ru
