This advisory announces vulnerabilities in the following Jenkins deliverables:
The form validation for the proxy configuration form did not check the permission of the user accessing it, allowing anyone with Overall/Read access to Jenkins to cause Jenkins to send a GET request to a specified URL, optionally with a specified proxy configuration.
If that request’s HTTP response code indicates success, the form validation is returning a generic success message, otherwise the HTTP status code is returned. It was not possible to reuse an existing proxy configuration to send those requests; that configuration had to be provided by the attacker.
The form validation now properly requires the Overall/Administer permission.
Jenkins did not properly prevent specifying relative paths that escape a base directory for URLs accessing plugin resource files. This allowed users with Overall/Read permission to download files from the Jenkins controller they should not have access to.
On Windows, any file accessible to the Jenkins controller process could be downloaded. On other operating systems, any file within the Jenkins home directory accessible to the Jenkins controller process could be downloaded.
Jenkins now prevents specifying paths containing
.. and other character sequences that could be used to access files outside the plugins resource directory.
Jenkins did not take into account case-insensitive file systems when preventing access to plugin resource files that should not be accessible.
This allowed users with Overall/Read permission to download plugin resource files in
WEB-INF directories, such as the plugins' JAR files, which could contain hardcoded secrets.
This was caused by an incomplete fix to SECURITY-155.
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: