SCRAM身份验证中零日漏洞CVE-2025-59432
SCRAM(Salted Challenge Response Authentication Mechanism)是基于加盐哈希和HMAC摘要用于客户端和服务器间的用户认证机制。
SCRAM是简单身份验证和安全层(SASL,RFC 4422)身份验证机制家族的一部分,该机制可通过一个挑战-响应协议来验证用户的身份。
一、基本情况
SCRAM是基于密码的挑战-响应认证机制,通过随机挑战和加盐哈希实现客户端与服务器之间的身份验证,广泛用于MongoDB、Kafka等。
SCRAM 是基于密码的认证协议,支持SHA-256或SHA-512哈希算法,有效防止密码泄露和重放攻击,可有效防止中间人攻击和重放攻击。
栋科技漏洞库关注到在3.2版本之前,SCRAM Java实现中存在零日漏洞,该漏洞现在已经被追踪为CVE-2025-59432,CVSS 3.X评分7.5。
二、漏洞分析
CVE-2025-59432漏洞是存在于3.2版本之前,SCRAM Java实现中的一个定时攻击漏洞,所有依赖SCRAM身份验证的用户都会受到影响。
源于Arrays.equals用于比较客户端证明和服务器签名等秘密值,Arrays.equals执行短路比较,执行时间会根据匹配的前导字节数而变化。
这种行为可能允许攻击者执行定时侧信道攻击,并可能推断出敏感的身份验证材料,用户应升级到SCRAM 3.2或更高版本以缓解此问题。
具体来说,SCRAM在3.1版本中,通过将Arrays.equals替换为MessageDigest.isEqual,修复这个安全漏洞,从而确保了恒定的时间比较。
由于攻击需要高精度和反复尝试,风险是有限的,但唯一可靠的缓解措施是升级到补丁版本(3.2或更高版本)。
三、影响范围
SCRAM <= 3.1
四、修复建议
SCRAM >= 3.2
五、参考链接
