Headline
CVE-2019-10384: Jenkins Security Advisory 2019-08-28
Jenkins 2.191 and earlier, LTS 2.176.2 and earlier allowed users to obtain CSRF tokens without an associated web session ID, resulting in CSRF tokens that did not expire and could be used to bypass CSRF protection for the anonymous user.
This advisory announces vulnerabilities in the following Jenkins deliverables:
- Jenkins (core)
- Deprecated: IBM AppScan Plugin
- Splunk Plugin
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.
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
- SECURITY-1294: High
- SECURITY-1453: Medium
- SECURITY-1491: High
- SECURITY-1512: low
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
Related news
Vulnerability in the Oracle Java SE, Oracle GraalVM Enterprise Edition product of Oracle Java SE (component: JNDI). Supported versions that are affected are Oracle Java SE: 7u331, 8u321, 11.0.14, 17.0.2, 18; Oracle GraalVM Enterprise Edition: 20.3.5, 21.3.1 and 22.0.0.2. Easily exploitable vulnerability allows unauthenticated attacker with network access via multiple protocols to compromise Oracle Java SE, Oracle GraalVM Enterprise Edition. Successful attacks of this vulnerability can result in unauthorized update, insert or delete access to some of Oracle Java SE, Oracle GraalVM Enterprise Edition accessible data. Note: This vulnerability applies to Java deployments, typically in clients running sandboxed Java Web Start applications or sandboxed Java applets, that load and run untrusted code (e.g., code that comes from the internet) and rely on the Java sandbox for security. This vulnerability can also be exploited by using APIs in the specified Component, e.g., through a web service ...
Vulnerability in the Oracle Java SE, Oracle GraalVM Enterprise Edition product of Oracle Java SE (component: JNDI). Supported versions that are affected are Oracle Java SE: 7u331, 8u321, 11.0.14, 17.0.2, 18; Oracle GraalVM Enterprise Edition: 20.3.5, 21.3.1 and 22.0.0.2. Easily exploitable vulnerability allows unauthenticated attacker with network access via multiple protocols to compromise Oracle Java SE, Oracle GraalVM Enterprise Edition. Successful attacks of this vulnerability can result in unauthorized update, insert or delete access to some of Oracle Java SE, Oracle GraalVM Enterprise Edition accessible data. Note: This vulnerability applies to Java deployments, typically in clients running sandboxed Java Web Start applications or sandboxed Java applets, that load and run untrusted code (e.g., code that comes from the internet) and rely on the Java sandbox for security. This vulnerability can also be exploited by using APIs in the specified Component, e.g., through a web service ...