Facebook Google Plus Twitter LinkedIn YouTube RSS Menu Search Resource - BlogResource - WebinarResource - ReportResource - Eventicons_066 icons_067icons_068icons_069icons_070

[R2] Jenkins Forced Migration of User Records

Medium

Synopsis

Tenable discovered a vulnerability in Jenkins which allows valid user folders to be migrated. This can be exploited by a remote unauthenticated attacker.

Attempting to authenticate as a valid user (e.g. admin), preceded by a relative path that leads to the same user account folder on the file system (admin, /admin, ./admin, ../users/admin, etc) will force Jenkins to migrate that user's folder to the sanitized version of the relative path used.

This effectively creates a clone of the original user's config file and user account under a new user id, and deletes the user's original folder. The original user's account will persist until the Jenkins service restarts, after which point the original user will no longer be able to login under their original username. This method is a particularly dangerous when combined with the unauthenticated user enumeration possible in 2.121.2 LTS, as the process of migrating all users could be automated.

As a proof of concept, consider the following URL:

http://[ip]:[port]/securityRealm/user/..%2fusers%2fadmin

When visited, the following can be observed in the Jenkins log:

INFO hudson.model.User getOrCreate
Migrated user record from C:\Program Files (x86)\Jenkins\users\..\users\admin\config.xml to C:\Program Files (x86)\Jenkins\users\..$002fusers$002fadmin\config.xml

Solution

  • Jenkins weekly should be updated to version 2.154
  • Jenkins LTS should be updated to version either 2.138.4 or 2.150.1

Disclosure Timeline

08/21/2018 - Vulnerability discovered.
08/21/2018 - Vulnerability posted to Jenkins issue tracker. 90-day date set as 11/19/2018.
08/21/2018 - Vendor says issue is a duplicate. Previously reported as SECURITY-1072.
10/18/2018 - Jenkins asks for the 2 week extension in Tenable's policy.
10/19/2018 - Tenable agrees to delay disclosure if necessary.
10/24/2018 - Jenkins postpones release date to Dec. 5th.
11/28/2018 - Jenkins confirms Dec. 5th release date. Asks Tenable to coordinate on that date.
11/29/2018 - Tenable acknowledges and accepts this request.
12/09/2018 - A CVE is assigned.

All information within TRA advisories is provided “as is”, without warranty of any kind, including the implied warranties of merchantability and fitness for a particular purpose, and with no guarantee of completeness, accuracy, or timeliness. Individuals and organizations are responsible for assessing the impact of any actual or potential security vulnerability.

Tenable takes product security very seriously. If you believe you have found a vulnerability in one of our products, we ask that you please work with us to quickly resolve it in order to protect customers. Tenable believes in responding quickly to such reports, maintaining communication with researchers, and providing a solution in short order.

For more details on submitting vulnerability information, please see our Vulnerability Reporting Guidelines page.

If you have questions or corrections about this advisory, please email [email protected]

Risk Information

Tenable Advisory ID: TRA-2018-43
Credit:
Evan Grant
CVSSv2 Base / Temporal Score:
6.4 / 4.9
CVSSv2 Vector:
AV:N/AC:L/Au:N/C:N/I:P/A:P
Nessus Plugin ID: 119500
Affected Products:
Jenkins weekly up to and including 2.153
Jenkins LTS up to and including 2.138.3
Risk Factor:
Medium
Additional Keywords:
SECURITY-1072

Advisory Timeline

12-05-2018 - [R1] Initial Release
12-10-2018 - [R2] Updated with assigned CVE.