CVE-2026-4395wolfSSL wolfcrypt 组件中的 KCAPI ECC 代码路径存在基于堆的缓冲区溢出漏洞。该漏洞位于 `wc_ecc_import_x963_ex` 函数中,由于在将输入数据复制到 `pubkey_raw` 缓冲区(132字节)之前未进行边界检查,远程攻击者可以通过发送特制的超大 EC 公钥点数据,向缓冲区边界之外写入受控数据。与包含长度验证的 ATECC 代码路径不同,KCAPI 路径直接使用 `XMEMCPY` 进行拷贝。该漏洞可在 TLS 密钥交换期间,通过恶意对等方在 ServerKeyExchange 消息中发送构造的 ECPoint 来触发,导致严重的安全后果。
该漏洞的核心在于 wolfSSL 处理 ECC 公钥导入时的逻辑缺陷。在编译时启用了 `WOLFSSL_KCAPI_ECC` 的情况下,当调用 `wc_ecc_import_x963_ex` 函数处理导入的 X9.63 格式 ECC 密钥时,程序直接使用 `XMEMCPY` 将攻击者提供的输入数据复制到目标结构体的 `key->pubkey_raw` 字段中。该字段仅分配了 132 字节的堆内存,但函数未验证输入数据的长度。攻击者可以构造一个包含超长 ECPoint 的 TLS 握手消息(特别是 ServerKeyExchange 消息)。当受害端解析该消息时,超长的数据将溢出 `pubkey_raw` 缓冲区,覆盖相邻的堆内存。由于该数据完全由攻击者控制,精心设计的溢出数据可能覆盖函数指针或关键对象,从而在远程目标上实现任意代码执行或导致拒绝服务。