libssh 中的缓冲区溢出漏洞

libssh 库(不要与 libssh2 混淆)中已发现一个漏洞 (CVE-2-2021),该漏洞旨在向 C 程序添加对 SSHv3634 协议的客户端和服务器支持,从而在启动重新生成密钥过程时导致缓冲区溢出使用使用不同散列算法的密钥交换。 该问题已在 0.9.6 版本中修复。

问题的本质是密钥更改操作允许使用与最初使用的算法不同的强制转换大小的加密哈希。 同时,libssh中的哈希内存是根据原始哈希大小分配的,使用较大的哈希大小会导致数据被覆盖超出分配的缓冲区边界。 作为后备安全方法,您可以将支持的密钥交换方法列表限制为仅具有相同哈希大小的算法。 例如,要绑定到 SHA256,您可以在代码中添加: rc = ssh_options_set(s->ssh.session, SSH_OPTIONS_KEY_EXCHANGE, "diffie-hellman-group14-sha256,curve25519-sha256,ecdh-sha2-nistp256");

来源: opennet.ru

添加评论