CVE-2026-23965CVE-2026-23965是sm-crypto库中的一个严重签名伪造漏洞。sm-crypto是一个提供中国密码算法SM2、SM3和SM4的JavaScript实现库。该漏洞存在于SM2签名验证逻辑中,影响版本0.4.0之前的所有版本。在默认配置下,攻击者可以为任意公钥伪造有效的数字签名,从而可能绕过系统的身份验证机制。攻击者利用该漏洞可以在数字签名验证场景中实施欺骗攻击,伪造合法用户的签名,进而访问受保护资源或执行未授权操作。由于SM2是中国国家密码管理局发布的椭圆曲线公钥密码算法,广泛应用于金融、政府和电子商务等领域,此漏洞的影响范围可能非常广泛。版本0.4.0已修复此安全问题,建议所有用户立即升级。
该漏洞的根本原因在于sm-crypto库中SM2签名验证算法的实现缺陷。SM2签名算法基于椭圆曲线密码学,签名由(r, s)对组成。正常情况下,签名验证过程会检查r和s的有效性范围,以及签名与公钥、消息的数学关系。攻击者利用签名验证逻辑中的缺陷,可以通过构造特殊的签名值来绕过验证检查。具体而言,攻击者利用SM2签名验证算法中对特定边界条件检查不严格的问题,在消息空间存在足够冗余的情况下,可以构造满足验证条件的伪造签名。对于格式要求较为宽松的消息,攻击者可以调整消息前缀以满足签名验证的特定格式需求。这种攻击不需要获取私钥,仅需要知道目标公钥即可伪造有效签名,攻击复杂度低,危害严重。