CVE-2025-67641

5.4 MEDIUM

📋 TL;DR

This stored XSS vulnerability in Jenkins Coverage Plugin allows attackers with Item/Configure permission to inject malicious JavaScript via the REST API using javascript: scheme URLs as coverage results identifiers. The vulnerability affects Jenkins instances using the Coverage Plugin, potentially enabling session hijacking, credential theft, or administrative actions. Only users with Item/Configure permission can exploit this vulnerability.

💻 Affected Systems

Products:
  • Jenkins Coverage Plugin
Versions: 2.3054.ve1ff7b_a_a_123b and earlier
Operating Systems: All platforms running Jenkins
Default Config Vulnerable: ⚠️ Yes
Notes: Requires Jenkins with Coverage Plugin installed and attackers must have Item/Configure permission on affected jobs.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could steal administrator credentials, hijack user sessions, install backdoors, or perform destructive actions on the Jenkins instance and connected systems.

🟠

Likely Case

Attackers with Item/Configure permission could steal session cookies, redirect users to malicious sites, or perform limited administrative actions within the Jenkins interface.

🟢

If Mitigated

With proper access controls limiting Item/Configure permissions to trusted users only, the attack surface is significantly reduced to authorized personnel.

🌐 Internet-Facing: MEDIUM
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires Item/Configure permission and access to Jenkins REST API. The vulnerability is specifically in API validation bypass.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.3054.ve1ff7b_a_a_123c or later

Vendor Advisory: https://www.jenkins.io/security/advisory/2025-12-10/#SECURITY-3611

Restart Required: Yes

Instructions:

1. Update Jenkins Coverage Plugin to version 2.3054.ve1ff7b_a_a_123c or later via Jenkins Plugin Manager. 2. Restart Jenkins instance. 3. Verify plugin version in Manage Jenkins > Manage Plugins.

🔧 Temporary Workarounds

Restrict Item/Configure Permissions

all

Limit Item/Configure permissions to only trusted administrators to reduce attack surface.

Disable Coverage Plugin

all

Temporarily disable the Coverage Plugin if not essential for operations.

Navigate to Manage Jenkins > Manage Plugins > Installed tab, find Coverage Plugin and click Disable

🧯 If You Can't Patch

  • Implement strict access controls to limit Item/Configure permissions to minimal trusted users only.
  • Monitor Jenkins REST API logs for suspicious coverage identifier configurations containing javascript: scheme URLs.

🔍 How to Verify

Check if Vulnerable:

Check Jenkins Coverage Plugin version in Manage Jenkins > Manage Plugins > Installed tab. If version is 2.3054.ve1ff7b_a_a_123b or earlier, the system is vulnerable.

Check Version:

Check Jenkins web interface at Manage Jenkins > Manage Plugins > Installed tab, or examine $JENKINS_HOME/plugins/coverage.jpi/META-INF/MANIFEST.MF

Verify Fix Applied:

Verify Coverage Plugin version is 2.3054.ve1ff7b_a_a_123c or later in Manage Jenkins > Manage Plugins > Installed tab.

📡 Detection & Monitoring

Log Indicators:

  • REST API calls configuring coverage results with javascript: scheme identifiers
  • Unusual coverage identifier patterns in job configurations

Network Indicators:

  • HTTP POST requests to Jenkins REST API with coverage identifier parameters containing javascript: scheme

SIEM Query:

source="jenkins" AND (uri_path="/job/*/configSubmit" OR uri_path="/createItem") AND (param="coverage.id" OR param="coverage.identifier") AND value CONTAINS "javascript:"

🔗 References

📤 Share & Export