En la biblioteca libssh (no confundir con libssh2), destinada a añadir soporte cliente y servidor para el protocolo SSHv2 en programas en lenguaje C, se ha identificado una vulnerabilidad (CVE-2021-3634) que provoca un desbordamiento de búfer al iniciar el proceso de cambio de clave (rekey) utilizando un mecanismo de intercambio de claves que emplea otro algoritmo de hash. El problema se ha solucionado en la versión 0.9.6.
La esencia del problema radica en que la operación de cambio de clave permite el uso de hashes criptográficos con un tamaño de huella distinto al del algoritmo originalmente utilizado. De este modo, la memoria asignada para el hash en libssh se basaba en el tamaño original del hash, y el uso de un hash de mayor tamaño resulta en la sobrescritura de datos fuera del búfer asignado. Como método de protección alternativo, se puede restringir la lista de métodos de intercambio de claves solo a algoritmos con el mismo tamaño de hash. Por ejemplo, para vincularlo a SHA256 se puede añadir en el código: rc = ssh_options_set(s->ssh.session, SSH_OPTIONS_KEY_EXCHANGE, "diffie-hellman-group14-sha256,curve25519-sha256,ecdh-sha2-nistp256");
Fuente: opennet.ru
