This advisory announces vulnerabilities in the following Jenkins deliverables:
mailer
Mailer Plugin 1.32 and earlier does not perform hostname validation when connecting to the configured SMTP server. This lack of validation could be abused using a man-in-the-middle attack to intercept these connections.
Mailer Plugin 1.32.1 validates the SMTP hostname when connecting via TLS by default.
In Mailer Plugin 1.32 and earlier, administrators can set the Java system property mail.smtp.ssl.checkserveridentity
to true
on startup to enable this protection.
In case of problems, this protection can be disabled again by setting the Java system property mail.smtp.ssl.checkserveridentity
to false
on startup.
email-ext
Email Extension Plugin 2.75 and earlier does not perform hostname validation when connecting to the configured SMTP server. This lack of validation could be abused using a man-in-the-middle attack to intercept these connections.
Email Extension Plugin 2.76 validates the SMTP hostname when connecting via TLS by default.
In Email Extension Plugin 2.75 and earlier, administrators can set the Java system property mail.smtp.ssl.checkserveridentity
to true
on startup to enable this protection.
Alternatively, this protection can be enabled (or disabled in the new version) via the 'Advanced Email Properties' field in the plugin’s configuration in Configure System.
In case of problems, this protection can be disabled again by setting mail.smtp.ssl.checkserveridentity
to false
using either method.
blueocean
Blue Ocean Plugin 1.23.2 and earlier provides an undocumented feature flag, blueocean.features.GIT_READ_SAVE_TYPE
, that when set to the value clone
allows an attacker with Item/Configure or Item/Create permission to read arbitrary files on the Jenkins controller file system.
Blue Ocean Plugin 1.23.3 no longer includes this feature and redirects existing usage to a safer alternative.
blueocean
Updated 2020-09-16: This entry previously misidentified the problematic behavior. The HTTP request itself is legitimate, but only authorized users should be able to perform it.
Blue Ocean Plugin 1.23.2 and earlier does not perform permission checks in several HTTP endpoints implementing connection tests.
This allows attackers with Overall/Read permission to connect to an attacker-specified URL.
Blue Ocean Plugin 1.23.3 requires Item/Create permission to perform these connection tests.
pipeline-maven
Pipeline Maven Integration Plugin 3.9.2 and earlier does not escape the upstream job’s display name shown as part of a build cause.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers with Job/Configure permission.
Pipeline Maven Integration Plugin 3.9.3 escapes upstream job names in build causes.
validating-string-parameter
Validating String Parameter Plugin 2.4 and earlier does not escape regular expressions in tooltips. Additionally, Validating String Parameter Plugin 2.4 does not escape parameter names and parameter descriptions.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers with Job/Configure permission.
Validating String Parameter Plugin 2.5 escapes regular expressions in tooltips and parameter names. Parameter descriptions are rendered using the configured markup formatter.
cloudbees-jenkins-advisor
Health Advisor by CloudBees Plugin 3.2.0 and earlier does not correctly perform a permission check in an HTTP endpoint.
This allows attackers with Overall/Read permission to view an administrative configuration page.
Health Advisor by CloudBees Plugin 3.2.1 requires Overall/Administer to view its administrative configuration page.
computer-queue-plugin
computer-queue-plugin Plugin 1.5 and earlier does not escape the agent name in tooltips.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers with Agent/Configure permission.
computer-queue-plugin Plugin 1.6 escapes the agent name in tooltips.
perfecto
Perfecto Plugin 1.17 and earlier does not perform a permission check in a method implementing a connection test.
This allows attackers with Overall/Read permission to connect to an attacker-specified HTTP URL using attacker-specified username and password.
Perfecto Plugin 1.18 requires Overall/Administer permission to perform a connection test.
perfecto
Perfecto Plugin allows specifying Perfecto Connect Path and Perfecto Connect File Name in job configurations.
This command is executed on the Jenkins controller in Perfecto Plugin 1.17 and earlier, allowing attackers with Job/Configure permission to run arbitrary commands on the Jenkins controller.
Perfecto Plugin 1.18 executes the specified commands on the agent the build is running on.
android-lint
android-lint Plugin 2.6 and earlier does not escape the annotation message in tooltips.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers able to provide report files to the 'Publish Android Lint results' post-build step.
As of publication of this advisory, there is no fix.
radiatorviewplugin
Radiator View Plugin 1.29 and earlier does not escape the full name of the jobs in tooltips.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers with Job/Configure permission.
As of publication of this advisory, there is no fix.
custom-job-icon
Custom Job Icon Plugin 0.2 and earlier does not escape the job descriptions in tooltips.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers with Job/Configure permission.
As of publication of this advisory, there is no fix.
covcomplplot
Coverage/Complexity Scatter Plot Plugin 1.1.1 and earlier does not escape the method information in tooltips.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers able to provide report files to the 'Publish Coverage / Complexity Scatter Plot' post-build step.
As of publication of this advisory, there is no fix.
description-column-plugin
Description Column Plugin 1.3 and earlier does not escape the job description in the column tooltips.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers with Job/Configure permission.
As of publication of this advisory, there is no fix.
mongodb
MongoDB Plugin 1.3 and earlier does not perform permission checks in methods implementing form validation.
This allows attackers with Overall/Read permission to gain access to some metadata of any arbitrary files on the Jenkins controller.
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.
chosen-views-tabbar
chosen-views-tabbar Plugin 1.2 and earlier does not escape view names in the dropdown to select views.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers with the ability to configure views.
As of publication of this advisory, there is no fix.
clearcase-release
ClearCase Release Plugin 0.3 and earlier does not escape the composite baseline in badge tooltip.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers with Job/Configure permission.
As of publication of this advisory, there is no fix.
locked-files-report
Locked Files Report Plugin 1.6 and earlier does not escape locked files' names in tooltips.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers with Job/Configure permission.
As of publication of this advisory, there is no fix.
elastest
ElasTest Plugin 1.2.1 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 credentials.
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.
elastest
ElasTest Plugin 1.2.1 and earlier stores its server password in plain text in the global configuration file jenkins.plugins.elastest.ElasTestInstallation.xml
.
This password can be viewed by users with access to the Jenkins controller file system.
As of publication of this advisory, there is no fix.
copy-data-to-workspace-plugin
Copy data to workspace Plugin allows users to copy files from the Jenkins controller to job workspaces.
Copy data to workspace Plugin 1.0 and earlier does not limit which directories can be copied. This allows attackers with Job/Configure permission to read arbitrary files on the Jenkins controller.
As of publication of this advisory, there is no fix.
selection-tasks-plugin
Selection tasks Plugin implements a job parameter that dynamically generates possible values from the output of a program. The path to that program is specified as part of the parameter configuration.
Selection tasks Plugin 1.0 and earlier executes this user-specified program on the Jenkins controller. This allows attackers with Job/Configure permission to execute an arbitrary system command on the Jenkins controller as the OS user that the Jenkins process is running as.
As of publication of this advisory, there is no fix.
storable-configs-plugin
Storable Configs Plugin 1.0 and earlier allows users with Job/Read permission to read arbitrary files on the Jenkins controller.
As of publication of this advisory, there is no fix.
storable-configs-plugin
Storable Configs Plugin allows storing copies of a job’s config.xml
file on the Jenkins controller with a user-specified file name.
Storable Configs Plugin 1.0 and earlier does not restrict the user-specified file name, except that a .xml
suffix is added if it’s not already present.
This allows attackers with Job/Configure permission to replace any other .xml
file on the Jenkins controller with the job’s config.xml
file’s content.
As of publication of this advisory, there is no fix.
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: