
====================================================================

                             CERT-Renater

                 Note d'Information No. 2018/VULN115
_____________________________________________________________________

DATE                : 28/03/2018

HARDWARE PLATFORM(S): /

OPERATING SYSTEM(S): Systems running  Ansible Plugin for Jenkins,
                       Copy To Slave Plugin for Jenkins,
                       Cucumber Living Documentation Plugin for Jenkins,
                       GitHub Pull Request Builder Plugin for Jenkins,
                       Liquibase Runner Plugin for Jenkins,
                       Mailer Plugin for Jenkins,
                       Perforce Plugin for Jenkins,
                       Reverse Proxy Auth Plugin for Jenkins,
                       vSphere Plugin for Jenkins.

=====================================================================
https://jenkins.io/security/advisory/2018-03-26/
_____________________________________________________________________

 Jenkins Security Advisory 2018-03-26

This advisory announces vulnerabilities in the following Jenkins
deliverables:

    Ansible Plugin
    Copy To Slave Plugin
    Cucumber Living Documentation Plugin
    GitHub Pull Request Builder Plugin
    Liquibase Runner Plugin
    Mailer Plugin
    Perforce Plugin
    Reverse Proxy Auth Plugin
    vSphere Plugin


Descriptions


GitHub Pull Request Builder Plugin stores GitHub access tokens in
build.xml

SECURITY-261

GitHub Pull Request Builder Plugin stored serialized objects in
build.xml files that contained the credential used to poll Jenkins.
This can be used by users with master file system access to obtain
GitHub credentials.

Since 1.40.0, the plugin no longer stores serialized objects containing
the credential on disk.

Builds started before the plugin was updated to 1.40.0 will retain the
encoded credentials on disk. We strongly recommend revoking old GitHub
credentials used in Jenkins. We’re providing a script for use in the
Script Console that will attempt to remove old stored credentials from
build.xml files.


GitHub Pull Request Builder Plugin stores webhook secret in plain text
SECURITY-262

GitHub Pull Request Builder Plugin stored the webhook secret shared
between Jenkins and GitHub in plain text.

This allowed users with Jenkins master local file system access and
Jenkins administrators to retrieve the stored password. The latter
could result in exposure of the passwords through browser extensions,
cross-site scripting vulnerabilities, and similar situations.

GitHub Pull Request Builder Plugin 1.32.1 and newer stores the webhook
secret encrypted on disk.


Cucumber Living Documentation Plugin disabled Content-Security-Policy
for archived and workspace files
SECURITY-308

Jenkins 1.641 and 1.625.3 introduced Content-Security-Policy HTTP
headers as protection against Cross-Site Scripting attacks using
workspace files and archived artifacts served using
DirectoryBrowserSupport (SECURITY-95).

Cucumber Living Documentation Plugin disabled this XSS protection until
Jenkins was restarted whenever a Cucumber Report was viewed by any user
to work around the Content-Security-Policy limitations.

While disabling this protection mechanism temporarily may be necessary
to make plugins work that haven’t been adapted to work with the Content-
Security-Policy restriction, this should only be done by
administrators, as doing so may result in a security issue (see
Configuring Content Security Policy).

This has been addressed in version 1.1.0 of the plugin, and it will now
request that users change the Content-Security-Policy option in Jenkins.


Perforce Plugin uses ineffective credentials encryption
SECURITY-373

Perforce Plugin encrypts its credentials using DES and a public key
stored in its public source code, so it only serves as basic
obfuscation. This allowed users with Jenkins master local file system
access and Jenkins administrators to retrieve the stored password. The
latter could result in exposure of the passwords through browser
extensions, cross-site scripting vulnerabilities, and similar
situations.

As of publication of this advisory, there is no fix. The plugin has
been removed from publication at the request of its former maintainers.
We recommend that users of Perforce Plugin use the P4 Plugin instead.


vSphere Plugin does not validate SSL/TLS certificates
SECURITY-504

vSphere Plugin disabled SSL/TLS certificate validation unconditionally,
allowing potential man-in-the-middle attacks.

vSphere Plugin 2.17 now has SSL/TLS certificate validation enabled by
default.


CSRF vulnerability and missing permission checks in vSphere Plugin form
validation allowed enumerating credentials IDs, capturing credentials,
and denial of service
SECURITY-745

vSphere Plugin did not perform permission checks on methods
implementing form validation. This allowed users with Overall/Read
access to Jenkins to perform various actions such as:

    Connect to an attacker-specified vSphere server using attacker-
specified credentials IDs obtained through another method, capturing
credentials stored in Jenkins

    Connect to configured vSphere servers and looking up information,
potentially resulting in denial of service

Additionally, these form validation methods did not require POST
requests, resulting in a CSRF vulnerability.

These form validation methods now require POST requests and appropriate
user permissions.


Liquibase Runner Plugin allows users to load arbitrary Java code into
master JVM
SECURITY-519

Liquibase Runner Plugin allows users with Job/Configure permission to
configure its build step in a way that loads arbitrary class files into
the Jenkins master JVM, resulting in arbitrary code execution.

As of publication of this advisory, there is no fix.


Perforce Plugin credentials can be obtained by users with Job/Extended
Read permission
SECURITY-536

Jenkins prevents users with Extended Read permission from obtaining
secrets such as credentials stored in job configurations.

Perforce Plugin implements its own credential encryption using DES and
an encryption key stored in its public source code. This is not
considered a secret by Jenkins, resulting in potential exposure of
Perforce credentials stored in job configurations to users with
Extended Read permission. While these are encrypted, this can only be
considered basic obfuscation due to the hard-coded public encryption
key used.

As of publication of this advisory, there is no fix. The plugin has
been removed from publication at the request of its maintainers. We
recommend that users of Perforce Plugin use the P4 Plugin instead.


Copy To Slave Plugin allows access to arbitrary files on the Jenkins
master file system
SECURITY-545

Copy To Slave Plugin allows users with Job/Configure permissions to
configure it in such a way that it allows obtaining arbitrary files
accessible to the Jenkins master process from the Jenkins master file
system.

As of publication of this advisory, there is no fix.


Ansible Plugin disabled host key verification by default
SECURITY-630

Ansible Plugin disabled host key verification by default, having it
only as an opt-in option.

Ansible Plugin 1.0 now enables host key verification by default, adding
options allowing users to opt out.

Existing configurations that previously did not opt into host key
verification will have host key verification enabled after update,
possibly resulting in failures.


Reverse Proxy Auth persisted authorities cache on disk
SECURITY-736

Reverse Proxy Auth Plugin persisted a cache of granted authorities
(group memberships) on disk.

This could allow users with local Jenkins master file system access to
obtain group membership information of Jenkins users.

Reverse Proxy Auth Plugin 1.6.0 and newer no longer store the cache of
granted authorities on disk.


Mailer Plugin allowed unauthorized users to send test emails
SECURITY-774 / CVE-2018-8718

A missing permission check in Mailer Plugin allowed users with
Overall/Read access to Jenkins to have it connect to a user-specified
mail server with user-specified credentials to send a test email to a
user-specified email address. The email subject and body could not be
changed. This could result in DoS if, for example, specifying a valid
mail server but invalid credentials.

As the same URL did not require POST to be used, it also was vulnerable
to cross-site request forgery.

The URL handling test emails now requires POST to protect from CSRF,
and performs an Overall/Administer permission check.


Severity

    SECURITY-261: medium
    SECURITY-262: low
    SECURITY-308: medium
    SECURITY-373: medium
    SECURITY-504: medium
    SECURITY-745: medium
    SECURITY-519: high
    SECURITY-536: medium
    SECURITY-545: medium
    SECURITY-630: medium
    SECURITY-736: low
    SECURITY-774: medium


Affected Versions

    Ansible Plugin up to and including 0.8
    Copy To Slave Plugin up to and including 1.4.4
    Cucumber Living Documentation Plugin up to and including 1.0.12
    GitHub Pull Request Builder Plugin up to and including 1.39.0
    Liquibase Runner Plugin up to and including 1.3.0
    Mailer Plugin up to and including 1.20
    Perforce Plugin up to and including 1.3.36
    Reverse Proxy Auth Plugin up to and including 1.5
    vSphere Plugin up to and including 2.16


Fix

    Ansible Plugin should be updated to version 1.0
    Cucumber Living Documentation Plugin should be updated to version
        1.1.0
    GitHub Pull Request Builder Plugin should be updated to version
        1.40.0
    Mailer Plugin should be updated to version 1.21
    Reverse Proxy Auth Plugin should be updated to version 1.6.0
    vSphere Plugin should be updated to version 2.17

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:

    Copy To Slave Plugin
    Liquibase Runner Plugin
    Perforce Plugin


Credit

The Jenkins project would like to thank the reporters for discovering
and reporting these vulnerabilities:

    Daniel Beck, CloudBees, Inc. for SECURITY-308, SECURITY-745,
           SECURITY-630
    Hyoungwook Jang, SKinfosec, Inc. for SECURITY-774
    Jesse Glick, CloudBees, Inc. for SECURITY-545
    Oleg Nenashev, CloudBees, Inc. for SECURITY-536, SECURITY-736
    Peter Adkins for SECURITY-504
    Steve Marlowe <smarlowe@cisco.com> of Cisco ASIG for SECURITY-261,
           SECURITY-262, SECURITY-373
    Yoann Dubreuil, CloudBees, Inc. for SECURITY-519

==========================================================
+ CERT-RENATER          | tel : 01-53-94-20-44           +
+ 23 - 25 Rue Daviel    | fax : 01-53-94-20-41           +
+ 75013 Paris           | email: cert@support.renater.fr +
==========================================================



