In der Bibliothek libssh (nicht zu verwechseln mit libssh2), die zur Implementierung der Unterstützung für den SSHv2-Protokoll für Client- und Serveranwendungen in C gedacht ist, wurde eine Sicherheitsanfälligkeit (CVE-2021-3634) entdeckt, die zu einem Pufferüberlauf führt, wenn der Schlüsselwechselprozess (rekey) mit einem Schlüssel-Austauschmechanismus initiiert wird, der einen anderen Hash-Algorithmus verwendet. Das Problem wurde in Version 0.9.6 behoben.
Das Problem besteht darin, dass der Schlüsselwechsel eine Verwendung von kryptografischen Hashes mit einer Prüfziffer zulässt, die sich von dem ursprünglich verwendeten Algorithmus unterscheidet. Dabei wurde der Speicher für den Hash in libssh basierend auf der ursprünglichen Hash-Größe reserviert, und die Verwendung eines größeren Hashes führt zu einem Überschreiben von Daten über den reservierten Puffer hinaus. Als alternative Schutzmaßnahme könnte die Liste der unterstützten Schlüssel-Austauschmethoden auf Algorithmen mit identischer Hash-Größe beschränkt werden. Zum Beispiel zur Bindung an SHA256 könnte der folgende Code 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
