CVE-2025-68703
Java vulnerability analysis and mitigation

Overview

CVE-2025-68703 is a weak salt derivation vulnerability in Jervis, a Groovy library for Jenkins Job DSL plugin scripts and shared pipeline libraries. Prior to version 2.2, the PBKDF2 salt was derived deterministically from sha256Sum(passphrase), meaning two encryption operations using the same password would always produce the same derived key — completely undermining the security of the encryption scheme (CWE-326: Inadequate Encryption Strength). The vulnerability affects all Jervis versions before 2.2 (Maven package net.gleske:jervis). It was disclosed on January 13, 2026, via a GitHub Security Advisory. The CVSS v3.1 base score is 7.5 (High), and the CVSS v4.0 base score is 8.7 (High) (GitHub Advisory).

Technical details

The root cause is in SecurityIO.groovy (lines 869–870 and 894–895 of the pre-patch codebase), where the salt for PBKDF2 key derivation is computed as sha256Sum(passphrase).toLowerCase() — a deterministic function of the password itself rather than a cryptographically random value (GitHub Advisory). Because the salt is fixed for any given password, an attacker who obtains ciphertext can pre-compute derived keys for commonly used passwords (rainbow table or pre-computation attack, per CAPEC-20 and CAPEC-112) without needing to brute-force each ciphertext independently. The vulnerability is classified as CWE-326 (Inadequate Encryption Strength). No authentication or user interaction is required to exploit the weakness, as the attacker only needs access to the encrypted ciphertext stored at rest. The fix in version 2.2 generates a cryptographically random salt for each encryption operation and stores it alongside the ciphertext, and also migrates from AES-256-CBC to AES-256-GCM authenticated encryption (Patch Commit).

Impact

Successful exploitation allows an attacker to decrypt sensitive data encrypted by Jervis, including credentials, API keys, and other secrets stored in Jenkins Job DSL plugin scripts and shared pipeline libraries. Because the derived encryption key is identical for any two uses of the same password, pre-computed key tables can be used to efficiently break encryption at rest without brute-forcing each ciphertext individually. The impact is limited to confidentiality (no integrity or availability impact), but the exposure of CI/CD pipeline secrets could enable lateral movement into connected systems, source code repositories, or cloud infrastructure. The advisory notes severity is considered low for internal library uses but high for consumers of the library who store sensitive secrets (GitHub Advisory).

Exploitation steps

  1. Obtain ciphertext: Gain access to encrypted secrets stored by a Jervis-based Jenkins deployment (e.g., from a Jenkins configuration file, pipeline YAML, or CipherMap output stored in a repository or artifact store).
  2. Identify the password/passphrase: Determine or guess the passphrase used for encryption. Since the salt is derived from the passphrase itself (sha256Sum(passphrase)), the key space is reduced to the passphrase space.
  3. Pre-compute derived keys: For a dictionary of common passphrases, compute sha256Sum(passphrase) as the salt and run PBKDF2 with that salt to derive the AES-256 key — replicating the exact key derivation used by the vulnerable SecurityIO.groovy code.
  4. Attempt decryption: Use each pre-computed key to attempt AES-256-CBC decryption of the captured ciphertext. A successful decryption (valid padding/plaintext) reveals the plaintext secret.
  5. Leverage exposed secrets: Use the recovered credentials, API keys, or tokens to access downstream systems such as cloud providers, source code repositories, or other Jenkins-integrated services (GitHub Advisory, Patch Commit).

Mitigation and workarounds

Upgrade Jervis to version 2.2 or later, which generates a cryptographically random salt for each encryption operation and stores it alongside the ciphertext. No workarounds are available for the vulnerable versions. After upgrading, organizations should rotate all credentials, API keys, and secrets that were encrypted using Jervis prior to version 2.2, as those values may have been encrypted with deterministic keys. Note that CipherMap encrypted data will be discarded upon upgrading to 2.2 (a documented breaking change), and new tokens will be issued automatically for GitHub App authentication (GitHub Advisory, Patch Commit).

Community reactions

The vulnerability was published by the project maintainer (samrocketman) via GitHub Security Advisory on January 13, 2026, with a self-assessed severity of High. The advisory explicitly references NIST SP 800-132 as the standard for proper password-based key derivation. Community discussion appears limited, with the vulnerability noted in automated security feeds and vulnerability aggregators shortly after disclosure (GitHub Advisory).

Additional resources


SourceThis report was generated using AI

Related Java vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-p279-2cqp-84jgCRITICAL9.6
  • Java logoJava
  • org.openidentityplatform.opendj:opendj-server-legacy
NoYesJul 24, 2026
GHSA-fp43-vj7g-pg92HIGH7.5
  • Java logoJava
  • org.omnifaces:omnifaces
NoYesJul 24, 2026
GHSA-7ppr-r889-mcf2HIGH7.5
  • Java logoJava
  • org.http4s:http4s-blaze-server_2.12
NoYesJul 24, 2026
GHSA-mhvj-jhpq-885vHIGH7.4
  • Java logoJava
  • org.http4s:http4s-blaze-server_2.13
NoYesJul 24, 2026
GHSA-46q4-43ph-c6frHIGH7.4
  • Java logoJava
  • org.http4s:blaze-http_2.12
NoYesJul 24, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management