Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2026-58138 — CVE-2026-58138 — Conductor (3.21.21..<3.30.2) unauthenticated RCE via INLINE GraalVM evaluator (HostAccess.ALL). Lab + PoC, verified e2e (root). | Kitploit
Tools/GitHubGitHub/ch4120n/cve-2026-58138
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationPayload DevelopmentLabs & Practice
GitHubch4120n/cve-2026-58138

CVE-2026-58138

CVE-2026-58138 — Conductor (3.21.21..<3.30.2) unauthenticated RCE via INLINE GraalVM evaluator (HostAccess.ALL). Lab + PoC, verified e2e (root).

View Repository
151 month agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2026-58138 — Conductor Unauthenticated RCE via GraalVM Evaluator

CVE CVSS Status Auth

TL;DR: Orkes/OSS Conductor (versions 3.21.21 to < 3.30.2) evaluates user-supplied JavaScript in INLINE tasks using a GraalVM context with full host access (HostAccess.ALL). Because the community API has no authentication by default, any unauthenticated user can submit a malicious workflow, pivot from the bound JavaScript object to java.lang.Runtime, and achieve as the Conductor process user (often ).

unauthenticated Remote Code Execution (RCE)
root

Table of Contents

  1. Vulnerability Overview
  2. The Root Cause
  3. Exploitation Flow
  4. Quick Start & Reproduction
  5. Impact
  6. Remediation
  7. Detection
  8. Credits & Disclaimer

Vulnerability Overview

AttributeDetails
CVE IdentifierCVE-2026-58138
Affected SoftwareConductor 3.21.21 through 3.30.1
Fixed Version3.30.2 (Commits: 87a7d96, c691e35)
Vulnerability ClassCWE-94: Code Injection (GraalVM polyglot sandbox bypass)
CVSS v3.1 Score9.8 (Critical) AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
AuthenticationNone (Community API is unauthenticated by default)
VerificationConfirmed as root against conductoross/conductor:3.22.3

Version Note: Versions up to ~3.29.x use the plain allowHostAccess(HostAccess.ALL) configuration, which this PoC directly exploits. Versions 3.30.0 and 3.30.1 introduced a partial blocklist (blocking some reflection), but the complete fix (allowHostClassLoading(false) + engine hardening) was only implemented in 3.30.2. This PoC targets the unsandboxed configuration.


The Root Cause

The vulnerability exists in how Conductor configures the GraalVM polyglot context for script evaluation.

In core/.../events/ScriptEvaluator.java (≤ 3.29.x), the context is built like this:

root@kitploit:~
return Context.newBuilder("js")
        .allowHostAccess(HostAccess.ALL)   // DANGER: Full host interop, no sandbox
        .build();

Why this is a game over:

  1. HostAccess.ALL grants the JavaScript engine permission to call any method or access any field on Java host objects.
  2. The INLINE task binds its input parameters to the JavaScript variable $, which is a real Java object.
  3. An attacker can chain Java reflection starting from $: $.getClass().getClass() ➔ java.lang.Class ➔ Class.forName("java.lang.Runtime") ➔ Runtime.getRuntime().exec("sh -c <command>").
  4. The same flaw exists in the Python evaluator (Context.newBuilder("python").allowAllAccess(true)).

Exploitation Flow

The attack requires zero authentication and follows three simple steps:

  1. Register: Send a POST request to /api/metadata/workflow with a malicious workflow definition. The INLINE task contains the reflective JavaScript payload in its expression field.
  2. Execute: Send a POST request to /api/workflow/{workflow_name} to trigger the workflow.
  3. Extract: The GraalVM engine executes the payload. The reflective Runtime.exec runs the OS command, and the PoC cleverly captures the stdout and returns it as the task's result output, which is then fetched via the API.

Quick Start & Reproduction

1. Spin up the Vulnerable Lab

Start a local instance of the vulnerable Conductor version using Docker.

root@kitploit:~
# Clone the repository and start the lab environment
docker compose -f docker/docker-lab.yml up -d

# Wait ~60 seconds for the all-in-one server to fully boot

2. Execute the PoC

Run the provided Python exploit script. It relies only on the Python standard library (no external dependencies required).

root@kitploit:~
python3 exploit.py http://127.0.0.1:8080 -c "id; hostname; whoami"

3. Expected Output

root@kitploit:~
[*] Target: http://127.0.0.1:8080
[*] Command: 'id; hostname; whoami'
[*] Registering workflow with a malicious INLINE (javascript) task ... (no auth)
[*] Starting workflow execution ... (no auth)
[*] Started workflow id=pwn_1705432100; reading INLINE task output ...

[+] UNAUTHENTICATED RCE CONFIRMED - command output from the Conductor host:
uid=0(root) gid=0(root) groups=0(root)
vbox
Linux 6.18.12+deb13-amd64

Note: The uid=0(root) output proves genuine execution on the host, not a mocked response.


Impact

Successful exploitation grants the attacker arbitrary OS command execution on the Conductor orchestrator host.

Because Conductor is often deployed with elevated privileges to manage infrastructure, this typically results in:

  • Full compromise of the workflow engine.
  • Access to underlying persistence layers (Redis, PostgreSQL, Elasticsearch).
  • Lateral movement via stored credentials or downstream systems triggered by workflows.

Remediation

  1. Upgrade Immediately: Update to Conductor ≥ 3.30.2. In this version, JS and Python evaluators no longer run with host access or class loading enabled.
  2. Defense in Depth:
    • Place an authentication gateway (e.g., OAuth2, API Keys) in front of the Conductor API.
    • Run the Conductor server process as a non-root, least-privilege user.
    • Implement strict network segmentation to restrict who can register or execute workflows.

Detection

Monitor your environment for the following indicators of compromise (IoCs):

  • Workflow Definitions: Flag any INLINE, LAMBDA, DO_WHILE, or SWITCH tasks containing expression strings that reference:
    • getClass, forName, Runtime, exec, ProcessBuilder
    • java.lang.reflect or generic java. package access
  • Host-Level Alerts: Monitor for Conductor JVM processes unexpectedly spawning shell interpreters (sh, bash, cmd.exe) or making outbound network connections.

For a deep dive into the reflection chain, version-specific evaluator configurations, and patch analysis, refer to ANALYSIS.md.


Credits & Disclaimer

  • Repository Maintenance: Ch4120N
  • PoC Refinement: (Ch4120N/CVE-2026-58138)
  • Advisory Reference: Orkes Conductor unauth RCE via GraalVM script evaluators

Disclaimer: This repository contains an independent, reproducible lab and Proof of Concept (PoC) intended strictly for defensive, educational, and authorized security testing purposes. Do not use this code against systems you do not own or have explicit written permission to test. The authors assume no liability for misuse.

Download Tool