CVE-2026-32877Botan是一个广泛使用的C++加密库。在2.3.0至3.11.0之前的版本中,SM2解密过程中用于检查认证码(C3)的代码存在逻辑缺陷,未能在比较前验证编码值的长度。攻击者可利用特制的无效密文触发最多31字节的堆越界读取,导致程序崩溃或潜在的未定义行为,严重影响服务可用性。
该漏洞源于Botan库在处理SM2国密算法解密操作时的边界条件检查缺失。SM2解密流程涉及计算并验证认证码C3,但在受影响版本中,代码直接对C3值进行内存比较操作,而未预先验证待比较的输入长度。攻击者可以通过网络发送特制的无效SM2密文数据包,该数据包经过精心构造以包含异常长度的C3字段。当Botan库解析该密文时,会越界访问堆内存(读取最多31字节),导致进程异常终止。鉴于CVSS评分为8.2(高危),且攻击向量为网络,无需认证,这对暴露在互联网上的使用Botan进行SM2解密的服务构成了严重威胁,极易被用于拒绝服务攻击。