Nella libreria libssh (da non confondere con libssh2), progettata per aggiungere supporto client e server per il protocollo SSHv2 nei programmi in linguaggio C, è stata identificata una vulnerabilità (CVE-2021-3634) che porta a un overflow del buffer durante l'inizializzazione del processo di cambio chiave (rekey) utilizzando un meccanismo di scambio chiave che applica un differente algoritmo di hashing. Il problema è stato risolto nella versione 0.9.6.
Il problema è che l'operazione di cambio della chiave consente l'uso di hash crittografici con dimensioni di hash diverse rispetto all'algoritmo originariamente utilizzato. In questo caso, la memoria per l'hash in libssh è stata allocata in base alla dimensione iniziale dell'hash e l'uso di un hash di dimensione maggiore porta a sovrascrivere dati al di fuori del buffer allocato. Come metodo di protezione alternativo, si può limitare l'elenco dei metodi di scambio delle chiavi solo agli algoritmi con la stessa dimensione dell'hash. Ad esempio, per legare a SHA256, si può aggiungere nel codice: rc = ssh_options_set(s->ssh.session, SSH_OPTIONS_KEY_EXCHANGE, "diffie-hellman-group14-sha256,curve25519-sha256,ecdh-sha2-nistp256");
Fonte: opennet.ru
