Jenkins Security Advisory 2019-08-28

This advisory announces vulnerabilities in the following Jenkins deliverables:

Descriptions

Stored XSS vulnerability in update center

SECURITY-1453 / CVE-2019-10383

Jenkins did not properly escape the update site URL in some status messages shown in the update center, resulting in a stored cross-site scripting vulnerability that is exploitable by administrators and affects other administrators.

Jenkins now escapes the update site URL in status messages shown in the update center.

CSRF protection tokens for anonymous users did not expire in some circumstances

SECURITY-1491 / CVE-2019-10384

Jenkins allowed the creation of CSRF tokens without a corresponding web session ID. This is the result of an incomplete fix for SECURITY-626 in the 2019-07-17 security advisory. This allowed attackers able to obtain a CSRF token without associated session ID to implement CSRF attacks with the following constraints:

  • The token had to be created for the anonymous user (and could only be used for actions the anonymous user can perform).

  • The victim’s IP address needed to remain unchanged (unless the proxy compatibility option was enabled).

  • The victim must not have a valid web session at the time of the attack.

CSRF token generation now creates a web session if none exists yet, so that the lack of a web session ID cannot be exploited.

Note
This fix may impact scripts that obtain a crumb from the crumb issuer API. They may need to be updated to retain the session ID for subsequent requests. For further information, see the LTS upgrade guide.

As a workaround, administrators can remove any permissions granted to the anonymous user so that no privileged actions can be taken. Alternatively, the Strict Crumb Issuer Plugin can be used instead of the built-in default crumb issuer to prevent this issue, because the vulnerability is not present in the plugin.

Sandbox Bypass in Splunk Plugin

SECURITY-1294 / CVE-2019-10390

Splunk Plugin has a form validation HTTP endpoint used to validate a user-submitted Groovy script through compilation, which was not subject to sandbox protection. This allowed attackers with Overall/Read access to execute arbitrary code on the Jenkins controller by applying AST transforming annotations such as @Grab to source code elements.

The affected HTTP endpoint now applies a safe Groovy compiler configuration preventing the use of unsafe AST transforming annotations.

Deprecated: IBM AppScan Plugin showed plain text password in job configuration form fields

SECURITY-1512 / CVE pending

Deprecated: IBM AppScan Plugin stores service passwords in job configurations.

While the password is stored encrypted on disk, it was transmitted in plain text as part of the configuration form. This could result in exposure of the password through browser extensions, cross-site scripting vulnerabilities, and similar situations.

Deprecated: IBM AppScan Plugin no longer transmits the password form field in plain text.

Severity

Affected Versions

  • Jenkins weekly up to and including 2.191
  • Jenkins LTS up to and including 2.176.2
  • Deprecated: IBM AppScan Plugin up to and including 1.2.4
  • Splunk Plugin up to and including 1.7.4

Fix

  • Jenkins weekly should be updated to version 2.192
  • Jenkins LTS should be updated to version 2.176.3
  • Deprecated: IBM AppScan Plugin should be updated to version 1.2.5
  • Splunk Plugin should be updated to version 1.8.0

These versions include fixes to the vulnerabilities described above. All prior versions are considered to be affected by these vulnerabilities unless otherwise indicated.

Credit

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

  • James Holderness, IB Boost for SECURITY-1512
  • Jesper den Boer for SECURITY-1453