Jenkins Symbolic Link Archive Extraction Arbitrary File Write
Severe, but no confirmed exploitation yet. Schedule remediation in your next patch cycle and apply mitigations if you're exposed.
An attacker with a basic user account, remotely over the network, with no user interaction, can fully compromise the system — steal data, tamper with it and take it offline.
Jenkins 2.554 and earlier, LTS 2.541.2 and earlier does not safely handle symbolic links during the extraction of .tar and .tar.gz archives, allowing crafted archives to write files to arbitrary locations on the filesystem, restricted only by file system access permissions of the user running Jenkins. This can be exploited to deploy malicious scripts or plugins on the controller by attackers with Item/Configure permission, or able to control agent processes.
Inferred from the weakness type (CWE) and how the flaw is reached — the techniques an attacker would chain to exploit this. Real-world corroboration appears here as threat intel is folded in.
Generated by Wavense from the CVE record — an immediate mitigation and the permanent fix.
Immediately restrict the Jenkins service account to the absolute minimum filesystem permissions required for operation. Limit "Item/Configure" permissions to trusted administrators and thoroughly audit agent processes for suspicious activity. Implement strong network segmentation for the Jenkins controller and monitor for unusual file writes or process executions from the Jenkins user.
The permanent resolution is to upgrade Jenkins to a version that addresses this vulnerability. Specifically, upgrade Jenkins to version 2.555 or newer, or the LTS release to 2.541.3 or newer. These versions contain fixes that safely handle symbolic links during archive extraction, preventing arbitrary file write exploits.
An attacker with Item/Configure permission or control over an agent process can craft a malicious .tar or .tar.gz archive. Upon extraction, this allows them to write arbitrary files to any location on the Jenkins controller filesystem, restricted only by the Jenkins user's permissions. This can lead to the deployment of malicious scripts or plugins, enabling remote code execution, system compromise, and significant data exfiltration or service disruption.
Other CVEs affecting jenkins
Jenkins 2.441 and earlier, LTS 2.426.2 and earlier does not disable a feature of its CLI command parser that replaces an '@' character followed by a file path in an argument with the file's contents, allowing unauthenticated attackers to read arbitrary files on the Jenkins controller file system.
A code execution vulnerability exists in the Stapler web framework used by Jenkins 2.153 and earlier, LTS 2.138.3 and earlier in stapler/core/src/main/java/org/kohsuke/stapler/MetaClass.java that allows attackers to invoke some methods on Java objects by accessing crafted URLs that were not intended to be invoked this way.
Jenkins versions 2.56 and earlier as well as 2.46.1 LTS and earlier are vulnerable to an unauthenticated remote code execution. An unauthenticated remote code execution vulnerability allowed attackers to transfer a serialized Java `SignedObject` object to the Jenkins CLI, that would be deserialized using a new `ObjectInputStream`, bypassing the existing blacklist-based protection mechanism. We're fixing this issue by adding `SignedObject` to the blacklist. We're also backporting the new HTTP CLI protocol from Jenkins 2.54 to LTS 2.46.2, and deprecating the remoting-based (i.e. Java serialization) CLI protocol, disabling it by default.
The Fingerprints pages in Jenkins before 1.638 and LTS before 1.625.2 might allow remote attackers to obtain sensitive job and build name information via a direct request.
In Jenkins 2.579 and earlier, LTS 2.568.2 and earlier, transient fields cannot be excluded from deserialization, allowing attackers able to submit configuration updates to specify the values of transient fields that will be deserialized, the impact depending on how those fields are used.
In Jenkins 2.579 and earlier, LTS 2.568.2 and earlier, the system log viewer does not escape log record metadata (source, level, and timestamp) resulting in a stored cross-site scripting (XSS) vulnerability exploitable by attackers in control of agent processes.
In Jenkins 2.579 and earlier, LTS 2.568.2 and earlier, objects of types marked as storing their configuration in independent top-level configuration files in Jenkins (such as the global configuration and jobs) can appear as nested field values in user-submitted `config.xml` documents and subsequently handle HTTP requests via Stapler, resulting in remote code execution.
In Jenkins 2.567 and earlier, LTS 2.555.2 and earlier, it is possible for attackers to have Jenkins deserialize arbitrary types defined in Jenkins core or plugins from an attacker-controlled `config.xml` submission in a way that allows them to handle HTTP requests afterwards. This can be used to impersonate any user and send HTTP requests on their behalf, up to and including use of the Script Console to run arbitrary code, or to read arbitrary files from the Jenkins controller.