Estaba intentando conectar un servidor usando un puerto diferente cuando la red parecía demasiado lenta. Proporciona una clave ECDSA, mientras que la clave anterior en conocido_hosts es RSA. Me negué a continuar la conexión y probé más veces usando ambos puertos, y nunca recibí una advertencia. Finalmente, me conecté al servidor utilizando el puerto original y descubrí que el servidor no tiene ninguna clave ECDSA.
Puede ser solo un error de DNS o de puerta de enlace. ¿Pero es posible ser utilizado en un ataque? Algunos usuarios nuevos descuidados pueden comprometer sus servidores, y otros usuarios con la clave ya conocida en hosts conocidos nunca se darán cuenta de que ocurrió el ataque.
Y si se usa en un ataque, ¿sería más seguro usar autenticación de clave pública en lugar de una contraseña?
Aquí está mi teoría para el ataque:
El atacante primero explora el servidor para asegurarse de que no tenga una clave ECDSA. Si un cliente intenta conectarse sin especificar el algoritmo, dice que solo tiene la clave ECDSA. Si, en cambio, el cliente elige utilizar RSA, el atacante puede redirigir la conexión al servidor real sin que se note.
Si la redirección es imposible, el atacante puede intentar que la red parezca muy inestable y finalmente se desconecta antes de enviar la clave. Dado que nunca envió una clave falsa, el usuario nunca recibe la advertencia de que se cambió la clave del servidor.
También pueden establecer una pequeña probabilidad de simplemente permitir que el usuario se conecte al servidor real, por lo que es poco probable que investiguen este problema. Y pueden agregar la clave ECDSA al servidor real si el ataque tiene éxito, para fingir que el ataque nunca ocurrió.
Más específicamente, ¿se realiza la parte de selección de algoritmo antes de verificar la clave del servidor, y funciona de una manera que pueda filtrar el estado de known_hosts sin una advertencia?
Una teoría alternativa sería que un atacante solo está interceptando el tráfico en un puerto específico. Pero solo podré confirmar si este problema vuelve a aparecer más tarde.
Editar: Resultó ser una configuración de servidor muy extraña. (La máquina virtual es clonada por alguien con el privilegio, y uno de ellos se ha actualizado para tener una clave ECDSA. Se intercambió con otro cuando me conecté).