CVE-2017-1000091 in Jenkinsinfo

Summary

by MITRE

GitHub Branch Source Plugin connects to a user-specified GitHub API URL (e.g. GitHub Enterprise) as part of form validation and completion (e.g. to verify Scan Credentials are correct). This functionality improperly checked permissions, allowing any user with Overall/Read access to Jenkins to connect to any web server and send credentials with a known ID, thereby possibly capturing them. Additionally, this functionality did not require POST requests be used, thereby allowing the above to be performed without direct access to Jenkins via Cross-Site Request Forgery.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Analysis

by VulDB Data Team • 11/22/2019

The CVE-2017-1000091 vulnerability resides within the GitHub Branch Source Plugin for Jenkins, a widely used continuous integration and delivery tool that facilitates integration with GitHub repositories. This vulnerability stems from improper permission validation mechanisms within the plugin's form validation and completion processes. The plugin is designed to connect to user-specified GitHub API URLs, including on-premises GitHub Enterprise installations, as part of its credential verification functionality. When users configure the plugin, it performs background connections to validate scan credentials, which creates an attack surface that can be exploited by malicious actors.

The core technical flaw involves a critical authorization bypass where the plugin fails to properly validate user permissions before establishing connections to external web servers. Specifically, any user possessing only Overall/Read access to Jenkins can leverage this functionality to connect to arbitrary web servers and send credentials with a known identifier. This permission escalation occurs because the plugin does not enforce proper access controls or authentication checks before allowing network connections to be initiated. The vulnerability is particularly concerning as it operates within Jenkins' trusted environment, allowing attackers to potentially capture credentials from other systems or services that might be accessible through the established connections.

The operational impact of this vulnerability extends beyond simple credential theft through the exploitation of Cross-Site Request Forgery (CSRF) mechanisms. The plugin's design does not require POST requests to be used for the credential validation process, which means that attackers can trigger the vulnerable functionality through simple GET requests. This design flaw enables attackers to perform the credential capture attack without requiring direct access to the Jenkins instance itself, making it particularly dangerous in environments where Jenkins might be exposed to untrusted networks or users. The vulnerability essentially allows an attacker with minimal privileges to perform actions that should be restricted to administrators or users with elevated permissions.

This vulnerability aligns with CWE-285 (Improper Authorization) and CWE-352 (Cross-Site Request Forgery) classifications, representing a fundamental breakdown in access control mechanisms. From an ATT&CK framework perspective, this vulnerability maps to T1078 (Valid Accounts) and T1566 (Phishing) techniques, as it enables attackers to leverage legitimate user accounts to perform unauthorized network operations. The attack vector specifically relates to T1071.004 (Application Layer Protocol: DNS) and T1046 (Network Service Scanning) through the unauthorized network connections that can be initiated. Organizations implementing Jenkins with GitHub Branch Source Plugin are particularly at risk because the vulnerability affects the plugin's form validation functionality, which is commonly used during normal operations, making detection and mitigation more challenging.

The recommended mitigations include immediate patching of the GitHub Branch Source Plugin to version 2.5.1 or later, which addresses the permission validation and CSRF protection issues. Administrators should also implement network segmentation to restrict outbound connections from Jenkins servers, particularly to external GitHub API endpoints. Additionally, organizations should enforce strict access controls and privilege management within Jenkins, ensuring that only authorized users have Overall/Read access. The implementation of proper CSRF protection mechanisms and the enforcement of POST requests for sensitive operations should be considered as additional defensive measures. Regular security audits and monitoring of Jenkins instances for unauthorized network connections are essential to detect potential exploitation attempts. Organizations should also consider implementing network-level protections such as firewalls and intrusion detection systems to monitor for suspicious outbound connections that might indicate exploitation of this vulnerability.

Reservation

07/13/2017

Disclosure

10/04/2017

Moderation

accepted

CPE

ready

EPSS

0.00066

KEV

no

Activities

very low

Sources

Want to know what is going to be exploited?

We predict KEV entries!