È stata pubblicata la versione OpenSSH 10.0, un'implementazione open-source di client e server per lavorare con i protocolli SSH 2.0 e SFTP. Le principali modifiche includono:
- È stata rimossa la supporto per le firme digitali basate sull'algoritmo DSA, il cui livello di sicurezza non è conforme agli attuali standard. I costi per continuare a supportare un algoritmo DSA insicuro non giustificano la spesa e la sua rimozione incoraggerà la cessazione del supporto per DSA in altre implementazioni SSH e librerie crittografiche. Per impostazione predefinita, l'uso delle chiavi DSA è cessato già nel 2015.
- È proseguita la separazione di sshd in diversi file eseguibili. In OpenSSH 9.8, è stato separato il processo sshd-session, che svolge compiti legati alla gestione delle sessioni. In OpenSSH 10.0, il codice che esegue l'autenticazione è stato trasferito dal processo sshd-session a un processo separato chiamato sshd-auth. Il processo sshd-auth consente di isolare ulteriormente i dati legati all'autenticazione nello spazio di indirizzamento di un processo separato, impedendo così l'accesso a tali dati in memoria in caso di attacchi al codice utilizzato per gestire le fasi di connessione fino al completamento dell'autenticazione. Inoltre, questa modifica ridurrà leggermente il consumo di memoria, poiché il codice legato all'autenticazione è ora presente in memoria solo durante l'autenticazione e viene scaricato al termine del processo sshd-auth.
- In SSH è attivato per impostazione predefinita un algoritmo ibrido di scambio di chiavi chiamato "mlkem768x25519-sha256", resistente agli attacchi da parte di computer quantistici e costituito da una combinazione di X25519 ECDH e dell'algoritmo ML-KEM (CRYSTALS-Kyber), standardizzati dall'Istituto Nazionale degli Standard e della Tecnologia degli Stati Uniti (NIST). ML-KEM utilizza metodi crittografici basati sulla soluzione di problemi della teoria delle reticolazioni, il cui tempo di soluzione non differisce tra computer classici e quantistici.
- In ssh_config sono state aggiunte nuove funzionalità per le direttive SetEnv e User, che ora supportano la sostituzione "%-token" e l'espansione delle variabili d'ambiente.
- In ssh_config e sshd_config è stata aggiunta la supporto per l'espressione "Match version", che consente di applicare impostazioni in base alla versione di OpenSSH disponibile, ad esempio per agganciarsi a OpenSSH 10 si può specificare "Match version OpenSSH_10.*".
- In ssh_config è stata aggiunta la supporto per le espressioni:
- «Match sessiontype», che consente di applicare impostazioni a seconda del tipo di sessione richiesta: «shell» per sessioni interattive, «exec» per l'esecuzione di comandi, «subsystem» per sftp e «none» per tunnel e reindirizzamento del traffico.
- «Match command» per legare azioni ai comandi specificati nella riga di comando per l'esecuzione tramite ssh.
- ‘Match tagged «»‘ e ‘Match command «»‘ per legare a tag vuoti e avviare ssh senza specificare un comando da eseguire.
- In sshd_config è consentito l'uso di maschere nei percorsi dei file specificati nelle direttive AuthorizedKeysFile e AuthorizedPrincipalsFile.
- Nel client ssh è stata aggiunta la supporto per l'opzione «VersionAddendum» per aggiungere testo arbitrario alla stringa con il numero di versione (in precedenza questa opzione era disponibile solo per server sshd).
- Nelle utilità scp e sftp è stata fornita la trasmissione dell'impostazione «ControlMaster no» per vietare l'uso di connessioni esistenti, quando ci si riconnette a un host.
- In sshd per default è stata disabilitata la supporto per l'implementazione dell'algoritmo di Diffie-Hellman nel campo finito, il che ha portato all'eliminazione dalla lista KEXAlgorithms dei metodi «diffie-hellman-group*» e «diffie-hellman-group-exchange-*». Rispetto all'algoritmo di Diffie-Hellman basato su curve ellittiche, l'implementazione remota è più lenta e richiede risorse computazionali aggiuntive mantenendo lo stesso livello di sicurezza.
- In ssh, quando si sceglie un cifrario per la connessione, il modo AES-GCM è ora più preferibile rispetto all'AES-CTR. Di default, è impostata una lista di priorità nella scelta dei cifrari: Chacha20/Poly1305, AES-GCM (128/256) e AES-CTR (128/192/256).
- In ssh-agent è stata implementata la rimozione di tutte le chiavi caricate al ricevimento del segnale SIGUSR1.
- In ssh-keygen è stata aggiunta la supporto per token FIDO che non restituiscono dati di attestazione, come WinHello.
- In ssh-agent è stata aggiunta l'opzione «-Owebsafe-allow=…» per sovrascrivere la whitelist delle applicazioni FIDO.
- È stata aggiunta un'utilità sperimentale regress/misc/ssh-verify-attestation per la verifica dei dati di attestazione FIDO, generati opzionalmente da ssh-keygen durante la registrazione delle chiavi FIDO.
- In ssh-keygen è consentito utilizzare «-» invece del nome del file.
- In ssh-agent e nella versione portatile di OpenSSH è stata aggiunta la supporto per l'attivazione tramite socket in stile systemd, implementata utilizzando il meccanismo LISTEN_PID/LISTEN_FDS.
- Nella versione portatile:
- È stata implementata la supporto per la libreria crittografica AWS-LC (AWS libcrypto).
- In sshd è stata aggiunta la supporto per wtmpdb, un equivalente di wtmp, non soggetto al problema del 2038.
- In sshd è stata aggiunta l'opzione «—with-linux-memlock-onfault» per fissare sshd nella memoria (vietando lo swap nel file di paging).
- Aggiunta l'opzione «—with-security-key-standalone» per compilare una libreria autonoma sk-libfido2.
- Le impostazioni di compilazione per RHEL 6 sono state rimosse dalla specifica del pacchetto RPM.
- Modifica in sshd relativa alla sicurezza: la direttiva DisableForwarding non vietava correttamente il forwarding del protocollo X11 e le richieste al ssh-agent. Il forwarding X11 è disabilitato per impostazione predefinita sul lato server, mentre il forwarding del ssh-agent è disabilitato sul lato client.
Fonte: opennet.ru
