W bibliotece libssh (nie mylić z libssh2), opracowanej w celu dodania klienta i serwera wsparcia protokołu SSHv2 w programach napisanych w C, zidentyfikowano lukę (CVE-2021-3634), która prowadzi do przelania bufora podczas inicjowania procesu zmiany klucza (rekey) przy użyciu mechanizmu wymiany kluczy, który stosuje inny algorytm haszowania. Problem został rozwiązany w wersji 0.9.6.
Istota problemu polega na tym, że operacja zmiany klucza pozwala na użycie kryptograficznych skrótów o rozmiarze odcisku różnym od pierwotnie używanego algorytmu. W tym przypadku pamięć dla skrótu w libssh była przydzielana na podstawie pierwotnego rozmiaru skrótu, a użycie większego skrótu prowadzi do nadpisania danych poza przydzielonym buforem. Jako alternatywną metodę ochrony można ograniczyć listę wspieranych metod wymiany kluczy do algorytmów o tej samej wielkości skrótu. Na przykład, aby powiązać z SHA256, można dodać do kodu: rc = ssh_options_set(s->ssh.session, SSH_OPTIONS_KEY_EXCHANGE, "diffie-hellman-group14-sha256,curve25519-sha256,ecdh-sha2-nistp256");
Źródło: opennet.ru
