V knjižnici libssh (ne zamenjujte jo z libssh2), namenjeni dodajanju odjemalske in strežniške podpore za protokol SSHv2 v programe v jeziku C, je bila odkrita ranljivost (CVE-2021-3634), ki vodi do prelivanja pomnilnika med začetkom postopka menjave ključev (rekey) z uporabo mehanizma izmenjave ključev, ki uporablja drug algoritem za hashiranje. Težava je bila odpravljena v različici 0.9.6.
Sama težava je v tem, da operacija menjave ključev dovoli uporabo kriptografskih hashov z velikostjo pečata, ki se razlikuje od prvotno uporabljenega algoritma. Pri tem je bilo pomnilniku za hash v libssh dodeljeno na podlagi prvotne velikosti hasha, kar pomeni, da uporaba hasha večje velikosti vodi do prepisovanja podatkov zunaj dodeljenega pomnilnika. Kot način zaščite lahko omejite seznam podprtih metod izmenjave ključev na algoritem s enako velikostjo hasha. Na primer, za vezavo na SHA256 lahko v kodo dodate: rc = ssh_options_set(s->ssh.session, SSH_OPTIONS_KEY_EXCHANGE, "diffie-hellman-group14-sha256,curve25519-sha256,ecdh-sha2-nistp256");
Izvor: opennet.ru
