CVE-2026-41989Libgcrypt 1.12.2 之前的版本中存在一个关键的安全漏洞,主要涉及 ECDH 密文解密过程。该漏洞源于 `gcry_pk_decrypt` 函数在处理特定输入时缺乏足够的边界检查,攻击者可利用特制的恶意密文成功触发基于堆的缓冲区溢出。此漏洞不仅可能导致应用程序崩溃和拒绝服务,还会对系统的完整性与可用性造成严重影响。
该漏洞原理在于 Libgcrypt 在 1.12.2 版本之前对 ECDH 密文解密操作的内存管理存在缺陷。具体来说,函数 `gcry_pk_decrypt` 在解析密文数据时,没有对输入的长度进行严格的校验。当攻击者发送超长或格式异常的特制 ECDH 密文时,程序会尝试将过多的数据写入堆缓冲区,从而引发基于堆的缓冲区溢出。这种溢出可能破坏相邻的内存区域,导致堆元数据损坏或程序崩溃。根据 CVSS 3.1 评分向量 (CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:H),虽然攻击需要本地访问且攻击复杂度较高,但无需用户交互即可触发。一旦利用成功,攻击者可以造成高程度的完整性破坏和拒绝服务,严重干扰依赖该库的加密服务。