Agent-to-controller access control allowed writing to sensitive directory used by Jenkins Pipeline: Shared Groovy Libraries Plugin
High severity
GitHub Reviewed
Published
May 24, 2022
to the GitHub Advisory Database
•
Updated Dec 22, 2023
Package
Affected versions
>= 2.304, <= 2.318
<= 2.303.2
Patched versions
2.319
2.303.3
Description
Published by the National Vulnerability Database
Nov 4, 2021
Published to the GitHub Advisory Database
May 24, 2022
Reviewed
Jun 23, 2022
Last updated
Dec 22, 2023
Jenkins 2.318 and earlier, LTS 2.303.2 and earlier does not limit agent read/write access to the
libs/
directory inside build directories when using theFilePath
APIs. This directory is used by the Pipeline: Shared Groovy Libraries Plugin to store copies of shared libraries.This allows attackers in control of agent processes to replace the code of a trusted library with a modified variant, resulting in unsandboxed code execution in the Jenkins controller process.
Jenkins 2.319, LTS 2.303.3 prohibits agent read/write access to the
libs/
directory inside build directories.If you are unable to immediately upgrade to Jenkins 2.319, LTS 2.303.3, you can install the Remoting Security Workaround Plugin. It will prevent all agent-to-controller file access using FilePath APIs. Because it is more restrictive than Jenkins 2.319, LTS 2.303.3, more plugins are incompatible with it. Make sure to read the plugin documentation before installing it.
It is not easily possible to customize the file access rules to prohibit access to the
libs/
directory specifically, as built-in rules (granting access to<BUILDDIR>
contents) would take precedence over a custom rule prohibiting access.References