libssh2 Heap Buffer Overflow via ETM Cipher Negotiation 漏洞概述 libssh2 1.11.1 及之前版本存在一个堆缓冲区溢出漏洞,该漏洞允许恶意 SSH 服务器通过发送一个比加密块大小更小的 的包来破坏任何连接客户端的堆元数据。在 函数中,ETM 路径分配了一个缓冲区,用于复制 字节,但通过 复制了比块大小少一个字节的字节,导致在 32 位 glibc 上发生溢出,攻击者可以将受控字节写入相邻块的 字段,从而启用 桶混淆,重叠活动对象,并在会话握手期间覆盖函数指针。 影响范围 libssh2 <= 1.11.1 修复方案 在 commit 42e33d8 中修复了该漏洞。 参考链接 Pull Request Patch Commit 信用 VladimirEliTokarev 描述 libssh2 通过 1.11.1,在 commit 42e33d8 中,包含一个预身份验证的堆缓冲区溢出漏洞,允许恶意 SSH 服务器通过发送一个比加密块大小更小的 的包来破坏任何连接客户端的堆元数据。在 函数中,ETM 路径分配了一个缓冲区,用于复制 字节,但通过 复制了比块大小少一个字节的字节,导致在 32 位 glibc 上发生溢出,攻击者可以将受控字节写入相邻块的 字段,从而启用 桶混淆,重叠活动对象,并在会话握手期间覆盖函数指针。