In der Bibliothek libssh (nicht zu verwechseln mit libssh2), die zur Implementierung der Client- und Serverunterstützung des SSHv2-Protokolls in C-Programmen dient, wurde eine Schwachstelle (CVE-2021-3634) entdeckt, die zu einem Pufferüberlauf führen kann, wenn der Prozess zur Schlüsselwechsel (rekey) unter Verwendung eines Schlüsselübertragungsmechanismus initiiert wird, der einen anderen Hashalgorithmus anwendet. Das Problem wurde in der Version 0.9.6 behoben.
Das Kernproblem besteht darin, dass der Schlüsselwechsel die Verwendung kryptografischer Hashes mit einer anderen Hash-Größe als der ursprünglich verwendeten zulässt. Dabei wurde der Speicher für den Hash in libssh basierend auf der ursprünglichen Hash-Größe zugewiesen, und die Verwendung eines größeren Hashes führt zu einer Überschreibung von Daten außerhalb des zugewiesenen Puffers. Als alternativer Schutzansatz kann die Liste der unterstützten Schlüsselübertragungsmethoden auf Algorithmen mit derselben Hash-Größe beschränkt werden. Zum Beispiel kann der Code für die Bindung an SHA256 folgendermaßen hinzugefügt werden: rc = ssh_options_set(s->ssh.session, SSH_OPTIONS_KEY_EXCHANGE, "diffie-hellman-group14-sha256,curve25519-sha256,ecdh-sha2-nistp256");
Quelle: opennet.ru
