CVE-2019-10399
Description
A sandbox bypass vulnerability in Jenkins Script Security Plugin 1.62 and earlier related to the handling of property names in property expressions in increment and decrement expressions allowed attackers to execute arbitrary code in sandboxed scripts.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
A sandbox bypass vulnerability in Jenkins Script Security Plugin 1.62 and earlier allows attackers to execute arbitrary code in sandboxed scripts via crafted property names in increment and decrement expressions.
Overview
A sandbox bypass vulnerability in Jenkins Script Security Plugin versions 1.62 and earlier allowed attackers to execute arbitrary code within the Groovy sandbox by crafting property names in property expressions used in increment (++) and decrement (--) expressions. [1][2] This flaw is part of a group of sandbox bypass issues disclosed in the same security advisory. [3]
Exploitation
To exploit this vulnerability, an attacker needs the ability to define and save a script that uses sandboxed Groovy execution. Typically, this requires a Jenkins user with permissions such as Job/Configure (not necessarily administrator-level Overall/RunScripts) in plugins that integrate with the Script Security plugin. [1] By crafting a property expression that uses specially constructed property names in increment or decrement expressions, the attacker can circumvent the sandbox restrictions that normally prevent access to sensitive APIs. [1][2][3]
Impact
Successful exploitation allows the attacker to execute arbitrary code outside the sandbox, effectively bypassing all script security protections. This can lead to complete compromise of the Jenkins controller, including unauthorized access to all managed resources, credentials, and sensitive information. [2][3] The Jenkins Security Advisory rated this vulnerability as High severity. [3]
Mitigation
The vulnerability was fixed in Script Security Plugin version 1.63, released on 2019-09-12. [4] Users are strongly advised to upgrade to version 1.63 or later. No workarounds are mentioned in the advisory. [3][4]
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:script-securityMaven | < 1.63 | 1.63 |
Affected products
2- Jenkins project/Jenkins Script Security Pluginv5Range: 1.62 and earlier
Patches
1b28e4dc5584e[SECURITY-1538] Problems with method and property names and increment/decrement operators
2 files changed · +36 −1
pom.xml+1 −1 modified@@ -50,7 +50,7 @@ <dependency> <groupId>org.kohsuke</groupId> <artifactId>groovy-sandbox</artifactId> - <version>1.22</version> + <version>1.23</version> <exclusions> <exclusion> <groupId>org.codehaus.groovy</groupId>
src/test/java/org/jenkinsci/plugins/scriptsecurity/sandbox/groovy/SandboxInterceptorTest.java+35 −0 modified@@ -1226,4 +1226,39 @@ public void scriptInitializersClassSyntax() throws Exception { " def run() { MyScript.foo }\n" + "}\n"); } + + @Issue("SECURITY-1538") + @Test public void blockMethodNameInMethodCalls() throws Exception { + assertRejected(new GenericWhitelist(), "staticMethod jenkins.model.Jenkins getInstance", + "import jenkins.model.Jenkins\n" + + "1.({ Jenkins.getInstance(); 'toString' }())()"); + } + + @Issue("SECURITY-1538") + @Test public void blockPropertyNameInAssignment() throws Exception { + assertRejected(new GenericWhitelist(), "staticMethod jenkins.model.Jenkins getInstance", + "import jenkins.model.Jenkins\n" + + "class Test { def x = 0 }\n" + + "def t = new Test()\n" + + "t.({ Jenkins.getInstance(); 'x' }()) = 1\n"); + } + + @Issue("SECURITY-1538") + @Test public void blockPropertyNameInPrefixPostfixExpressions() throws Exception { + assertRejected(new GenericWhitelist(), "staticMethod jenkins.model.Jenkins getInstance", + "import jenkins.model.Jenkins\n" + + "class Test { def x = 0 }\n" + + "def t = new Test()\n" + + "t.({ Jenkins.getInstance(); 'x' }())++\n"); + } + + @Issue("SECURITY-1538") + @Test public void blockSubexpressionsInPrefixPostfixExpressions() throws Exception { + assertRejected(new GenericWhitelist(), "staticMethod jenkins.model.Jenkins getInstance", + "import jenkins.model.Jenkins\n" + + "++({ Jenkins.getInstance(); 1 }())\n"); + assertRejected(new GenericWhitelist(), "staticMethod jenkins.model.Jenkins getInstance", + "import jenkins.model.Jenkins\n" + + "({ Jenkins.getInstance(); 1 }())++\n"); + } }
Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
5- github.com/advisories/GHSA-m26f-w3h5-62fjghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2019-10399ghsaADVISORY
- www.openwall.com/lists/oss-security/2019/09/12/2ghsamailing-listx_refsource_MLISTWEB
- github.com/jenkinsci/script-security-plugin/commit/b28e4dc5584ef6515aeb9bc834691176546d0689ghsaWEB
- jenkins.io/security/advisory/2019-09-12/ghsax_refsource_CONFIRMWEB
News mentions
0No linked articles in our index yet.