Jenkins Security Advisory 2020-09-16

This advisory announces vulnerabilities in the following Jenkins deliverables:

Descriptions

Missing hostname validation in Mailer Plugin

SECURITY-1813 / CVE-2020-2252

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.

Missing hostname validation in Email Extension Plugin

SECURITY-1851 / CVE-2020-2253

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.

Path traversal vulnerability in Blue Ocean Plugin

SECURITY-1956 / CVE-2020-2254

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.

Missing permission check in Blue Ocean Plugin

SECURITY-1961 / CVE-2020-2255

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.

Stored XSS vulnerability in upstream cause in Pipeline Maven Integration Plugin

SECURITY-1976 / CVE-2020-2256

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.

Stored XSS vulnerability in Validating String Parameter Plugin

SECURITY-1935 / CVE-2020-2257

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.

Incorrect permission check in Health Advisor by CloudBees Plugin

SECURITY-1998 / CVE-2020-2258

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.

Stored XSS vulnerability in computer-queue-plugin Plugin

SECURITY-1912 / CVE-2020-2259

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.

Missing permission check in Perfecto Plugin

SECURITY-1979 / CVE-2020-2260

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.

OS command execution vulnerability in Perfecto Plugin

SECURITY-1980 / CVE-2020-2261

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.

Stored XSS vulnerability in Android Lint Plugin

SECURITY-1908 / CVE-2020-2262

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.

Stored XSS vulnerability in Radiator View Plugin

SECURITY-1927 / CVE-2020-2263

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.

Stored XSS vulnerability in Custom Job Icon Plugin

SECURITY-1914 / CVE-2020-2264

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.

Stored XSS vulnerability in Coverage/Complexity Scatter Plot Plugin

SECURITY-1913 / CVE-2020-2265

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.

Stored XSS vulnerability in Description Column Plugin

SECURITY-1916 / CVE-2020-2266

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.

CSRF vulnerability and missing permission checks in MongoDB Plugin

SECURITY-1904 / CVE-2020-2267 (missing permission check), CVE-2020-2268 (CSRF)

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.

Stored XSS vulnerability in chosen-views-tabbar Plugin

SECURITY-1869 / CVE-2020-2269

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.

Stored XSS vulnerability in ClearCase Release Plugin

SECURITY-1911 / CVE-2020-2270

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.

Stored XSS vulnerability in Locked Files Report Plugin

SECURITY-1921 / CVE-2020-2271

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.

CSRF vulnerability and missing permission checks in ElasTest Plugin

SECURITY-1903 / CVE-2020-2272 (missing permission check), CVE-2020-2273 (CSRF)

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.

Passwords stored in plain text by ElasTest Plugin

SECURITY-2014 / CVE-2020-2274

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.

Arbitrary file read vulnerability in Copy data to workspace Plugin

SECURITY-1966 / CVE-2020-2275

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.

System command execution vulnerability in Selection tasks Plugin

SECURITY-1967 / CVE-2020-2276

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.

Arbitrary file read vulnerability in Storable Configs Plugin

SECURITY-1968 (1) / CVE-2020-2277

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.

Arbitrary file write vulnerability in Storable Configs Plugin

SECURITY-1968 (2) / CVE-2020-2278

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.

Severity

Affected Versions

  • Android Lint Plugin up to and including 2.6
  • Blue Ocean Plugin up to and including 1.23.2
  • chosen-views-tabbar Plugin up to and including 1.2
  • ClearCase Release Plugin up to and including 0.3
  • computer-queue-plugin Plugin up to and including 1.5
  • Copy data to workspace Plugin up to and including 1.0
  • Coverage/Complexity Scatter Plot Plugin up to and including 1.1.1
  • Custom Job Icon Plugin up to and including 0.2
  • Description Column Plugin up to and including 1.3
  • ElasTest Plugin up to and including 1.2.1
  • Email Extension Plugin up to and including 2.75
  • Health Advisor by CloudBees Plugin up to and including 3.2.0
  • Locked Files Report Plugin up to and including 1.6
  • Mailer Plugin up to and including 1.32
  • MongoDB Plugin up to and including 1.3
  • Perfecto Plugin up to and including 1.17
  • Pipeline Maven Integration Plugin up to and including 3.9.2
  • Radiator View Plugin up to and including 1.29
  • Selection tasks Plugin up to and including 1.0
  • Storable Configs Plugin up to and including 1.0
  • Validating String Parameter Plugin up to and including 2.4

Fix

  • Blue Ocean Plugin should be updated to version 1.23.3
  • computer-queue-plugin Plugin should be updated to version 1.6
  • Email Extension Plugin should be updated to version 2.76
  • Health Advisor by CloudBees Plugin should be updated to version 3.2.1
  • Mailer Plugin should be updated to version 1.32.1
  • Perfecto Plugin should be updated to version 1.18
  • Pipeline Maven Integration Plugin should be updated to version 3.9.3
  • Validating String Parameter Plugin should be updated to version 2.5

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:

  • Android Lint Plugin
  • chosen-views-tabbar Plugin
  • ClearCase Release Plugin
  • Copy data to workspace Plugin
  • Coverage/Complexity Scatter Plot Plugin
  • Custom Job Icon Plugin
  • Description Column Plugin
  • ElasTest Plugin
  • Locked Files Report Plugin
  • MongoDB Plugin
  • Radiator View Plugin
  • Selection tasks Plugin
  • Storable Configs Plugin

Credit

The Jenkins project would like to thank the reporters for discovering and reporting these vulnerabilities:

  • Daniel Beck, CloudBees, Inc. for SECURITY-1966, SECURITY-1967, SECURITY-1968 (1), SECURITY-1968 (2), SECURITY-1976
  • Jinchen Sheng, Ant Security FG Lab. for SECURITY-1956, SECURITY-1961
  • Matt Sicker, CloudBees, Inc. for SECURITY-1998
  • Peter Stöckli (via Github Security Lab) for SECURITY-1813
  • Wadeck Follonier, CloudBees, Inc. for SECURITY-1869, SECURITY-1903, SECURITY-1904, SECURITY-1908, SECURITY-1911, SECURITY-1912, SECURITY-1913, SECURITY-1914, SECURITY-1916, SECURITY-1921, SECURITY-1927, SECURITY-2014
  • Wadeck Follonier, CloudBees, Inc. and Daniel Beck, CloudBees, Inc. for SECURITY-1935