V knižnici libssh (nezamieňať s libssh2), určenej na pridanie klientskej a serverovej podpory pre protokol SSHv2 do programov v jazyku C, bola zistená zraniteľnosť (CVE-2021-3634), ktorá vedie k pretečeniu vyrovnávacej pamäte pri iniciačnom procese výmeny kľúčov (rekey) pomocou mechanizmu výmeny kľúčov, ktorý používa iný hashovací algoritmus. Problém bol odstránený vo verzii 0.9.6.
Podstata problému spočíva v tom, že operácia výmeny kľúčov umožňuje použitie kryptografických hashov s veľkosťou odtlačku, ktorá sa líši od pôvodne použitých algoritmov. Pri tom bola pamäť pre hash v libssh alokovaná na základe pôvodnej veľkosti hash a použitie hash s väčšou veľkosťou vedie k prepísaniu údajov mimo vyhradeného bufferu. Ako záložná metóda ochrany je možné obmedziť zoznam podporovaných metód výmeny kľúčov len na algoritmy s rovnakou veľkosťou hash. Napríklad pre viazanie na SHA256 možno do kódu pridať: rc = ssh_options_set(s->ssh.session, SSH_OPTIONS_KEY_EXCHANGE, "diffie-hellman-group14-sha256,curve25519-sha256,ecdh-sha2-nistp256");
Zdroj: opennet.ru
