This advisory announces vulnerabilities in the following Jenkins deliverables:
Jenkins allows filtering builds in the build history widget by specifying an expression that searches for matching builds by name, description, parameter values, etc.
Jenkins 2.50 through 2.423 (both inclusive), LTS 2.60.1 through 2.414.1 (both inclusive) does not exclude sensitive build variables (e.g., password parameter values) from this search.
This allows attackers with Item/Read permission to obtain values of sensitive variables used in builds by iteratively testing different characters until the correct sequence is discovered.
Jenkins 2.424, LTS 2.414.2 excludes sensitive variables from this search.
ExpandableDetailsNote
allows annotating build log content with additional information that can be revealed when interacted with.
Jenkins 2.423 and earlier, LTS 2.414.1 and earlier does not escape the value of the caption
constructor parameter of ExpandableDetailsNote
.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers able to provide caption
parameter values.
As of publication, the related API is not used within Jenkins (core), and the Jenkins security team is not aware of any affected plugins. |
Jenkins 2.424, LTS 2.414.2 escapes caption
constructor parameter values.
Jenkins creates a temporary file when a plugin is deployed directly from a URL.
Jenkins 2.423 and earlier, LTS 2.414.1 and earlier creates this temporary file in the system temporary directory with the default permissions for newly created files.
If these permissions are overly permissive, they may allow attackers with access to the Jenkins controller file system to read and write the file before it is installed in Jenkins, potentially resulting in arbitrary code execution.
This vulnerability only affects operating systems using a shared temporary directory for all users (typically Linux). Additionally, the default permissions for newly created files generally only allow attackers to read the temporary file, but not write to it. |
This issue complements SECURITY-2823, which affected plugins uploaded from an administrator’s computer. |
Jenkins 2.424, LTS 2.414.2 creates the temporary file in a subdirectory with more restrictive permissions.
As a workaround, you can change your default temporary-file directory using the Java system property java.io.tmpdir
, if you’re concerned about this issue but unable to immediately update Jenkins.
In Jenkins 2.423 and earlier, LTS 2.414.1 and earlier, uploaded files processed via the Stapler web framework and the Jenkins API MultipartFormDataParser
create temporary files in the system temporary directory with the default permissions for newly created files.
If these permissions are overly permissive, attackers with access to the system temporary directory may be able to read and write the file before it is used.
This vulnerability only affects operating systems using a shared temporary directory for all users (typically Linux). Additionally, the default permissions for newly created files generally only allow attackers to read the temporary file, but not write to it. |
Jenkins 2.424, LTS 2.414.2 creates the temporary files in a subdirectory with more restrictive permissions.
As a workaround, you can change your default temporary-file directory using the Java system property java.io.tmpdir
, if you’re concerned about this issue but unable to immediately update Jenkins.
build-failure-analyzer
Build Failure Analyzer Plugin 2.4.1 and earlier does not escape Failure Cause names in build logs.
This results in a stored cross-site scripting (XSS) vulnerability exploitable by attackers able to create or update Failure Causes.
Build Failure Analyzer Plugin 2.4.2 escapes Failure Cause names in build logs.
build-failure-analyzer
Build Failure Analyzer Plugin 2.4.1 and earlier does not perform a permission check in a connection test HTTP endpoint.
This allows attackers with Overall/Read permission to connect to an attacker-specified hostname and port using attacker-specified username and password.
Additionally, this HTTP endpoint does not require POST requests, resulting in a cross-site request forgery (CSRF) vulnerability.
Build Failure Analyzer Plugin 2.4.2 requires POST requests and Overall/Administer permission for the affected HTTP endpoint.
build-failure-analyzer
Build Failure Analyzer Plugin 2.4.1 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 delete Failure Causes.
Build Failure Analyzer Plugin 2.4.2 requires POST requests for the affected HTTP endpoint.
These versions include fixes to the vulnerabilities described above. All prior versions are considered to be affected by these vulnerabilities unless otherwise indicated.
The Jenkins project would like to thank the reporters for discovering and reporting these vulnerabilities: