CVE-2026-21895CVE-2026-21895是Rust生态中RSA加密库的一个安全漏洞。该漏洞存在于rsa crate 0.9.10之前的版本中。当使用RSA算法创建私钥时,如果提供给构造函数的素数参数中包含数值1,程序将触发panic而不是优雅地返回错误信息。这一行为会导致应用程序意外终止,在某些场景下可能造成拒绝服务攻击。由于RSA加密库通常被用于处理敏感数据的加密通信,如TLS/SSL连接、密钥交换、数字签名验证等关键安全场景,该漏洞的潜在影响范围较广。攻击者可以通过构造特殊的素数参数来触发此漏洞,导致依赖该库的服务中断。虽然CVSS评分5.3属于中等严重程度,但在高可用性要求的系统中,任何导致服务中断的问题都需要认真对待。该漏洞已被官方在0.9.10版本中修复,修复后的版本会正确返回错误而不是panic。
RSA算法的核心数学原理基于大整数的因式分解难度。一个有效的RSA私钥由两个大素数p和q组成,满足n=p*q,且p和q都应该是大于1的素数。在正常的RSA实现中,当接收到无效的素数参数(如1或合数)时,库应该进行参数验证并返回错误。然而,在rsa crate 0.9.10之前的版本中,构造函数直接使用传入的素数进行数学运算,没有先验证素数是否有效。当素数为1时,RSA数学运算会触发除零或数学运算错误,导致Rust程序发生panic。在Rust的错误处理模型中,panic会导致当前线程或整个程序终止,这对于服务器应用程序来说意味着连接中断和服务不可用。攻击者只需构造一个素数参数为1的RSA私钥请求即可触发该漏洞。该漏洞的技术根源在于缺少输入验证和使用了不安全的错误处理方式。修复方案是在构造私钥前增加素数有效性验证,并在验证失败时返回Result类型错误而非panic。