This advisory announces vulnerabilities in the following Jenkins deliverables:
git-client
Git client Plugin 3.11.0 and earlier does not perform SSH host key verification when connecting to Git repositories via SSH.
This lack of verification could be abused using a man-in-the-middle attack to intercept these connections.
Git client Plugin 3.11.1 provides strategies for performing host key verification for administrators to select the one that meets their security needs. For more information see the plugin documentation.
git
Git Plugin provides a webhook endpoint at /git/notifyCommit
that can be used to notify Jenkins of changes to an SCM repository.
For its most basic functionality, this endpoint receives a repository URL, and Jenkins will schedule polling for all jobs configured with the specified repository.
In Git Plugin 4.11.3 and earlier, this endpoint can be accessed with GET requests and without authentication.
In addition to this basic functionality, the endpoint also accept a sha1
parameter specifying a commit ID.
If this parameter is specified, jobs configured with the specified repo will be triggered immediately, and the build will check out the specified commit.
Additionally, the output of the webhook endpoint will provide information about which jobs were triggered or scheduled for polling, including jobs the user has no permission to access.
This allows attackers with knowledge of Git repository URLs to trigger builds of jobs using a specified Git repository and to cause them to check out an attacker-specified commit, and to obtain information about the existence of jobs configured with this Git repository.
Additionally, this webhook endpoint does not require POST requests, resulting in a cross-site request forgery (CSRF) vulnerability.
Git Plugin 4.11.4 requires a token
parameter which will act as an authentication for the webhook endpoint.
While GET requests remain allowed, attackers would need to be able to provide a webhook token.
For more information see the plugin documentation.
github
GitHub Plugin 1.34.4 and earlier does not use a constant-time comparison when checking whether the provided and computed webhook signatures are equal.
This could potentially allow attackers to use statistical methods to obtain a valid webhook signature.
GitHub Plugin 1.34.5 uses a constant-time comparison when validating the webhook signature.
external-monitor-job
External Monitor Job Type Plugin 191.v363d0d1efdf8 and earlier does not require POST requests for an HTTP endpoint, resulting in a cross-site request forgery (CSRF) vulnerability.
This vulnerability allows attackers to create runs of an external job.
External Monitor Job Type Plugin 192.ve979ca_8b_3ccd requires POST requests for the affected HTTP endpoint.
jobConfigHistory
Job Configuration History Plugin 1155.v28a_46a_cc06a_5 and earlier does not require POST requests for several HTTP endpoints, resulting in cross-site request forgery (CSRF) vulnerabilities.
These vulnerabilities allow attackers to delete entries from job, agent, and system configuration history, or restore older versions of job, agent, and system configurations.
Job Configuration History Plugin 1156.v536a_97b_8d649 requires POST requests for the affected HTTP endpoints.
hashicorp-vault-plugin
HashiCorp Vault Plugin 354.vdb_858fd6b_f48 and earlier does not perform permission checks in several HTTP endpoints performing Vault connection tests.
This allows attackers with Overall/Read permission to obtain credentials stored in Vault with attacker-specified path and keys.
HashiCorp Vault Plugin 355.v3b_38d767a_b_a_8 requires Overall/Administer permission to perform Vault connection tests.
deployer-framework
Deployer Framework Plugin 85.v1d1888e8c021 and earlier does not restrict the application path of the applications when configuring a deployment.
This allows attackers with Item/Configure permission to upload arbitrary files from the Jenkins controller file system to the selected service.
Deployer Framework Plugin 86.v7b_a_4a_55b_f3ec ensures that only build artifacts can be uploaded.
deployer-framework
Deployer Framework Plugin 85.v1d1888e8c021 and earlier does not restrict the name of files in methods implementing form validation.
This allows attackers with Item/Read permission to check for the existence of an attacker-specified file path on the Jenkins controller file system.
Deployer Framework Plugin 86.v7b_a_4a_55b_f3ec ensures that only files contained inside the expected directory can be accessed.
deployer-framework
Deployer Framework Plugin 85.v1d1888e8c021 and earlier does not perform a permission check in an HTTP endpoint.
This allows attackers with Item/Read permission to read deployment logs.
Deployer Framework Plugin 86.v7b_a_4a_55b_f3ec requires Deploy Now/Deploy permission to read deployment logs.
rhnpush-plugin
rhnpush-plugin Plugin 0.5.1 and earlier does not perform a permission check in a method implementing form validation.
This allows attackers with Item/Read permission but without Item/Workspace or Item/Configure permission to check whether attacker-specified file patterns match workspace contents. A sequence of requests can be used to effectively list workspace contents.
rhnpush-plugin Plugin 0.5.2 requires Item/Workspace permission to validate patterns with workspace contents.
rpmsign-plugin
rpmsign-plugin Plugin 0.5.0 and earlier does not perform a permission check in a method implementing form validation.
This allows attackers with Item/Read permission but without Item/Workspace or Item/Configure permission to check whether attacker-specified file patterns match workspace contents. A sequence of requests can be used to effectively list workspace contents.
rpmsign-plugin Plugin 0.5.1 requires Item/Workspace permission to validate patterns with workspace contents.
clif-performance-testing
CLIF Performance Testing Plugin 64.vc0d66de1dfb_f and earlier allows users to extract files from an archive without validating file paths of files contained within the archive.
This allows attackers with Overall/Read permission to create or replace arbitrary files on the Jenkins controller file system with attacker-specified content.
As of publication of this advisory, there is no fix. Learn why we announce this.
compuware-topaz-utilities
Compuware Topaz Utilities Plugin 1.0.8 and earlier does not perform permission checks in several HTTP endpoints.
This allows attackers with Overall/Read permission to enumerate hosts and ports of Compuware configurations and credentials IDs of credentials stored in Jenkins. Those credentials IDs can be used as part of an attack to capture the credentials using another vulnerability.
Compuware Topaz Utilities Plugin 1.0.9 requires the appropriate permissions to enumerate hosts and ports of Compuware configurations and credentials IDs.
compuware-scm-downloader
Compuware Source Code Download for Endevor, PDS, and ISPW Plugin 2.0.12 and earlier does not perform permission checks in several HTTP endpoints.
This allows attackers with Overall/Read permission to enumerate hosts and ports of Compuware configurations and credentials IDs of credentials stored in Jenkins. Those credentials IDs can be used as part of an attack to capture the credentials using another vulnerability.
Compuware Source Code Download for Endevor, PDS, and ISPW Plugin 2.0.13 requires the appropriate permissions to enumerate hosts and ports of Compuware configurations and credentials IDs.
compuware-xpediter-code-coverage
Compuware Xpediter Code Coverage Plugin 1.0.7 and earlier does not perform permission checks in several HTTP endpoints.
This allows attackers with Overall/Read permission to enumerate hosts and ports of Compuware configurations and credentials IDs of credentials stored in Jenkins. Those credentials IDs can be used as part of an attack to capture the credentials using another vulnerability.
Compuware Xpediter Code Coverage Plugin 1.0.8 requires the appropriate permissions to enumerate hosts and ports of Compuware configurations and credentials IDs.
compuware-ispw-operations
Compuware ISPW Operations Plugin 1.0.8 and earlier does not perform permission checks in several HTTP endpoints.
This allows attackers with Overall/Read permission to enumerate hosts and ports of Compuware configurations and credentials IDs of credentials stored in Jenkins. Those credentials IDs can be used as part of an attack to capture the credentials using another vulnerability.
Compuware ISPW Operations Plugin 1.0.9 requires the appropriate permissions to enumerate hosts and ports of Compuware configurations and credentials IDs.
compuware-ispw-operations
Compuware ISPW Operations Plugin defines a controller/agent message that retrieves Java system properties.
Compuware ISPW Operations Plugin 1.0.8 and earlier does not restrict execution of the controller/agent message to agents. This allows attackers able to control agent processes to retrieve Java system properties.
This vulnerability is only exploitable in Jenkins 2.318 and earlier, LTS 2.303.2 and earlier. See the LTS upgrade guide. |
Compuware ISPW Operations Plugin 1.0.9 does not allow the affected controller/agent message to be submitted by agents for execution on the controller.
compuware-zadviser-api
Compuware zAdviser API Plugin defines a controller/agent message that retrieves Java system properties.
Compuware zAdviser API Plugin 1.0.3 and earlier does not restrict execution of the controller/agent message to agents. This allows attackers able to control agent processes to retrieve Java system properties.
This vulnerability is only exploitable in Jenkins 2.318 and earlier, LTS 2.303.2 and earlier. See the LTS upgrade guide. |
Compuware zAdviser API Plugin 1.0.4 does not allow the affected controller/agent message to be submitted by agents for execution on the controller.
http_request
HTTP Request Plugin 1.15 and earlier stores HTTP Request passwords unencrypted in its global configuration file jenkins.plugins.http_request.HttpRequest.xml
on the Jenkins controller as part of its configuration when using (deprecated) Basic/Digest Authentication.
These passwords can be viewed by users with access to the Jenkins controller file system.
As of publication of this advisory, there is no fix. Learn why we announce this.
dynamic_extended_choice_parameter
Dynamic Extended Choice Parameter Plugin 1.0.1 and earlier does not escape several fields of Moded Extended Choice parameters.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers with Item/Configure permission.
As of publication of this advisory, there is no fix. Learn why we announce this.
repository-connector
Repository Connector Plugin 2.2.0 and earlier does not perform permission checks in several HTTP endpoints.
This allows attackers with Overall/Read permission to enumerate credentials IDs of credentials stored in Jenkins. Those can be used as part of an attack to capture the credentials using another vulnerability.
As of publication of this advisory, there is no fix. Learn why we announce this.
repository-connector
Repository Connector Plugin 2.2.0 and earlier does not perform a permission check in a method implementing form validation.
This allows attackers with Overall/Read permission to check for the existence of an attacker-specified file path on the Jenkins controller file system. A sequence of requests can be used to effectively list the Jenkins controller file system.
As of publication of this advisory, there is no fix. Learn why we announce this.
maven-metadata-plugin
Maven Metadata Plugin for Jenkins CI server Plugin 2.2 and earlier does not perform URL validation for the Repository Base URL of List maven artifact versions parameters.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers with Item/Configure permission.
As of publication of this advisory, there is no fix. Learn why we announce this.
openshift-deployer
OpenShift Deployer Plugin 1.2.0 and earlier does not perform a permission check in a method implementing form validation.
This allows attackers with Overall/Read permission to connect to an attacker-specified URL using attacker-specified username and password.
Additionally, this form validation method does not require POST requests, resulting in a cross-site request forgery (CSRF) vulnerability.
As of publication of this advisory, there is no fix. Learn why we announce this.
openshift-deployer
OpenShift Deployer Plugin 1.2.0 and earlier does not perform permission checks in methods implementing form validation.
This allows attackers with Overall/Read permission to check for the existence of an attacker-specified file path on the Jenkins controller file system and to upload a SSH key file from the Jenkins controller file system to an attacker-specified URL.
Additionally, these form validation methods do not require POST requests, resulting in a cross-site request forgery (CSRF) vulnerability.
As of publication of this advisory, there is no fix. Learn why we announce this.
lucene-search
Lucene-Search Plugin 370.v62a5f618cd3a and earlier does not perform permission checks in several HTTP endpoints.
This allows attackers with Overall/Read permission to reindex the database and to obtain information about jobs otherwise inaccessible to them.
As of publication of this advisory, there is no fix. Learn why we announce this.
openstack-heat
openstack-heat Plugin 1.5 and earlier does not perform permission checks in methods implementing form validation.
This allows attackers with Overall/Read permission to connect to an attacker-specified URL.
Additionally, these form validation methods do not require POST requests, resulting in a cross-site request forgery (CSRF) vulnerability.
As of publication of this advisory, there is no fix. Learn why we announce this.
openstack-heat
openstack-heat Plugin 1.5 and earlier does not perform permission checks in methods implementing form validation.
This allows attackers with Overall/Read permission to check for the existence of an attacker-specified file path on the Jenkins controller file system. A sequence of requests can be used to effectively list the Jenkins controller file system.
As of publication of this advisory, there is no fix. Learn why we announce this.
files-found-trigger
Files Found Trigger Plugin 1.5 and earlier does not perform a permission check in a method implementing form validation.
This allows attackers with Overall/Read permission to check for the existence of an attacker-specified file path on the Jenkins controller file system. A sequence of requests can be used to effectively list the Jenkins controller file system.
As of publication of this advisory, there is no fix. Learn why we announce this.
android-signing
Android Signing Plugin 2.2.5 and earlier does not perform a permission check in a method implementing form validation.
This allows attackers with Item/Read permission but without Item/Workspace or Item/Configure permission to check whether attacker-specified file patterns match workspace contents. A sequence of requests can be used to effectively list workspace contents.
As of publication of this advisory, there is no fix. Learn why we announce this.
google-cloud-backup
Google Cloud Backup Plugin 0.6 and earlier does not perform a permission check in an HTTP endpoint.
This allows attackers with Overall/Read permission to request a manual backup.
Additionally, this HTTP endpoint does not require POST requests, resulting in a cross-site request forgery (CSRF) vulnerability.
As of publication of this advisory, there is no fix. Learn why we announce this.
buckminster
Buckminster Plugin 1.1.1 and earlier does not perform a permission check in a method implementing form validation.
This allows attackers with Overall/Read permission to check for the existence of an attacker-specified file path on the Jenkins controller file system. A sequence of requests can be used to effectively list the Jenkins controller file system.
As of publication of this advisory, there is no fix. Learn why we announce this.
coverity
Coverity Plugin 1.11.4 and earlier does not perform a permission check in an HTTP endpoint.
This allows attackers with Overall/Read permission to enumerate credentials IDs of credentials stored in Jenkins. Those can be used as part of an attack to capture the credentials using another vulnerability.
As of publication of this advisory, there is no fix. Learn why we announce this.
coverity
Coverity Plugin 1.11.4 and earlier does not perform a permission check in an HTTP endpoint.
This allows attackers with Overall/Read permission to connect to an attacker-specified URL using attacker-specified credentials IDs obtained through another method, capturing credentials stored in Jenkins.
Additionally, this HTTP endpoint does not require POST requests, resulting in a cross-site request forgery (CSRF) vulnerability.
As of publication of this advisory, there is no fix. Learn why we announce this.
lucene-search
Lucene-Search Plugin 370.v62a5f618cd3a and earlier does not escape the search query
parameter displayed on the search result page.
This results in a reflected cross-site scripting (XSS) vulnerability.
As of publication of this advisory, there is no fix. Learn why we announce this.
These versions include fixes to the vulnerabilities described above. All prior versions are considered to be affected by these vulnerabilities unless otherwise indicated.
As of publication of this advisory, no fixes are available for the following plugins:
Learn why we announce these issues.
The Jenkins project would like to thank the reporters for discovering and reporting these vulnerabilities: