Nella libreria libssh (non confondere con libssh2), destinata ad aggiungere supporto client e server per il protocollo SSHv2 nei programmi in linguaggio C, è stata identificata una vulnerabilità (CVE-2021-3634) che causa un overflow del buffer durante l'inizializzazione del processo di cambio chiave (rekey) utilizzando un meccanismo di scambio chiave che adotta un algoritmo di hashing differente. Il problema è stato risolto nella versione 0.9.6.
La sostanza del problema è che l'operazione di cambio chiave consente l'uso di hash crittografici con dimensioni del digest diverse da quelle dell'algoritmo originariamente utilizzato. In questo caso, la memoria per l'hash in libssh veniva allocata sulla base della dimensione originale dell'hash e l'uso di un hash di dimensione maggiore comporta la sovrascrittura di dati oltre il buffer allocato. Come metodo di protezione di riserva, è possibile limitare l'elenco dei metodi di scambio chiave solo a quelli basati su algoritmi con dimensione dell'hash uguale. Ad esempio, per legarsi a SHA256 nel codice si può aggiungere: rc = ssh_options_set(s->ssh.session, SSH_OPTIONS_KEY_EXCHANGE, "diffie-hellman-group14-sha256,curve25519-sha256,ecdh-sha2-nistp256");
Fonte: opennet.ru
