CVE-2025-68702Jervis是一个用于Job DSL插件脚本和共享Jenkins管道库的Ruby库。该漏洞存在于2.2版本之前,源于SHA-256哈希值处理时的填充长度错误。开发者在处理SHA-256产生的十六进制哈希字符串时,使用了padLeft(32, '0')进行左填充,但SHA-256算法产生32字节数据,对应64个十六进制字符,因此正确的填充长度应为padLeft(64, '0')。这一看似微小的实现错误可能导致哈希字符串处理异常,影响依赖哈希值进行完整性校验的功能模块。攻击者可通过构造特定输入触发此漏洞,从而可能绕过安全验证机制或导致数据完整性问题。由于该漏洞位于库层面,所有使用Jervis进行哈希处理的应用都可能受到影响。
该漏洞的技术根源在于SHA-256哈希值到十六进制字符串转换过程中的填充逻辑错误。在Ruby实现中,SHA-256摘要产生32字节(256位)的二进制数据,当转换为十六进制字符串表示时,需要64个十六进制字符(每个字节用2个十六进制字符表示)。然而,问题代码使用了padLeft(32, '0'),这意味着当哈希字符串长度不足32时,会用'0'字符填充到32位长度,而非正确的64位。这导致:1)哈希字符串被错误截断或填充;2)依赖哈希值进行校验的功能可能接受无效或恶意的哈希值;3)可能引发潜在的哈希碰撞或验证绕过。攻击者可以通过提供精心构造的输入数据,利用此填充错误生成符合错误填充规则的哈希值,从而绕过依赖哈希校验的安全机制。由于CVSS评分显示完整性影响为高(I:H)且无需认证(PR:N),攻击者可在无需身份验证的情况下远程利用此漏洞。