Stavo cercando di connettere un server usando una porta diversa quando la rete sembrava troppo lenta. Fornisce una chiave ECDSA, mentre la chiave precedente in known_hosts è RSA. Mi sono rifiutato di continuare la connessione e ho provato più volte ad usare entrambe le porte, e non ho mai ricevuto un avvertimento. Alla fine mi sono connesso al server usando la porta originale e ho scoperto che il server non ha alcuna chiave ECDSA.
Potrebbe essere solo una sorta di errore DNS o di errore del gateway. Ma è possibile essere usato in un attacco? Alcuni nuovi utenti incuranti possono compromettere i server e altri utenti con la chiave già in known_hosts potrebbero non notare mai che l'attacco è avvenuto.
E se è usato in un attacco, sarebbe più sicuro usare l'autenticazione a chiave pubblica invece di una password?
Ecco la mia teoria per l'attacco:
L'utente malintenzionato esegue prima una scansione del server per assicurarsi che non abbia una chiave ECDSA. Se un client tenta di connettersi senza specificare l'algoritmo, dice che ha solo la chiave ECDSA. Se invece il client sceglie di utilizzare RSA, l'utente malintenzionato può reindirizzare la connessione al server reale senza essere notato.
Se il reindirizzamento è impossibile, l'attaccante può provare a rendere la rete apparentemente molto instabile e, infine, disconnettere prima di inviare la chiave. Poiché non ha mai inviato una chiave falsa, l'utente non riceve mai l'avviso che la chiave del server è stata modificata.
Potrebbero anche impostare una piccola probabilità per consentire all'utente di connettersi al server reale, quindi è improbabile che studi il problema. E possono aggiungere la chiave ECDSA al server reale se l'attacco ha successo, per fingere che l'attacco non sia mai accaduto.
Più in particolare, la parte di selezione dell'algoritmo è stata eseguita prima di verificare la chiave del server e funziona in un modo che potrebbe perdere lo stato di known_hosts senza un avviso?
Una teoria alternativa sarebbe un attaccante che sta solo intercettando il traffico su una porta specifica. Ma potrò confermare solo se il problema si ripresenta più tardi.
Modifica: si è rivelata una configurazione del server molto strana. (La macchina virtuale viene clonata da qualcuno con il privilegio, e uno di questi è aggiornato per avere una chiave ECDSA. È stato scambiato con un altro quando mi collego.)