Jenkins Coverage Plugin
CVE-2025-67641
MEDIUM
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with Item/Configure permission
-
DeliverySubmit job config via REST API bypassing UI validation
-
ExploitStore javascript: URL as coverage results ID
-
ExecutionVictim opens coverage results page
-
ImpactScript executes in victim's Jenkins session
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an attacker account with Jenkins Item/Configure permission and use of the REST API to submit the job configuration, because the |
| Impact | This is a moderate-risk, authenticated stored XSS (CVSS 5.4, CWE-79) rather than a high-urgency issue. The CVSS vector CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N shows it is network-reachable with low complexity, but requires an authenticated attacker holding Item/Configure permission (PR:L) and victim interaction (UI:R) to view the tainted coverage results - meaning it is not a drive-by, unauthenticated flaw. The scope change (S:C) and low confidentiality/integrity impact reflect that injected script executes in another user's browser context against the Jenkins UI. Exploitation signals are quiet and consistent: EPSS is low at 0.31% (22nd percentile), the CVE is NOT in CISA KEV, and no public proof-of-concept is referenced - so there is no public exploit identified at time of analysis and no evidence of active exploitation. The signals do not conflict: a low EPSS and absent KEV/POC align with a privilege-gated XSS that depends on an attacker already trusted with job-configuration rights. Priority is appropriate for routine patching rather than emergency response, with higher relative concern in multi-tenant Jenkins installations where low-trust users hold Item/Configure. |
| Exploit ScenarioDerived | An attacker who already has Item/Configure permission on a Jenkins instance submits a job configuration through the REST API (bypassing the UI-only validation) that sets a coverage results ID to a |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Stored cross-site scripting in the Jenkins Coverage Plugin (2.3054.ve1ff7b_a_a_123b_ and earlier) lets an authenticated user with Item/Configure permission set a javascript:-scheme URL as the coverage results ID by submitting the job configuration through the REST API, a path that bypasses the UI validation that would otherwise reject it. The injected script then executes in the browser of any user who opens the affected job's coverage results page (CVSS 5.4, CWE-79), giving script execution limited to the victim's session (low confidentiality and integrity impact). No public exploit code has been identified at time of analysis and EPSS is low at 0.31% (22nd percentile); the practical risk is concentrated in multi-tenant or lower-trust Jenkins deployments where non-administrators are permitted to configure jobs.
RemediationAI
Patch available per vendor advisory: consult https://www.jenkins.io/security/advisory/2025-12-10/#SECURITY-3611 for the fixed Coverage Plugin version and upgrade through the Jenkins update center or by manually installing the corrected .hpi/.jpi; the provided data does not enumerate the exact fixed version number, so the advisory should be treated as the source of truth rather than assuming a version. If immediate upgrade is not possible, reduce exposure by restricting Item/Configure permission to fully trusted users only (this directly removes the PR:L prerequisite, but it may impede legitimate delegated job administration) and by auditing existing job configurations and stored coverage results for javascript: identifiers, which can be done by reviewing job config.xml files or the Jenkins script console. Because the validation gap is specifically on the REST API path, disabling or firewalling the Jenkins REST API is not a practical workaround for most installations (it breaks automation and CLI tooling), so access control and configuration auditing are the realistic compensating controls; additionally, keeping Jenkins itself current helps because recent Jenkins releases enable Content-Security-Policy protections that can limit the impact of injected script, though plugin UI behavior should be tested before relying on this.
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in maven
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
This is a stored cross-site scripting flaw (CWE-79) rooted in inconsistent input validation across two code paths in the Jenkins Coverage Plugin. The plugin validates the configured coverage results identifier only when the job configuration is submitted through the Jenkins UI, but the same value is accepted without validation when coverage results are created, meaning the REST API provides the bypass. Because the identifier is persisted and later rendered on the coverage results page, a javascript: scheme URL supplied as the identifier becomes a stored XSS payload. The CVSS vector CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N indicates network accessibility, low complexity, but exploitation requires an authenticated account with Item/Configure permission (PR:L) and requires a victim to view the affected page (UI:R); the changed scope (S:C) and low C/I impact reflect script execution bounded by the victim's browser session rather than server compromise. The CPE entry cpe:2.3:a:jenkins:coverage:*:*:*:*:*:jenkins:*:* confirms the affected component is the Jenkins Coverage plugin across its version range up to 2.3054.ve1ff7b_a_a_123b_.
Know when Coverage gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
Attacker needs Item/Configure permission (PR:L) and a victim must view the results (UI:R); stored XSS crosses into the victim's browser context (S:C) with limited C/I and no availability impact.
Primary rating from NVD.
CVSS VectorNVD
DescriptionNVD
Jenkins Coverage Plugin 2.3054.ve1ff7b_a_a_123b_ and earlier does not validate the configured coverage results ID when creating coverage results, only when submitting the job configuration through the UI, allowing attackers with Item/Configure permission to use a javascript: scheme URL as identifier by configuring the job through the REST API, resulting in a stored cross-site scripting (XSS) vulnerability.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
NVD
CVE.org
EPSS
GitHub PoC
Exploit-DB