Protect yourself against future threats.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 =========================================================================== AUSCERT External Security Bulletin Redistribution ESB-2020.0349 Jenkins Security Advisory 2020-01-29 30 January 2020 =========================================================================== AusCERT Security Bulletin Summary --------------------------------- Product: Jenkins core Jenkins plugins Publisher: Jenkins Operating System: Windows UNIX variants (UNIX, Linux, OSX) Impact/Access: Access Privileged Data -- Existing Account Cross-site Scripting -- Remote/Unauthenticated Denial of Service -- Remote/Unauthenticated Read-only Data Access -- Remote/Unauthenticated Unauthorised Access -- Existing Account Resolution: Patch/Upgrade CVE Names: CVE-2020-2108 CVE-2020-2107 CVE-2020-2106 CVE-2020-2105 CVE-2020-2104 CVE-2020-2103 CVE-2020-2102 CVE-2020-2101 CVE-2020-2100 CVE-2020-2099 Original Bulletin: ttps://jenkins.io/security/advisory/2020-01-29/ - --------------------------BEGIN INCLUDED TEXT-------------------- Jenkins Security Advisory 2020-01-29 This advisory announces vulnerabilities in the following Jenkins deliverables: o Jenkins (core) o Code Coverage API Plugin o Fortify Plugin o WebSphere Deployer Plugin Descriptions Inbound TCP Agent Protocol/3 authentication bypass SECURITY-1682 / CVE-2020-2099 Jenkins 2.213 and earlier, LTS 2.204.1 and earlier includes support for the Inbound TCP Agent Protocol/3 for communication between master and agents. While this protocol has been deprecated in 2018 and was recently removed from Jenkins in 2.214, it could still easily be enabled in Jenkins LTS 2.204.1, 2.213, and older. This protocol incorrectly reuses encryption parameters which allow an unauthenticated remote attacker to determine the connection secret. This secret can then be used to connect attacker-controlled Jenkins agents to the Jenkins master. Jenkins 2.204.2 no longer allows for the use of Inbound TCP Agent Protocol/3 by default. The system property jenkins.slaves.JnlpSlaveAgentProtocol3.ALLOW_UNSAFE can be set to true to allow enabling the Inbound TCP Agent Protocol/3 in Jenkins 2.204.2, but doing so is strongly discouraged. Inbound TCP Agent Protocol/3 was removed completely from Jenkins 2.214 and will not be part of Jenkins LTS after the end of the 2.204.x line. Jenkins vulnerable to UDP amplification reflection attack SECURITY-1641 / CVE-2020-2100 Jenkins 2.218 and earlier, LTS 2.204.1 and earlier supports two network discovery services (UDP multicast/broadcast and DNS multicast) by default. The UDP multicast/broadcast service can be used in an amplification reflection attack, as very few bytes sent to the respective endpoint result in much larger responses: A single byte request to this service would respond with more than 100 bytes of Jenkins metadata which could be used in a DDoS attack on a Jenkins master. Within the same network, spoofed UDP packets could also be sent to make two Jenkins masters go into an infinite loop of replies to one another, thus causing a denial of service. Jenkins 2.219, LTS 2.204.2 now disables both UDP multicast/broadcast and DNS multicast by default. Administrators that need these features can re-enable them again by setting the system property hudson.DNSMultiCast.disabled to false (for DNS multicast) or the system property hudson.udp to 33848, or another port (for UDP broadcast/ multicast). These are the same system properties that controlled whether these features were enabled in the past, so any instances explicitly enabling these features by setting these system properties will continue to have them enabled. Non-constant time comparison of inbound TCP agent connection secret SECURITY-1659 / CVE-2020-2101 Jenkins 2.218 and earlier, LTS 2.204.1 and earlier does not use a constant-time comparison validating the connection secret when an inbound TCP agent connection is initiated. This could potentially allow attackers to use statistical methods to obtain the connection secret. Jenkins 2.219, LTS 2.204.2 now uses a constant-time comparison function for verifying connection secrets. Non-constant time HMAC comparison SECURITY-1660 / CVE-2020-2102 Jenkins 2.218 and earlier, LTS 2.204.1 and earlier does not use a constant-time comparison when checking whether two HMACs are equal. This could potentially allow attackers to use statistical methods to obtain a valid HMAC for an attacker-controlled input value. Jenkins 2.219, LTS 2.204.2 now uses a constant-time comparison when validating HMACs. Diagnostic page exposed session cookies SECURITY-1695 / CVE-2020-2103 Jenkins shows various technical details about the current user on the /whoAmI page. In a previous fix, the Cookie header value containing the HTTP session ID was redacted. However, user metadata shown on this page could also include the HTTP session ID in Jenkins 2.218 and earlier, LTS 2.204.1 and earlier. This allows attackers able to exploit a cross-site scripting vulnerability to obtain the HTTP session ID value from this page. Jenkins 2.219, LTS 2.204.2 no longer prints out the affected user metadata that might contain the HTTP session ID. Additionally, we also redact values of further authentication-related HTTP headers in addition to Cookie on this page as a hardening. Memory usage graphs accessible to anyone with Overall/Read SECURITY-1650 / CVE-2020-2104 Jenkins includes a feature that shows a JVM memory usage chart for the Jenkins master. Access to the chart in Jenkins 2.218 and earlier, LTS 2.204.1 and earlier requires no permissions beyond the general Overall/Read, allowing users who are not administrators to view JVM memory usage data. Jenkins 2.219, LTS 2.204.2 now requires Overall/Administer permissions to view the JVM memory usage chart. Jenkins REST APIs vulnerable to clickjacking SECURITY-1704 / CVE-2020-2105 Jenkins 2.218 and earlier, LTS 2.204.1 and earlier does not serve the X-Frame-Options: deny HTTP header on REST API responses to protect against clickjacking attacks. An attacker could exploit this by routing the victim through a specially crafted web page that embeds a REST API endpoint in an iframe and tricking the user into performing an action which would allow for the attacker to learn the content of that REST API endpoint. Jenkins 2.219, LTS 2.204.2 now adds the X-Frame-Options: deny HTTP header to REST API responses, which prevents these types of clickjacking attacks. Stored XSS vulnerability in Code Coverage API Plugin SECURITY-1680 / CVE-2020-2106 Code Coverage API Plugin 1.1.2 and earlier does not escape the filename of the coverage report used in its view. This results in a stored cross-site scripting vulnerability that can be exploited by users able to change the job configuration. Code Coverage API Plugin 1.1.3 escapes the filename of the coverage report used in its view. Fortify Plugin stored credentials in plain text SECURITY-1565 / CVE-2020-2107 Fortify Plugin 19.1.29 and earlier stored its proxy server password unencrypted in job config.xml files. This password could be read by users with the Extended Read permission. Fortify Plugin 19.2.30 now encrypts the proxy server password. XXE vulnerability in WebSphere Deployer Plugin SECURITY-1719 / CVE-2020-2108 WebSphere Deployer Plugin 1.6.1 and earlier does not configure the XML parser to prevent XML external entity (XXE) attacks. This could be exploited by a user with Job/Configure permissions to upload a specially crafted war file containing a WEB-INF/ibm-web-ext.xml which is parsed by the plugin. As of publication of this advisory, there is no fix. Severity o SECURITY-1565: Medium o SECURITY-1641: Medium o SECURITY-1650: Medium o SECURITY-1659: Medium o SECURITY-1660: Medium o SECURITY-1680: Medium o SECURITY-1682: High o SECURITY-1695: Medium o SECURITY-1704: Low o SECURITY-1719: High Affected Versions o Jenkins weekly up to and including 2.218 o Jenkins LTS up to and including 2.204.1 o Code Coverage API Plugin up to and including 1.1.2 o Fortify Plugin up to and including 19.1.29 o WebSphere Deployer Plugin up to and including 1.6.1 Fix o Jenkins weekly should be updated to version 2.219 o Jenkins LTS should be updated to version 2.204.2 o Code Coverage API Plugin should be updated to version 1.1.3 o Fortify Plugin should be updated to version 19.2.30 These versions include fixes to the vulnerabilities described above. All prior versions are considered to be affected by these vulnerabilities unless otherwise indicated. As of publication of this advisory, no fixes are available for the following plugins: o WebSphere Deployer Plugin Credit The Jenkins project would like to thank the reporters for discovering and reporting these vulnerabilities: o Adam Thorn, University of Cambridge for SECURITY-1641 o Cheng Gao, Alibaba Cloud Intelligence Security Team, https://www.aliyun.com / for SECURITY-1719 o Daniel Beck, CloudBees, Inc. for SECURITY-1650, SECURITY-1660 o Daniel Beck, CloudBees, Inc. and Wadeck Follonier, CloudBees, Inc. for SECURITY-1695 o Federico Pellegrin for SECURITY-1680 o James Holderness, IB Boost for SECURITY-1565 o Jesse Glick, CloudBees, Inc. and, independently, Wasin Saengow for SECURITY-1659 o Michele Romano for SECURITY-1704 o Thijs Alkemade from Computest for SECURITY-1682 - --------------------------END INCLUDED TEXT-------------------- You have received this e-mail bulletin as a result of your organisation's registration with AusCERT. The mailing list you are subscribed to is maintained within your organisation, so if you do not wish to continue receiving these bulletins you should contact your local IT manager. If you do not know who that is, please send an email to auscert@auscert.org.au and we will forward your request to the appropriate person. NOTE: Third Party Rights This security bulletin is provided as a service to AusCERT's members. As AusCERT did not write the document quoted above, AusCERT has had no control over its content. The decision to follow or act on information or advice contained in this security bulletin is the responsibility of each user or organisation, and should be considered in accordance with your organisation's site policies and procedures. AusCERT takes no responsibility for consequences which may arise from following or acting on information or advice contained in this security bulletin. NOTE: This is only the original release of the security bulletin. It may not be updated when updates to the original are made. If downloading at a later date, it is recommended that the bulletin is retrieved directly from the author's website to ensure that the information is still current. Contact information for the authors of the original document is included in the Security Bulletin above. If you have any questions or need further information, please contact them directly. Previous advisories and external security bulletins can be retrieved from: https://www.auscert.org.au/bulletins/ =========================================================================== Australian Computer Emergency Response Team The University of Queensland Brisbane Qld 4072 Internet Email: auscert@auscert.org.au Facsimile: (07) 3365 7031 Telephone: (07) 3365 4417 (International: +61 7 3365 4417) AusCERT personnel answer during Queensland business hours which are GMT+10:00 (AEST). On call after hours for member emergencies only. =========================================================================== -----BEGIN PGP SIGNATURE----- Comment: http://www.auscert.org.au/render.html?it=1967 iQIVAwUBXjJ8nmaOgq3Tt24GAQhW5BAAqJZvzRP578HZORpGj/xPrCAp4tsne+WE RcHHBoqd31yHmfsEFAqqB6cYFoRPnG7nkFPHqD/FCq85C3aZRXk4TrqUq2fbzyhh P3WnKst24nEglsNptum+f/ZCw59yA0tS3Glcpfjt++mJGwxg+L9sKXNBKZtWI0Po 4djgY7VVt5379MJOI3fuN/OJJZRDhEY8MOrNJqFRUHw//82FUkD5ILdjLZFMDeNo EOUq5Rl+lJhc6Q0bo8ZNAJ/tjXNIEbVAsk3tkG2zAxCb2cbODpVe2/+x2Fpe1mv2 Z4oASmfb616xfWK4aQ3FVE7hLdwsuEmHziKiBPIdGioMNnJc0e0RrZtD7gZGLIgK +QQ2OUjiq1Eq+bsq1m9Y+fJoXoxP22SDSZJJmFGPqLCd0Hxk/WIM1QY64nRhKe91 wzQELjuWq9Vb63QLaC0QCna7WG+S8hESaiU0YMOqIEaCh7nNU0ud1mMtse0z2YKk VmFHB6e/Az11jB+BsN8bLeXHvaMZglFAw+Kp/4uMbPbE9g3+PMgNKNeA8Qv0A196 2vRSOK5Nivr8XHNjyp3CZOe/J+tLDbQB0Halbr2oYC1P1YrodGfkJ4juG1mxewbC lYo48lRH599rE7xBwOz3Jq7zOyHs+wkMEs/zkhHcxk25TmX3XnkZuqlwVwpo9ce0 J/MKU+HRrRU= =1dWW -----END PGP SIGNATURE-----