CVE-2019-10334
Description
Jenkins ElectricFlow Plugin 1.1.5 and earlier disabled SSL/TLS and hostname verification globally for the Jenkins master JVM when MultipartUtility.java is used to upload files.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Jenkins ElectricFlow Plugin up to 1.1.5 disables SSL/TLS certificate validation and hostname verification globally for the JVM when sending multipart file uploads.
Vulnerability
Overview CVE-2019-10334 affects the Jenkins ElectricFlow Plugin (formerly CloudBees CD Plugin) versions 1.1.5 and earlier. The plugin, specifically in the MultipartUtility.java class, disables all SSL/TLS certificate validation and hostname verification for the entire Jenkins master JVM when performing file uploads [1][3]. This is achieved by installing a trust-all TrustManager and a permissive HostnameVerifier globally via HttpsURLConnection.setDefaultSSLSocketFactory() and related methods [4].
Exploitation and
Attack Surface The vulnerability is triggered whenever the plugin uses MultipartUtility to upload files. The insecure configuration is applied globally, meaning that any HTTPS connection made by the Jenkins master—including those by other plugins or core functionality—will accept any SSL certificate and any hostname, including self-signed or malicious certificates [1][3]. An attacker does not need to be authenticated to Jenkins; they can exploit this by intercepting network traffic (e.g., man-in-the-middle attack) or by hosting a malicious server that the plugin connects to [2].
Impact
An attacker positioned to intercept or redirect network traffic from the Jenkins master can perform man-in-the-middle attacks, decrypt, modify, or inject data into any HTTPS connection. This could lead to disclosure of sensitive information (e.g., credentials, build artifacts), manipulation of transmitted data, or further compromise of the Jenkins environment. The global disablement of SSL/TLS verification is a severe weakness that affects the security posture of the entire Jenkins instance.
Mitigation
The vulnerability is fixed in ElectricFlow Plugin version 1.1.7 [2][4]. The fix adds a parameter ignoreSslConnectionErrors to the MultipartUtility constructor and removes the global trust-all trust manager and hostname verifier, instead limiting insecure connections only to those explicitly intended by the administrator [4]. Users should update to version 1.1.7 or later immediately. No workaround is available; using a plugin version below 1.1.5 leaves the Jenkins instance vulnerable.
AI Insight generated on May 22, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
org.jenkins-ci.plugins:electricflowMaven | < 1.1.7 | 1.1.7 |
Affected products
2- Jenkins project/Jenkins ElectricFlow Pluginv5Range: 1.1.5 and earlier
Patches
1d0b807d5e2de[SECURITY-1411]
2 files changed · +21 −35
src/main/java/org/jenkinsci/plugins/electricflow/ElectricFlowClient.java+1 −1 modified@@ -389,7 +389,7 @@ public String uploadArtifact( + "/commander/cgi-bin/publishArtifactAPI.cgi"; // return sessionId; - MultipartUtility multipart = new MultipartUtility(requestURL, CHARSET); + MultipartUtility multipart = new MultipartUtility(requestURL, CHARSET, this.getIgnoreSslConnectionErrors()); multipart.addFormField("artifactName", name); multipart.addFormField("artifactVersionVersion", version);
src/main/java/org/jenkinsci/plugins/electricflow/MultipartUtility.java+20 −34 modified@@ -9,6 +9,9 @@ package org.jenkinsci.plugins.electricflow; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -37,6 +40,7 @@ public class MultipartUtility //~ Static fields/initializers --------------------------------------------- private static final String LINE_FEED = "\r\n"; + private static final Log log = LogFactory.getLog(MultipartUtility.class); //~ Instance fields -------------------------------------------------------- @@ -54,47 +58,18 @@ public class MultipartUtility * * @param requestURL URL for request * @param charset name of encodings + * @param ignoreSslConnectionErrors Override Electric Flow SSL Validation Check * - * @throws NoSuchAlgorithmException Exception - * @throws KeyManagementException Exception * @throws IOException Exception */ public MultipartUtility( String requestURL, - String charset) - throws NoSuchAlgorithmException, KeyManagementException, IOException + String charset, + boolean ignoreSslConnectionErrors) + throws IOException { this.charset = charset; - TrustManager[] trustAllCerts = new TrustManager[] { - new X509TrustManager() { - @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() - { - return null; - } - - @Override public void checkClientTrusted( - X509Certificate[] certs, - String authType) { } - - @Override public void checkServerTrusted( - X509Certificate[] certs, - String authType) { } - } - }; - - // Install the all-trusting trust manager - SSLContext sc = SSLContext.getInstance("SSL"); - - sc.init(null, trustAllCerts, new java.security.SecureRandom()); - HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); - - // Create all-trusting host name verifier - HostnameVerifier allHostsValid = (hostname, session) -> true; - - // Install the all-trusting host verifier - HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); - // creates a unique boundary based on time stamp boundary = "===" + System.currentTimeMillis() + "==="; @@ -107,10 +82,21 @@ public MultipartUtility( httpConn.setDoInput(true); httpConn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); + + if (ignoreSslConnectionErrors) { + try { + httpConn.setSSLSocketFactory(RelaxedSSLContext.getInstance().getSocketFactory()); + } catch (KeyManagementException | NoSuchAlgorithmException e) { + if (log.isDebugEnabled()) { + log.debug(e.getMessage(), e); + } + } + httpConn.setHostnameVerifier(RelaxedSSLContext.allHostsValid); + } + outputStream = httpConn.getOutputStream(); writer = new PrintWriter(new OutputStreamWriter(outputStream, charset), true); - // Create a trust manager that does not validate certificate chains } //~ Methods ----------------------------------------------------------------
Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
7- github.com/advisories/GHSA-xmqv-pfw7-qmj7ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2019-10334ghsaADVISORY
- www.openwall.com/lists/oss-security/2019/06/11/1ghsamailing-listx_refsource_MLISTWEB
- www.securityfocus.com/bid/108747mitrevdb-entryx_refsource_BID
- github.com/jenkinsci/electricflow-plugin/commit/d0b807d5e2de07a90d902401bae033c2907b850aghsaWEB
- jenkins.io/security/advisory/2019-06-11/ghsax_refsource_CONFIRMWEB
- web.archive.org/web/20200227033720/http://www.securityfocus.com/bid/108747ghsaWEB
News mentions
0No linked articles in our index yet.