CVE-2025-65945CVE-2025-65945是auth0/node-jws库中的一个高危安全漏洞,CVSS评分7.5。该漏洞影响版本3.2.2及之前版本以及4.0.0版本。auth0/node-jws是Node.js平台上一个流行的JSON Web Signature(JWS)实现库,广泛应用于JWT令牌签名和验证场景。漏洞根源在于当使用HS256算法时,库在特定条件下存在不正确的签名验证逻辑。具体而言,当应用程序使用jws.createVerify()函数处理HMAC算法时,如果使用来自JSON Web Signature保护头或payload的用户提供数据来执行HMAC密钥查找操作,攻击者可以构造恶意请求绕过签名验证机制。由于HS256算法使用对称密钥进行签名和验证,攻击者可以通过精心构造的JWT令牌,利用用户可控的header或payload字段注入伪造的密钥标识符,从而骗过验证逻辑。这使得攻击者可以在不知道合法密钥的情况下生成有效的签名令牌,可能导致身份验证绕过、权限提升等严重安全问题。该漏洞已通过发布3.2.3和4.0.1版本进行修复。
auth0/node-jws库的CVE-2025-65945漏洞源于其jws.createVerify()函数在处理HS256(HMAC-SHA256)算法时的不安全实现。漏洞的核心问题在于签名验证过程中,HMAC密钥的查找机制依赖于攻击者可控制的数据。在正常的JWS验证流程中,验证方需要使用与签名方相同的密钥来验证签名完整性。然而,当应用程序将JWS的保护头(protected header)或payload中的字段值用于密钥查找时,攻击者可以通过注入特定的算法标识符或密钥ID来操纵验证逻辑。具体攻击手法包括:1)攻击者构造一个JWS令牌,将alg头字段设置为HS256;2)将密钥查找相关的字段(如kid)设置为攻击者已知或可预测的值;3)使用该值对应的密钥对令牌进行签名;4)验证方在查找密钥时会使用攻击者提供的值,从而接受伪造的签名。由于HS256使用对称密钥,攻击者只需要找到系统中任何使用相同密钥的合法用户,即可生成有效的令牌。漏洞的技术根源在于库未能确保密钥查找过程与签名验证过程的隔离,违反了JWS规范中关于密钥选择的安全建议。