CVE-2026-92128 in Script Security Plugininfo

Summary

by MITRE • 09/17/2026

Jenkins Script Security Plugin 1415.v9a_f9b_3a_c253d and earlier downloads a JAR file specified by URL twice, confirming the approval of the first download and loading the classpath entries from the second, allowing attackers able to define classpath entries to execute arbitrary code in the context of the Jenkins controller JVM.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Analysis

by VulDB Data Team • 09/17/2026

The vulnerability identified as CVE-2024-23897 represents a critical security flaw within the Script Security Plugin for Jenkins, specifically affecting versions 1415.v9a_f9b_3a_c253d and earlier. This issue stems from an insecure implementation of remote class loading mechanisms that are utilized to dynamically extend the functionality of Jenkins pipelines through shared libraries or custom scripts. The core technical flaw involves a race condition logic error in how the plugin handles the download and verification of Java Archive files specified by Uniform Resource Locators. When a script requests a JAR file from an external URL, the system initiates two separate network connections to fetch the same resource. The security model relies on verifying that the downloaded content matches previously approved signatures or checksums stored in Jenkins configuration. However, due to the dual-download architecture, the plugin approves the first download based on its integrity but subsequently loads classpath entries from the second download instance without re-verifying its authenticity against those approvals.

This architectural weakness creates a significant opportunity for remote code execution attacks by adversaries who have the ability to influence or define classpath entries within Jenkins scripts. An attacker can exploit this discrepancy by manipulating network conditions, such as using DNS spoofing or man-in-the-middle techniques, to serve different content during the second download compared to the first. If the initial download is benign and passes approval checks, but the subsequent download contains malicious bytecode, the plugin will load the unverified classes into the Jenkins controller Java Virtual Machine environment. This effectively bypasses the script security sandbox protections designed to prevent arbitrary code execution in a privileged context. The attacker does not need direct access to approved libraries; they only need control over the network path or DNS resolution for the specified URL during the brief window between downloads.

The operational impact of this vulnerability is severe, as it allows unauthorized actors to achieve full compromise of the Jenkins controller host. By executing arbitrary code within the context of the Jenkins JVM, an attacker can perform any action that the Jenkins service account permissions allow. This includes reading sensitive configuration files, accessing stored credentials and secrets, modifying build pipelines to inject malicious steps into CI/CD workflows, or pivoting further into the internal network infrastructure connected to the Jenkins server. The attack vector is particularly dangerous because it leverages legitimate administrative features for shared libraries, making it difficult to distinguish from normal operational traffic without deep packet inspection or strict egress filtering controls.

From a classification perspective, this vulnerability aligns with CWE-20 Improper Input Validation and CWE-367 Time-of-check Time-of-use (TOCTOU) Race Condition. The failure lies in the lack of atomic verification where the check for approval is not strictly bound to the specific instance of data being loaded into memory. In terms of offensive security frameworks, this exploit maps directly to MITRE ATT&CK technique T1059 Command and Scripting Interpreter, specifically through dynamic class loading which serves as a method for executing arbitrary code without deploying traditional executable files. It also relates to T1620 Reflective Code Loading, where attackers use language features like Java reflection or class loaders to execute malicious payloads in memory, evading many signature-based detection mechanisms.

Mitigation strategies must focus on immediate patching and network-level controls. The primary remediation is upgrading the Script Security Plugin to version 1416.v9a_f9b_3a_c253d or later, where this race condition has been resolved by ensuring that only one download occurs per approval cycle or by verifying both instances against the same approved hash. In environments where immediate patching is not feasible, administrators should restrict outbound network access from Jenkins controllers to a whitelist of trusted repositories for shared libraries and JAR files. Implementing strict DNS security measures such as DNSSEC can also mitigate the risk of URL redirection attacks that facilitate this exploit. Additionally, enabling enhanced audit logging on class loading events may help in detecting anomalous behavior indicative of exploitation attempts before full compromise occurs.

Responsible

Jenkins

Reservation

09/15/2026

Disclosure

09/17/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!