CVE-2025-68925Jervis是一个用于Job DSL插件脚本和共享Jenkins管道库的库。该漏洞存在于2.2版本之前,代码未验证JWT(JSON Web Token)头部中指定的算法字段是否确实为RS256。在JWT标准中,alg字段用于声明签名算法,攻击者可利用算法混淆(algorithm confusion)攻击,通过将alg设置为none或切换为较弱的算法(如HS256),然后使用公钥作为HMAC密钥进行签名,从而绕过签名验证。这使得攻击者可以伪造任意JWT令牌,以任意用户身份访问系统资源,执行未经授权的操作。该漏洞无需认证即可利用,且可远程触发,对使用Jervis库进行Jenkins自动化构建和部署的系统构成安全威胁。
JWT(JSON Web Token)是一种常用的身份认证机制,通过数字签名确保令牌内容不可篡改。标准的JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。头部中的alg字段声明了签名算法,常见的包括RS256(RSA签名)、HS256(HMAC签名)等。Jervis库在2.2版本之前,未对JWT头部的alg字段进行严格验证,允许任意算法被接受。攻击者可以利用以下方式利用此漏洞:1)将alg设置为none,删除签名部分,从而创建未签名的令牌;2)将RS256算法切换为HS256,并使用服务器的RSA公钥作为HMAC密钥伪造签名。由于Jervis使用RSA公钥验证RS256签名的令牌,攻击者只需获取该公钥,即可使用相同的公钥作为HS256密钥生成有效签名。成功利用此漏洞后,攻击者可以伪造管理员或其他特权用户的JWT令牌,获取完整的系统访问权限,执行任意Job DSL脚本或管道操作。