-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

===========================================================================
             AUSCERT External Security Bulletin Redistribution

                               ESB-2023.1468
                   Jenkins Security Advisory 2023-03-08
                               9 March 2023

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

        AusCERT Security Bulletin Summary
        ---------------------------------

Product:           Jenkins (core)
                   update-center2
Publisher:         Jenkins
Operating System:  UNIX variants (UNIX, Linux, OSX)
                   Windows
Resolution:        Patch/Upgrade
CVE Names:         CVE-2023-27905 CVE-2023-27904 CVE-2023-27903
                   CVE-2023-27902 CVE-2023-27901 CVE-2023-27900
                   CVE-2023-27899 CVE-2023-27898 CVE-2023-24998

Original Bulletin: 
   https://www.jenkins.io/security/advisory/2023-03-08/

Comment: CVSS (Max):  8.8 CVE-2023-27899 (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H)
         CVSS Source: Jenkins
         Calculator:  https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

- --------------------------BEGIN INCLUDED TEXT--------------------

Jenkins Security Advisory 2023-03-08  

This advisory announces vulnerabilities in the following Jenkins deliverables:

  o Jenkins (core)
  o update-center2

Descriptions  

XSS vulnerability in plugin manager  

SECURITY-3037 / CVE-2023-27898
Severity (CVSS): High
Description:

Jenkins 2.270 through 2.393 (both inclusive), LTS 2.277.1 through 2.375.3 (both
inclusive) does not escape the Jenkins version a plugin depends on when
rendering the error message stating its incompatibility with the current
version of Jenkins in the plugin manager.

This results in a stored cross-site scripting (XSS) vulnerability exploitable
by attackers able to provide plugins to the configured update sites and have
this message shown by Jenkins instances.

 Exploitation does not require the manipulated plugin to be installed.

Jenkins 2.394, LTS 2.375.4, and LTS 2.387.1 escapes the Jenkins version a
plugin depends on when rendering the error message stating its incompatibility
with the current version of Jenkins.

 Due to how Jenkins community update sites serve plugin metadata based on the
 reported Jenkins core version, it is unlikely that a reasonably up to date
 Jenkins instance shows the vulnerable error message in the plugin manager at
 all. At least one of the following conditions needs to be met:

   o The Jenkins version used is older than about 13 months (before 2.333 or
     LTS 2.319.2 as of publication of this advisory), as all more recent
     releases of Jenkins receive update site metadata that only includes
     compatible versions of plugins.

   o Jenkins has been downgraded from a newer version, and no updated update
     site metadata has been requested since, so Jenkins will still display
     available plugins compatible with the previously newer version of Jenkins.

   o Custom update site URLs (i.e., not https://updates.jenkins.io/
     update-center.json) are configured, and those update sites behave
     differently. We expect that most of these will host a fairly small set of
     vetted plugins (e.g., an organization's approved or internal plugins),
     preventing exploitation through their restrictive inclusion process.

 Jenkins community update sites no longer publish plugin releases with invalid
 Jenkins core dependencies since 2023-02-15. This prevents exploitation through
 those update sites even on versions of Jenkins older than 13 months.
 Additionally, the Jenkins security team has confirmed that no plugin release
 with a core dependency manipulated to exploit this vulnerability has ever been
 published by the Jenkins project.


Temporary plugin file created with insecure permissions  

SECURITY-2823 / CVE-2023-27899
Severity (CVSS): High
Description:

Jenkins creates a temporary file when a plugin is uploaded from an
administrator's computer.

Jenkins 2.393 and earlier, LTS 2.375.3 and earlier creates this temporary file
in the system temporary directory with the default permissions for newly
created files.

If these permissions are overly permissive, they may allow attackers with
access to the Jenkins controller file system to read and write the file before
it is installed in Jenkins, potentially resulting in arbitrary code execution.

 This vulnerability only affects operating systems using a shared temporary
 directory for all users (typically Linux). Additionally, the default
 permissions for newly created files generally only allows attackers to read
 the temporary file.

Jenkins 2.394, LTS 2.375.4, and LTS 2.387.1 creates the temporary file with
more restrictive permissions.

As a workaround, you can set a different path as your default temporary
directory using the Java system property java.io.tmpdir, if you're concerned
about this issue but unable to immediately update Jenkins.


DoS vulnerability in bundled Apache Commons FileUpload library  

SECURITY-3030 / CVE-2023-24998 (upstream issue), CVE-2023-27900
(MultipartFormDataParser), CVE-2023-27901 (StaplerRequest)
Severity (CVSS): Medium
Description:

Jenkins 2.393 and earlier, LTS 2.375.3 and earlier is affected by the Apache
Commons FileUpload library's vulnerability CVE-2023-24998. This library is used
to process uploaded files via the Stapler web framework (usually through
StaplerRequest#getFile) and MultipartFormDataParser in Jenkins.

This allows attackers to cause a denial of service (DoS) by sending crafted
requests to HTTP endpoints processing file uploads.

Jenkins 2.394, LTS 2.375.4, and LTS 2.387.1 limits the number of request parts
to be processed to 1000. Specific endpoints receiving only simple form
submissions have a lower limit.

 While the Apache Commons FileUpload dependency has been updated previously in
 the 2.392 weekly release, the Jenkins-specific changes in 2.394 are necessary
 for Jenkins to be protected.

 Some Jenkins forms can be very complex, and these limits apply to all fields
 and not just fields representing uploaded files. As a result, legitimate
 submissions of complex forms that include (possible) file uploads may be
 affected by these limits. If that happens, these limits can be changed by
 setting the Java system properties
 hudson.util.MultipartFormDataParser.FILEUPLOAD_MAX_FILES and
 org.kohsuke.stapler.RequestImpl.FILEUPLOAD_MAX_FILES to a bigger value, or to
 -1 to completely disable them.

 These releases of Jenkins also introduce additional Java system properties
 that can be set to restrict request sizes:

   o hudson.util.MultipartFormDataParser.FILEUPLOAD_MAX_FILE_SIZE and
     org.kohsuke.stapler.RequestImpl.FILEUPLOAD_MAX_FILE_SIZE allow limiting
     the size (in bytes) of individual fields that can be processed in one
     multipart/form-data request.

   o hudson.util.MultipartFormDataParser.FILEUPLOAD_MAX_SIZE and
     org.kohsuke.stapler.RequestImpl.FILEUPLOAD_MAX_SIZE allow limiting the
     total request size (in bytes) that can be processed in one multipart/
     form-data request.

 By default, Jenkins does not set these size limits. Setting these system
 properties can offer additional protection, but comes at a greater risk of
 impacting legitimate use (e.g., when uploading huge file parameters).


Workspace temporary directories accessible through directory browser  

SECURITY-1807 / CVE-2023-27902
Severity (CVSS): Medium
Description:

Jenkins uses temporary directories adjacent to workspace directories, usually
with the @tmp name suffix, to store temporary files related to the build. In
pipelines, these temporary directories are adjacent to the current working
directory when operating in a subdirectory of the automatically allocated
workspace. Jenkins-controlled processes, like SCMs, may store credentials in
these directories.

Jenkins 2.393 and earlier, LTS 2.375.3 and earlier shows these temporary
directories when viewing job workspaces, which allows attackers with Item/
Workspace permission to access their contents.

Jenkins 2.394, LTS 2.375.4, and LTS 2.387.1 does not list these temporary
directories in job workspaces.

As a workaround, do not grant Item/Workspace permission to users who lack Item/
Configure permission, if you're concerned about this issue but unable to
immediately update Jenkins.

 The Java system property hudson.model.DirectoryBrowserSupport.allowTmpEscape
 can be set to true to restore the previous behavior.


Temporary file parameter created with insecure permissions  

SECURITY-3058 / CVE-2023-27903
Severity (CVSS): Low
Description:

When triggering a build from the Jenkins CLI, Jenkins creates a temporary file
on the controller if a file parameter is provided through the CLI's standard
input.

Jenkins 2.393 and earlier, LTS 2.375.3 and earlier creates this temporary file
in the default temporary directory with the default permissions for newly
created files.

If these permissions are overly permissive, they may allow attackers with
access to the Jenkins controller file system to read and write the file before
it is used in the build.

 This vulnerability only affects operating systems using a shared temporary
 directory for all users (typically Linux). Additionally, the default
 permissions for newly created files generally only allows attackers to read
 the temporary file.

Jenkins 2.394, LTS 2.375.4, and LTS 2.387.1 creates the temporary file with
more restrictive permissions.

As a workaround, you can set a different path as your default temporary
directory using the Java system property java.io.tmpdir, if you're concerned
about this issue but unable to immediately update Jenkins.


Information disclosure through error stack traces related to agents  

SECURITY-2120 / CVE-2023-27904
Severity (CVSS): Low
Description:

Jenkins 2.393 and earlier, LTS 2.375.3 and earlier prints an error stack trace
on agent-related pages when agent connections are broken. This stack trace may
contain information about Jenkins configuration that is otherwise inaccessible
to attackers.

Jenkins 2.394, LTS 2.375.4, and LTS 2.387.1 does not display error stack traces
when agent connections are broken.


XSS vulnerability in update-center2  

SECURITY-3063 / CVE-2023-27905
Severity (CVSS): Medium
Description:

update-center2 is the tool used to generate the Jenkins update sites hosted on
updates.jenkins.io.

 While it is designed for use by the Jenkins project for this purpose, others
 may be using it to operate their own self-hosted update sites.

update-center2 3.13 and 3.14 renders the required Jenkins core version on
plugin download index pages (pages like this). This version is taken from
plugin metadata without being sanitized.

This results in a stored cross-site scripting (XSS) vulnerability exploitable
by attackers able to provide a plugin for hosting.

The following preconditions must both be satisfied for this to be exploitable
in a self-hosted update-center2:

  o The generation of download pages needs to be enabled (i.e., the
    --download-links-directory argument needs to be set).

  o A custom download page template must be used (--index-template-url
    argument), and the template used must not prevent JavaScript execution
    through Content-Security-Policy. The default template prevents exploitation
    by declaring a restrictive Content-Security-Policy.

update-center2 3.15 filters out plugin releases with invalid Jenkins core
dependencies.

Administrators hosting their own update sites using update-center2 or a fork
thereof are advised to update it, or integrate the commit 091ef999.

 This change has been deployed to Jenkins community update sites on 2023-02-15.
 The Jenkins project has distributed a single plugin release, that exploited
 this vulnerability in a harmless way to demonstrate the issue, for two hours
 on 2023-01-16. No other plugin releases that exploit this vulnerability have
 been published.


Severity  

  o SECURITY-1807: Medium
  o SECURITY-2120: Low
  o SECURITY-2823: High
  o SECURITY-3030: Medium
  o SECURITY-3037: High
  o SECURITY-3058: Low
  o SECURITY-3063: Medium


Affected Versions  

  o Jenkins weekly up to and including 2.393
  o Jenkins LTS up to and including 2.375.3
  o update-center2 up to and including 3.14


Fix  

  o Jenkins weekly should be updated to version 2.394
  o Jenkins LTS should be updated to version 2.375.4 or 2.387.1
  o update-center2 should be updated to version 3.15

These versions include fixes to the vulnerabilities described above. All prior
versions are considered to be affected by these vulnerabilities unless
otherwise indicated.


Credit  

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

  o Ilay Goldman and Yakir Kadkoda from Aqua Security for SECURITY-3037,
    SECURITY-3063
  o Jakob Ackermann for SECURITY-3030
  o James Nord, CloudBees, Inc. for SECURITY-2823
  o Kevin Guerroudj, CloudBees, Inc. for SECURITY-3058
  o Markus Winter, SAP SE for SECURITY-1807

- --------------------------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: https://auscert.org.au/gpg-key/

iQIVAwUBZAl4FMkNZI30y1K9AQj/CBAAkwg+0X4JuhEyM/uEKDCmWmA+2tEkkD5T
3gEg4GFPGnpV34sMT6Td+5lXwTSKPHk3Ux0fFoTArPfRw7aoyp8uzMlxgmEApLsx
TYYiK/gF68jqEh1gtQAeGLcw8BZfvqR3KFvORtZTj0e2BhPdyThMPqSu2vsJbM+2
vSYRA4+iAliAkukpFYZOrVQaCdExNw36agbpXeH+7JaRr0inP01Q0mFg0NQGpSHf
NgHBvp6bz3msSpmBrXRAqHXQMJrDzaqDdaN3y0HlqB/zz4tH17eENoKvxIytyXYi
0BLstQ8m3woYY4PtTmIByRdkMb1R2y7L1D3EwCNRIg9+Iz61+526ZaJ8kWf/okEr
tjdgY1wuoYet/yVImbQ2nk7CMbc+JKeudIWq1fJtbX8DSOri6EnlJj8MLELYIxb3
6NtG6Wj4lYwci1Q/RY2Bd44gNlRAsvnxizY6ghgrJWJ8quKjPI3Kt8GXnWjBqRD8
+d4S8+VJ8JdQc9VpR7izvnVjrHzowGpFbfrvYffVAAc7RifQ3NAUk6XLh1DEhOx+
eM7hNQ7pf1OvCk35L2qav3iuR8qWoGnRfppqdzDtXzqsljCDuC2MXycJf5ixauUv
2BOELhZDoxy/NTLDq/Keykqr6d8ocIy2Z+DbXv8A/eSoCswvcXSaXUvVIHkxXvEM
/4NIp3jAk3w=
=dr6X
-----END PGP SIGNATURE-----