CVE-2025-26074:
Conductor vulnerable to OS command injection through unrestricted access to Java classes
9.8
Basic Information
Technical Details
Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
---|---|---|---|
org.conductoross:conductor-core | maven | < 3.21.13 | 3.21.13 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability is an OS command injection weakness in the Conductor workflow engine, stemming from the insecure use of the Nashorn Javascript engine. The core issue is that the script engine was being initialized without any restrictions, which provided any executed Javascript code with full access to the Java Virtual Machine's (JVM) class library. An attacker could exploit this by crafting a Javascript payload that instantiates and uses powerful Java classes, such as java.lang.Runtime
, to execute arbitrary commands on the host operating system.
The security patch rectifies this by consistently applying the --no-java
flag during the instantiation of the Nashorn ScriptEngine
. This flag acts as a sandbox, effectively preventing the script from accessing any Java classes and thereby neutralizing the command injection vector.
The analysis of the provided commit e9816501df1e364a3d39d7fe37d6e167c40eaa1b
pinpointed several functions where these insecure script engines were being created:
-
com.netflix.conductor.core.events.ScriptEvaluator.eval
: This is the most critical function, as it relies on a shared script engine (configured ininitEngine
) to evaluate scripts for event handlers. This represents the primary and most likely path for exploitation. -
com.netflix.conductor.sdk.workflow.def.tasks.Javascript.validate
andtest
: These methods, found in two separate SDK modules, also created unsandboxed script engines for the purpose of validating and testing Javascript-based workflow tasks. Although these might be less common exploitation scenarios compared to event handlers, they still posed a significant security risk.
The patch comprehensively addresses the vulnerability by ensuring that every instance where the Nashorn engine is created is now properly sandboxed with the --no-java
flag.
Vulnerable functions
com.netflix.conductor.core.events.ScriptEvaluator.eval
core/src/main/java/com/netflix/conductor/core/events/ScriptEvaluator.java
com.netflix.conductor.sdk.workflow.def.tasks.Javascript.validate
conductor-clients/java/conductor-java-sdk/sdk/src/main/java/com/netflix/conductor/sdk/workflow/def/tasks/Javascript.java
com.netflix.conductor.sdk.workflow.def.tasks.Javascript.test
conductor-clients/java/conductor-java-sdk/sdk/src/main/java/com/netflix/conductor/sdk/workflow/def/tasks/Javascript.java
com.netflix.conductor.sdk.workflow.def.tasks.Javascript.validate
java-sdk/src/main/java/com/netflix/conductor/sdk/workflow/def/tasks/Javascript.java
com.netflix.conductor.sdk.workflow.def.tasks.Javascript.test
java-sdk/src/main/java/com/netflix/conductor/sdk/workflow/def/tasks/Javascript.java