CVE-2026-7598libssh2是一个广泛使用的客户端C语言库,实现了SSHv2协议。在libssh2 1.11.1及之前的版本中,src/userauth.c文件的userauth_password函数存在严重的安全缺陷。由于对username_len和password_len参数的验证不足,引发了整数溢出漏洞。未经身份验证的远程攻击者可利用此漏洞,通过特制的网络数据包触发溢出,进而可能导致敏感信息泄露、数据篡改或服务中断。官方已发布修复补丁,建议受影响用户尽快更新。
该漏洞位于libssh2的userauth_password函数中,其根本原因是在处理SSH协议认证包时,对用户名和密码的长度字段缺乏必要的边界检查。当客户端连接到恶意服务器时,攻击者可以构造包含超大username_len或password_len值的数据包。在计算内存分配大小时(例如 len1 + len2 + header),这些超大值会导致整数溢出,使得原本需要分配大量内存的操作只分配了极小的缓冲区。随后的数据拷贝操作(如memcpy)会向该小缓冲区写入大量数据,导致堆缓冲区溢出。这可能导致应用程序崩溃,或在特定条件下允许攻击者控制执行流。