V knihovně libssh (nemýlit s libssh2), která je určena pro přidání klientské a serverové podpory protokolu SSHv2 do programů napsaných v jazyce C, byla odhalena zranitelnost (CVE-2021-3634), která může vést k přetečení bufferu při iniciaci procesu změny klíče (rekey) s použitím mechanismu výměny klíčů, který používá jiný hashovací algoritmus. Problém byl opraven ve verzi 0.9.6.
Podstatou problému je, že operace změny klíče umožňuje použití kryptografických hashů s velikostí otisku, která se liší od původně použitého algoritmu. Při tom byla paměť pro hash v libssh přidělena na základě původní velikosti hashe, a použití většího hashe vede k přepsání dat za hranicemi přiděleného bufferu. Jako záložní způsob ochrany lze omezit seznam podporovaných metod výměny klíčů pouze na algoritmy se stejnou velikostí hashe. Například pro vazbu na SHA256 lze do kódu přidat: rc = ssh_options_set(s->ssh.session, SSH_OPTIONS_KEY_EXCHANGE, „diffie-hellman-group14-sha256,curve25519-sha256,ecdh-sha2-nistp256“);
Zdroj: opennet.ru
