CVE-2026-22700CVE-2026-22700是RustCrypto椭圆曲线密码库中的一个高危拒绝服务漏洞。该漏洞影响RustCrypto: Elliptic Curves的0.14.0-pre.0和0.14.0-rc.0版本,存在于SM2公钥加密(PKE)实现模块中。漏洞的根本原因在于decrypt()函数对来自不可信密文的输入缓冲区执行未经边界检查的slice::split_at操作。攻击者无需任何认证权限,即可通过网络远程触发此漏洞。当攻击者提交精心构造的短密文或恶意DER编码结构时,会导致Rust运行时触发边界检查panic,引发线程或进程崩溃。此漏洞可能导致使用该库的服务中断,影响依赖于SM2算法的加密通信系统。由于CVSS评分达到7.5分(高危),且攻击复杂度低、无需特殊权限,建议受影响的用户尽快升级到最新补丁版本。
漏洞位于RustCrypto椭圆曲线库的SM2公钥加密实现中,具体是sm2pke256v1模块的decrypt()函数。该函数接收来自不可信源的密文数据后,直接调用slice::split_at()方法进行缓冲区分割操作,但未预先验证输入数据的长度是否满足最小要求。slice::split_at()方法在Rust中是一个边界检查函数,当传入的分割索引超出切片范围时会触发panic,导致Rust堆栈展开。在正常情况下,Rust的panic会导致当前线程终止;在启用panic=abort配置或某些容器环境中,整个进程可能会崩溃。攻击者可以通过以下方式利用此漏洞:1) 提交长度小于预期最小长度的密文数据;2) 构造包含恶意DER编码结构的数据,使解析过程中产生错误的偏移量计算;3) 利用SM2解密流程中的多个split_at调用点,触发级联边界检查失败。由于该漏洞发生在加密解密的关键路径上,任何处理SM2加密数据的网络服务都可能成为攻击目标。