🟠 高危 | CVE-2026-66033 — libssh2 through 1.11.1, fixed in commit a2ed82d, c...
🟠 【深度分析】高危安全漏洞:CVE-2026-66033
CVSS 评分: 高危(8.7)🟠 状态: Analyzed 发布时间: 2026-07-24
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-66033 |
| CVSS 评分 | 8.7 🟠 |
| 严重程度 | 高危 |
| CVSS 向量 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| CWE 分类 | CWE-125,CWE-191 |
| 发布时间 | 2026-07-24 |
| 最后更新 | 2026-07-30 |
| 状态 | Analyzed |
| 数据来源 | disclosure@vulncheck.com |
⚠️ 危害等级:高危
CVSS 评分:8.7 / 10(CVSS 4.0)
CVSS 向量:CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
漏洞类型:整数下溢(CWE-191)+ 越界读取(CWE-125)
影响组件:libssh2(SSH 客户端库),版本 ≤ 1.11.1
1. 漏洞概述
CVE-2026-66033 是 libssh2 库中一个预认证(pre-authentication)整数下溢漏洞,存在于 src/openssl.c 的 ssh2_cipher_crypt() 函数内。恶意 SSH 服务器可在与受影响客户端握手期间,通过协商 AES-GCM 系列密码套件,触发一个无符号整数下溢,进而导致越界读取和 memcpy 超大长度拷贝,使客户端进程在任何用户认证发生之前直接崩溃。
该漏洞由 VulnCheck 安全团队披露(disclosure@vulncheck.com),NVD 状态为 Analyzed,说明已完成基本验证与分类。根据 CVSS 4.0 评分,这是一个可被远程利用、攻击复杂度低、仅影响可用性的高危拒绝服务漏洞。
2. 受影响组件与版本
| 项目 | 详情 |
|---|---|
| 受影响软件 | libssh2(libssh2 是一个被广泛使用的 SSH v2 协议客户端 C 库) |
| 受影响版本 | ≤ 1.11.1(含 1.11.1) |
| 修复版本 | 包含 commit a2ed82d 的后续版本 |
| 受影响形态 | 所有以 libssh2 作为 SSH 客户端库的应用程序:如 curl、语言绑定(PHP、Python、Node.js、Ruby、Go 等)、文件传输工具、CI/CD 工具、嵌入式设备与网络设备等 |
需要特别指出的是:由于 libssh2 是客户端库,攻击面体现在客户端主动连接不可信服务器的场景。例如:
- 开发人员使用工具连接远程服务器;
- 嵌入式设备启动后回连管理服务器;
- 安全扫描器或运维系统采集远程设备信息;
- 用户通过应用内 SSH 功能连接第三方服务。
在这些场景中,只要客户端连接到的服务器是恶意的(或被攻击者控制/劫持),攻击便可成立。
3. 漏洞原理分析
3.1 缺陷位置
漏洞位于 src/openssl.c 中的 ssh2_cipher_crypt() 函数。该函数是 libssh2 基于 OpenSSL EVP 接口实现对称加解密的核心路径,负责处理 SSH 会话中各个小包(packet)的加密与解密。
当客户端与服务器在密钥协商阶段达成一致、选择 AES-GCM 类密码套件后,后续的数据包处理需在加解密过程中同时处理三部分数据:
- blocksize:底层分组密码的块大小(AES 为 16 字节);
- aadlen:附加认证数据(Additional Authenticated Data)长度;
- 认证标签(authentication tag)长度:GCM 模式中用于校验完整性的认证标签(通常为 12~16 字节)。
3.2 整数下溢成因
触发缺陷的表达式本质上是:
blocksize - aadlen - authentication_tag_length
这三个操作数均为无符号整数。当 aadlen + taglen 之和大于 blocksize 时,计算结果本应为负数,但在无符号整数的算术语义下,会发生下溢(underflow),产生一个接近无符号整数最大值(如 SIZE_MAX)的巨大正数。
以典型 AES-GCM 场景为例(blocksize = 16),若 aadlen 与 taglen 的和超过 16,减法结果即为下溢值。下溢结果将在后续代码中用作:
- 越界读取(CWE-125)的偏移量或长度:导致从错误的内存地址读取数据;
memcpy调用的长度参数:尝试拷贝接近SIZE_MAX(64 位系统上为 2⁶⁴-1)字节的数据。
这两种行为都会触发进程的非法内存访问,导致段错误(SIGSEGV),立即崩溃。
3.3 攻击向量:恶意服务器主导握手
SSH 协议握手流程中,密码套件的选择由服务器主导。虽然客户端会在 KEXINIT 中列出自己支持的算法,但服务器可从中挑选任意一种。在本次攻击中:
- 攻击者运行一个恶意 SSH 服务器(或通过中间人劫持流量);
- 客户端使用受影响的 libssh2 发起连接;
- 服务器在算法协商阶段选择 AES-GCM 类密码套件(如
aes128-gcm@openssh.com/aes256-gcm@openssh.com等); - 服务器随后在密钥交换过程发送构造好的数据包,触发
ssh2_cipher_crypt()执行下溢路径; - 客户端在用户认证之前的握手阶段崩溃。
由于整个攻击发生在认证之前,攻击者不需要任何合法账号、私钥或已知会话密钥,也不依赖用户输入任何额外信息。
⚠️ 信息边界声明:NVD 数据明确指出了缺陷表达式为
blocksize - aadlen - taglen,且确认了越界读取与超大长度memcpy的发生。但关于触发下溢所需的具体网络报文布局 / 具体 AAD 长度边界(例如是否要求特定大小的packet_length字段),现有数据不足以确定,此处不做无依据的补充推测。
4. 影响评估
4.1 从 CVSS 4.0 向量解读利用难度
| 维度 | 取值 | 含义 |
|---|---|---|
| AV:N(攻击向量=网络) | 远程 | 攻击者可跨网络触发,无需物理接触 |
| AC:L(攻击复杂度=低) | 低 | 无需复杂的堆排布、时序竞争与信息泄漏 |
| AT:N(攻击条件=无) | 无前置条件 | 不需要网络环境或目标状态上的特殊准备 |
| PR:N(权限=无) | 无 | 攻击不需要任何认证或权限 |
| UI:N(用户交互=无) | 无 | 用户只需发起一次常规连接,无额外交互 |
| VC:N / VI:N | 无保密性/完整性影响 | 漏洞不破坏数据机密性与完整性 |
| VA:H(可用性=高) | 高 | 目标进程直接崩溃,服务完全不可用 |
综合来看,这是一个**“零门槛、高确定性、纯拒绝服务”**的远程崩溃漏洞。
4.2 实际威胁场景
- SSH 客户端批量崩溃:恶意服务器可以反复诱导连接它的 libssh2 客户端崩溃,影响大量用户或同一设备上反复重连的后台进程。
- CI/CD / 开发工具中断:渗透测试平台、代码管理工具如果在自动采集/部署环节使用了 libssh2 且会连接外部服务器,攻击者可中断其运行。
- IoT / 嵌入式设备链路破坏:大量网络设备使用 libssh2 回连管理服务器或运维通道,一旦被恶意服务器诱导连接,设备管理链路即刻中断,影响设备可用性。
- 中间人(MITM)降级攻击:若攻击者可在客户端与合法服务器之间拦截并篡改 SSH 握手报文,也可强制将密码套件协商到 AES-GCM 路径,从而对用户的正常连接实施破坏。
4.3 局限性
- 该漏洞只能造成拒绝服务(崩溃),不能直接导致代码执行、信息泄露或数据篡改。
- 攻击者需要一个可控的 SSH 服务端(或 MITM 位置),且需要目标客户端发起连接这一前置事件。
5. 修复建议
官方修复
升级 libssh2 至包含 commit a2ed82d 的版本或之后发布的正式版本。若官方已发布高于 1.11.1 的稳定版本,请立即升级。
临时缓解措施
在无法立即升级的情况下:
- 禁用 AES-GCM 密码套件:在客户端配置 / 代码中过滤 libssh2 支持的密码算法列表,移除所有 GCM 模式族算法(如
aes128-gcm@openssh.com、aes256-gcm@openssh.com等)。注意该措施可能降低传输性能(退回 CBC 或其他算法),且仅作为过渡方案,并非长效防护。 - 限制不可信连接:审查应用中是否允许用户配置任意 SSH 服务器,若无需此功能,可尽量将连接对象限制为可信的内网/白名单服务器。
- 依赖审查:使用 libssh2 的语言绑定(如
php-ssh2、pycurl + libssh2、Node.js mikeal/ssh2等)时,关注上游依赖是否已升级至修复版本,并及时更新。
资产排查
- 盘点内部依赖 libssh2 的应用程序与设备;
- 重点关注会连接不可信外部服务器的系统;
- 确认修复版本是否已覆盖所有生产环境。
6. 参考资料
- NVD 官方页面:https://nvd.nist.gov/vuln/detail/CVE-2026-66033
- CWE-125(Out-of-bounds Read):https://cwe.mitre.org/data/definitions/125.html
- CWE-191(Integer Underflow: Wrap or Wraparound):https://cwe.mitre.org/data/definitions/191.html
- libssh2 官方仓库:https://github.com/libssh2/libssh2 (修复 commit
a2ed82d) - 漏洞披露方:VulnCheck(disclosure@vulncheck.com)
报告生成时间:基于 NVD 于 2026-07-24 发布的数据整理