Mitigación de la Vulnerabilidad CVE-2018-15473 en OpenSSH
En este artículo, voy a explorar detalladamente la vulnerabilidad conocida como CVE-2018-15473, que afecta a OpenSSH, y a explicar lo que significa para la seguridad del servidor y cómo logré mitigarlo paso a paso. Este problema de seguridad es importante porque impacta directamente la capacidad de proteger los sistemas contra ataques maliciosos que intentan recolectar información sensible. En este proceso de mitigación, documenté cuidadosamente todos los pasos que tomé para garantizar que el servidor estuviera seguro y en funcionamiento sin problemas. Además, he decidido compartir estos detalles con la finalidad de ayudar a otros a comprender mejor esta vulnerabilidad y proteger sus propios entornos.
¿Qué es la Vulnerabilidad CVE-2018-15473?
La vulnerabilidad CVE-2018-15473 afecta a las versiones de OpenSSH hasta la 7.7 y consiste en una falla de enumeración de usuarios, lo que significa que un atacante puede determinar qué usuarios existen en el sistema analizando los tiempos de respuesta cuando intenta autenticarse con credenciales incorrectas. Esto se debe a la falta de un retraso uniforme cuando el servidor SSH responde a una autenticación fallida. Esta falta de uniformidad permite a los atacantes diferenciar si el usuario ingresado existe o no, lo cual constituye una brecha significativa en la seguridad.
Este tipo de vulnerabilidad puede ser aprovechado por atacantes para recolectar información sobre usuarios válidos en el servidor, lo cual podría ser el primer paso de un ataque de fuerza bruta o de un intento más sofisticado para comprometer el sistema. La información obtenida puede ser utilizada para llevar a cabo ataques dirigidos y aumentar las posibilidades de acceder al sistema sin autorización.
¿Por qué es importante mitigarla?
La enumeración de usuarios es una vulnerabilidad crítica porque proporciona al atacante información valiosa que puede utilizar para ataques posteriores. Incluso si la contraseña está segura, conocer los nombres de usuario facilita el trabajo del atacante para realizar ataques de fuerza bruta. Un ataque de fuerza bruta no tendría ninguna posibilidad de éxito si el atacante no supiera los nombres de usuario correctos del sistema. Por lo tanto, prevenir la capacidad de enumeración de usuarios es esencial para mantener la seguridad del servidor y limitar las oportunidades de los atacantes. Para prevenir este riesgo, la actualización de OpenSSH es crucial, ya que las versiones más recientes han corregido este problema.
La importancia de mitigar esta vulnerabilidad radica en mantener una postura proactiva frente a la seguridad. En los servidores de producción, la seguridad de los usuarios y sus datos debe ser la prioridad, y una vulnerabilidad de enumeración de usuarios permite que un atacante reduzca el nivel de incertidumbre respecto a sus intentos de comprometer el sistema. Mantener las versiones de software actualizadas es una de las mejores prácticas para reducir estos riesgos.
Paso a Paso: Mitigación de la Vulnerabilidad
A continuación, detallaré los pasos exactos que seguí para solucionar esta vulnerabilidad en un servidor Ubuntu. Comencé por verificar la versión actual de OpenSSH y luego procedí a actualizar e instalar una versión segura. Me aseguré de que la configuración estuviera correcta y probé todo exhaustivamente para garantizar que el servidor permaneciera funcional y seguro.
1. Verificación de la Versión de OpenSSH
El primer paso fue verificar la versión de OpenSSH instalada en el servidor. Esto es esencial para saber si el servidor está utilizando una versión vulnerable y necesita actualización.
ssh -V
En mi caso, la versión instalada era OpenSSH_7.6p1, la cual es vulnerable a la CVE-2018-15473. Esto confirmó la necesidad de actualizar para mitigar el riesgo.

2. Descarga e Instalación de la Nueva Versión
Como la versión de OpenSSH disponible en los repositorios de Ubuntu era antigua, opté por compilar OpenSSH desde el código fuente para instalar la versión más reciente (9.9). Este proceso me permitió asegurarme de que el sistema tuviera una versión segura y que se corrigiera la vulnerabilidad identificada.
- Instalar las dependencias necesarias: Primero, instalé las herramientas de compilación y dependencias necesarias.
sudo apt update sudo apt install -y build-essential zlib1g-dev libssl-dev
- Descargar OpenSSH 9.9 desde la página oficial:
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.9p1.tar.gz
- Extraer el archivo y entrar en el directorio: Luego, extraje el archivo descargado y me dirigí al directorio correspondiente.
tar -xzf openssh-9.9p1.tar.gz cd openssh-9.9p1
- Compilar e instalar OpenSSH: Finalmente, ejecuté la configuración, la compilación y la instalación.
./configure make sudo make install
3. Actualizar el Sistema para Usar la Nueva Versión
Aunque la nueva versión fue instalada exitosamente, el sistema seguía utilizando la versión antigua de OpenSSH. Para solucionar esto, realicé lo siguiente:
- Verificar la ubicación de ssh: Comprobé cuál era la ubicación del binario de ssh que el sistema estaba utilizando.
which ssh
El comando mostró que ssh seguía apuntando a la versión en /usr/bin/ssh, en lugar de la nueva versión en /usr/local/bin/ssh.
- Crear enlaces simbólicos para apuntar a la nueva versión: Renombré el binario antiguo y creé enlaces simbólicos que apuntaran a la nueva versión.
sudo mv /usr/bin/ssh /usr/bin/ssh_old sudo ln -s /usr/local/bin/ssh /usr/bin/ssh sudo mv /usr/sbin/sshd /usr/sbin/sshd_old sudo ln -s /usr/local/sbin/sshd /usr/sbin/sshd
- Reiniciar el servicio SSH: Para que los cambios surtan efecto (se debe considerar que esto puede inhabilitar de forma momentánea tu acceso SSH, así que debes configurar el acceso mediante los puertos correctos, reglas Firewall, etc. La actualización de OpenSSH no invalida ni elimina tus claves SSH pero si reconfigura los puertos al estado de fábrica)
sudo systemctl restart ssh
- Revisar mi nueva versión instalada: Para asegurarme que todo esté perfectamente.
ssh -V
4. Configuración del Puerto de SSH
Como parte de la configuración del servidor, también había cambiado el puerto predeterminado de 22 a 2222 para aumentar la seguridad. Esto dificulta ataques automatizados, ya que muchos atacantes asumen que SSH estará escuchando en el puerto 22.
- Editar el archivo de configuración (/usr/local/etc/sshd_config): Para cambiar el puerto, edité el archivo de configuración de SSH.
sudo nano /usr/local/etc/sshd_config
Luego, cambié la línea #Port 22 a:
Port 2222
- Reiniciar el servicio SSH: Reinicié el servicio para aplicar los cambios.
sudo /usr/local/sbin/sshd -f /usr/local/etc/sshd_config
- Verificar que SSH esté escuchando en el puerto correcto: Finalmente, verifiqué que el servicio SSH estuviera escuchando en el puerto 2222.
sudo netstat -tuln | grep 2222
Esto confirmó que SSH estaba escuchando en el puerto correcto.
5. Probar la Conexión y Actualizar Claves
Tras actualizar la configuración, al intentar conectarme nuevamente, recibí un mensaje indicando que la huella digital del servidor había cambiado. Esto es normal al actualizar SSH, ya que la clave del servidor fue regenerada.
- Eliminar la clave antigua del archivo known_hosts en Windows: En Windows, el archivo known_hosts está ubicado en C:\Users\TuUsuario\.ssh\known_hosts. Utilicé el siguiente comando para eliminar la clave antigua:
ssh-keygen -R [xxx.xxx.xxx.xxx]:2222
- Conectar nuevamente: Luego intenté conectarme de nuevo al servidor con el nuevo puerto y acepté la nueva huella digital.
ssh -p 2222 usuario@xxx.xxx.xxx.xxx
La conexión fue exitosa y el problema fue mitigado.
Conclusión
La vulnerabilidad CVE-2018-15473 representaba un riesgo significativo para la seguridad del servidor. La capacidad de un atacante para enumerar los usuarios presentes en el sistema podía ser el primer paso para comprometer su seguridad. Al actualizar OpenSSH a la versión más reciente y asegurarme de que la configuración estuviera correcta, mitigé este riesgo de manera efectiva y mantuve la continuidad operativa de mis herramientas de administración y despliegue.
Esta guía paso a paso no solo me ayudó a proteger el sistema, sino que también es una referencia útil para quienes enfrenten problemas similares y deseen asegurar sus servidores de forma eficaz. La seguridad es una tarea constante y cada paso que demos para proteger nuestro entorno contribuye a garantizar la integridad y la confidencialidad de nuestros datos y los de nuestros usuarios.