OpenSSH 9.2 rilasciato con correzione per la vulnerabilità di pre-autenticazione

È stata pubblicata la versione di OpenSSH 9.2, un'implementazione aperta di client e server per lavorare utilizzando i protocolli SSH 2.0 e SFTP. La nuova versione elimina una vulnerabilità che porta ad una doppia liberazione di memoria in fase di pre-autenticazione. È interessata solo la versione OpenSSH 9.1; il problema non si presenta nelle versioni precedenti.

Per creare le condizioni per la manifestazione della vulnerabilità, è sufficiente modificare il banner del client SSH in “SSH-2.0-FuTTYSH_9.1p1” in modo da impostare i flag “SSH_BUG_CURVE25519PAD” e “SSH_OLD_DHGEX”, che dipendono dalla versione di SSH cliente. Dopo aver impostato questi flag, la memoria per il buffer "options.kex_algorithms" viene liberata due volte: quando si esegue la funzione do_ssh2_kex(), che chiama compat_kex_proposal(), e quando si esegue la funzione do_authentication2(), che chiama input_userauth_request(), mm_getpwnamallow( ), copy_set_server_options() lungo la catena, assemble_algorithms() e kex_assemble_names().

La creazione di un exploit funzionante per la vulnerabilità è considerata improbabile, poiché il processo di sfruttamento è troppo complicato: le moderne librerie di allocazione della memoria forniscono protezione contro la doppia liberazione della memoria e il processo di pre-autenticazione in cui è presente l'errore viene eseguito con privilegi ridotti in un ambiente isolato ambiente sandbox.

Oltre alla vulnerabilità segnalata, la nuova versione risolve anche altri due problemi di sicurezza:

  • Si è verificato un errore durante l'elaborazione dell'impostazione "PermitRemoteOpen", per cui il primo argomento veniva ignorato se differiva dai valori "any" e "none". Il problema si presenta nelle versioni più recenti di OpenSSH 8.7 e fa sì che il controllo venga ignorato quando viene specificata una sola autorizzazione.
  • Un utente malintenzionato che controlla il server DNS utilizzato per risolvere i nomi può ottenere la sostituzione di caratteri speciali (ad esempio, "*") nei fileknown_hosts se le opzioni CanonicalizeHostname e CanonicalizePertchedCNAMEs sono abilitate nella configurazione e il risolutore di sistema non verifica la correttezza dei nomi risposte dal server DNS. L'attacco è considerato improbabile perché i nomi restituiti devono soddisfare le condizioni specificate tramite CanonicalizePertchedCNAMEs.

Altre modifiche:

  • Un'impostazione EnableEscapeCommandline è stata aggiunta a ssh_config per ssh per controllare se l'elaborazione lato client della sequenza di escape "~C" che fornisce la riga di comando è abilitata. Per impostazione predefinita, la gestione di "~C" è ora disabilitata per utilizzare un isolamento sandbox più stretto, potenzialmente danneggiando i sistemi che utilizzano "~C" per il port forwarding in fase di runtime.
  • La direttiva ChannelTimeout è stata aggiunta a sshd_config per sshd per impostare il timeout di inattività del canale (i canali in cui non viene registrato alcun traffico per il tempo specificato nella direttiva verranno automaticamente chiusi). È possibile impostare timeout diversi per sessione, X11, agente e reindirizzamento del traffico.
  • La direttiva UnusedConnectionTimeout è stata aggiunta a sshd_config per sshd, consentendo di impostare un timeout per terminare le connessioni client che sono rimaste senza canali attivi per un certo periodo.
  • L'opzione "-V" è stata aggiunta a sshd per visualizzare la versione, simile all'opzione simile nel client ssh.
  • Aggiunta la riga "Host" all'output di "ssh -G", che riflette il valore dell'argomento hostname.
  • L'opzione "-X" è stata aggiunta a scp e sftp per controllare i parametri del protocollo SFTP come la dimensione del buffer di copia e il numero di richieste in sospeso.
  • ssh-keyscan consente la scansione di intervalli di indirizzi CIDR completi, ad esempio "ssh-keyscan 192.168.0.0/24".

Fonte: opennet.ru

Aggiungi un commento