È stata pubblicata la release di OpenSSH 9.8, un'implementazione open source di client e server per il protocollo SSH 2.0 e SFTP. Oltre a risolvere una vulnerabilità critica annunciata in precedenza (CVE-2024-6387), che consente l'esecuzione remota di codice con privilegi di root prima dell'autenticazione, la nuova versione ha corretto un'altra vulnerabilità meno grave e ha introdotto diverse modifiche importanti mirate a migliorare la sicurezza.
La seconda vulnerabilità consente di eludere la protezione contro gli attacchi tramite canali laterali, introdotta nella versione OpenSSH 9.5, che analizza i ritardi tra i tasti premuti sulla tastiera per ricreare gli input. La vulnerabilità permette di distinguere i pacchetti che generano attività di fondo tramite la simulazione di pressioni di tasto fittizie da quelli inviati durante la pressione di tasti reali, riducendo così l'efficacia del meccanismo di occultamento delle caratteristiche dell'input interattivo nel traffico SSH. I dati sugli input consentono di utilizzare attacchi che ricreano l'input basato sull'analisi dei ritardi tra le pressioni durante la digitazione, che dipendono dalla disposizione dei tasti sulla tastiera (ad esempio, la reazione durante la pressione del tasto 'F' è più veloce rispetto a quella per 'Q' o 'X', poiché richiede meno movimenti delle dita).
Inoltre, è emerso che l'algoritmo implementato per l'invio di pacchetti con pressioni di tasti reali e fittizie riduceva l'affidabilità di un altro metodo di protezione contro gli attacchi tramite canali laterali. A partire dal rilascio di
OpenSSH 2.9.9 un server ho inviato pacchetti con pressioni simulate per l'input della console in modalità echo-off, utilizzata, ad esempio, durante l'inserimento delle password in su o sudo. La nuova logica per l'invio di pacchetti simulati consente, in caso di analisi passiva del traffico, di distinguere i pacchetti con pressioni reali in modalità echo-off per un'analisi separata. Tuttavia, la precisione delle informazioni sul tempo delle pressioni è limitata, poiché dopo la digitazione i pacchetti non vengono inviati immediatamente, ma con intervalli di tempo fissi (di default 20 ms).
Altre modifiche in OpenSSH 9.8:
- Durante la fase di compilazione, il supporto per le firme digitali basate sull'algoritmo DSA è disabilitato per impostazione predefinita. All'inizio del 2025, l'implementazione DSA sarà rimossa dalla base di codice. La causa della rimozione è il livello di sicurezza dell'DSA che non risponde agli standard moderni. I costi per continuare a mantenere un algoritmo insicuro come il DSA non sono giustificati, e la sua rimozione stimolerà la cessazione del supporto per il DSA in altre implementazioni SSH e librerie crittografiche.
- Per una protezione aggiuntiva contro i metodi di sfruttamento delle vulnerabilità che richiedono l'instaurazione di un grande numero di connessioni a sshd, è stato implementato e attivato per impostazione predefinita un nuovo regime di sicurezza, che aiuta anche a bloccare attacchi automatizzati di brute force, in cui i bot tentano di indovinare la password dell'utente provando diverse combinazioni standard. La protezione è attuata tramite il blocco IP addresses, con il quale si registra un alto numero di tentativi di connessione falliti — sshd tiene traccia dello stato di completamento dei processi figlio, identificando situazioni in cui l'autenticazione non è riuscita o in cui il processo è stato interrotto in modo anomalo a causa di un guasto e, al superamento di una certa soglia, inizia a bloccare le richieste da IP o sottoreti problematiche. Per configurare la soglia di attivazione del blocco, la maschera della sottorete bloccata e l'elenco delle eccezioni, sono stati proposti i parametri PerSourcePenalties, PerSourceNetBlockSize e PerSourcePenaltyExemptList.
- È stata effettuata una separazione di sshd in diversi file eseguibili distinti. Dal sshd è stato estratto il processo sshd-session, responsabile delle operazioni relative alla gestione delle sessioni. Nel processo sshd sono state mantenute le funzioni dedicate all'accettazione delle connessioni di rete, alla verifica della configurazione, al caricamento delle chiavi host e alla gestione dei processi avviati in base al parametro MaxStartups. Pertanto, il file eseguibile sshd ora contiene la funzionalità minima necessaria per accettare una nuova connessione di rete e avviare sshd-session per la gestione della sessione.
- È stato modificato il testo di alcuni messaggi di errore registrati nel log. In particolare, diversi messaggi ora vengono inviati a nome del processo “sshd-session”, e non “sshd”.
- Nell'utilità ssh-keyscan, le informazioni sulla versione del protocollo e sul nome host vengono ora stampate nel flusso standard, e non in STDERR. Per disabilitare l'output, è stata proposta l'opzione “-q”.
- In ssh è stata implementata la possibilità di disabilitare, mediante la direttiva HostkeyAlgorithms, il passaggio dall'uso del certificato della chiave host all'uso di chiavi host semplici (plain).
- Nella versione portabile di sshd è stata interrotta l'uso di argv[0] per determinare il nome del servizio PAM. È stata aggiunta una nuova direttiva «PAMServiceName» nel file sshd_config per impostare il nome del servizio PAM, che di default è impostato su «sshd».
- Nella versione portabile di sshd è stato garantito il salvataggio dei file generati automaticamente (come configure, config.h.in, ecc.) nel branch Git con le release (ad esempio, V_9_8), permettendo di sincronizzare il contenuto degli archivi tar firmati digitalmente e dei rami in Git.
- Nella versione portabile di ssh e ssh-agent è stato implementato l'impostazione della modalità
SSH_ASKPASS nel caso sia presente la variabile d'ambiente WAYLAND_DISPLAY, analogamente a quanto fatto per X11 quando è presente la variabile d'ambiente DISPLAY. - Nella versione portabile di sshd è stato aggiunto il supporto per l'invio di notifiche a systemd quando viene creato un socket di rete in ascolto o quando viene riavviato, utilizzando codice separato che non fa riferimento alla libreria libsystemd.
Fonte: opennet.ru
