Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-58138 — CVE-2026-58138 — Conductor (3.21.21..<3.30.2) RCE non authentifié via l'évaluateur INLINE GraalVM (HostAccess.ALL). Laboratoire + PoC, vérifié e2e (root). | Kitploit
Outils/GitHubGitHub/ch4120n/cve-2026-58138
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges UtilesLabs et Pratique
GitHubch4120n/cve-2026-58138

CVE-2026-58138

CVE-2026-58138 — Conductor (3.21.21..<3.30.2) RCE non authentifié via l'évaluateur INLINE GraalVM (HostAccess.ALL). Laboratoire + PoC, vérifié e2e (root).

Voir le dépôt
15il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-58138 — RCE non authentifié sur Conductor via l'évaluateur GraalVM

CVE CVSS Status Auth

TL;DR: Orkes/OSS Conductor (versions 3.21.21 à < 3.30.2) évalue du JavaScript fourni par l'utilisateur dans les tâches INLINE à l'aide d'un contexte GraalVM avec un accès complet à l'hôte (HostAccess.ALL). Comme l'API communautaire n'a aucune authentification par défaut, tout utilisateur non authentifié peut soumettre un workflow malveillant, pivoter de l'objet JavaScript lié à java.lang.Runtime et en tant qu'utilisateur du processus Conductor (souvent ).

exécuter du code à distance (RCE) sans authentification
root

Table des matières

  1. Aperçu de la vulnérabilité
  2. La cause racine
  3. Flux d'exploitation
  4. Démarrage rapide et reproduction
  5. Impact
  6. Remédiation
  7. Détection
  8. Crédits et avertissement

Aperçu de la vulnérabilité

AttributDétails
Identifiant CVECVE-2026-58138
Logiciel concernéConductor 3.21.21 à 3.30.1
Version corrigée3.30.2 (Commits : 87a7d96, c691e35)
Classe de vulnérabilitéCWE-94 : Injection de code (contournement du bac à sable polyglotte GraalVM)
Score CVSS v3.19.8 (Critique) AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
AuthentificationAucune (l'API communautaire est non authentifiée par défaut)
VérificationConfirmée en tant que root contre conductoross/conductor:3.22.3

Note de version : Les versions jusqu'à ~3.29.x utilisent la configuration simple allowHostAccess(HostAccess.ALL), que ce PoC exploite directement. Les versions 3.30.0 et 3.30.1 ont introduit une liste noire partielle (bloquant certaines réflexions), mais la correction complète (allowHostClassLoading(false) + durcissement du moteur) n'a été implémentée qu'en 3.30.2. Ce PoC cible la configuration sans bac à sable.


La cause racine

La vulnérabilité réside dans la façon dont Conductor configure le contexte polyglotte GraalVM pour l'évaluation de scripts.

Dans core/.../events/ScriptEvaluator.java (≤ 3.29.x), le contexte est construit ainsi :

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

Pourquoi c'est une porte ouverte :

  1. HostAccess.ALL accorde au moteur JavaScript la permission d'appeler toute méthode ou d'accéder à tout champ sur les objets hôtes Java.
  2. La tâche INLINE lie ses paramètres d'entrée à la variable JavaScript $, qui est un véritable objet Java.
  3. Un attaquant peut enchaîner la réflexion Java à partir de $ : $.getClass().getClass() ➔ java.lang.Class ➔ Class.forName("java.lang.Runtime") ➔ Runtime.getRuntime().exec("sh -c <commande>").
  4. La même faille existe dans l'évaluateur Python (Context.newBuilder("python").allowAllAccess(true)).

Flux d'exploitation

L'attaque ne nécessite aucune authentification et suit trois étapes simples :

  1. Enregistrer : Envoyer une requête POST à /api/metadata/workflow avec une définition de workflow malveillant. La tâche INLINE contient la charge utile JavaScript réflexive dans son champ expression.
  2. Exécuter : Envoyer une requête POST à /api/workflow/{nom_workflow} pour déclencher le workflow.
  3. Extraire : Le moteur GraalVM exécute la charge utile. Le Runtime.exec réflexif exécute la commande OS, et le PoC capture intelligemment la sortie standard (stdout) et la renvoie comme résultat de la tâche result, récupérée ensuite via l'API.

Démarrage rapide et reproduction

1. Lancer le laboratoire vulnérable

Démarrez une instance locale de la version vulnérable de Conductor avec Docker.

root@kitploit:~
# Clonez le dépôt et démarrez l'environnement de laboratoire
docker compose -f docker/docker-lab.yml up -d

# Attendez environ 60 secondes que le serveur tout-en-un démarre complètement

2. Exécuter le PoC

Exécutez le script d'exploitation Python fourni. Il ne nécessite que la bibliothèque standard Python (aucune dépendance externe).

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

3. Sortie attendue

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

Remarque : La sortie uid=0(root) prouve une exécution réelle sur l'hôte, pas une réponse simulée.


Impact

Une exploitation réussie accorde à l'attaquant l'exécution de commandes OS arbitraires sur l'hôte orchestrateur Conductor.

Comme Conductor est souvent déployé avec des privilèges élevés pour gérer l'infrastructure, cela entraîne généralement :

  • Une compromission totale du moteur de workflow.
  • L'accès aux couches de persistance sous-jacentes (Redis, PostgreSQL, Elasticsearch).
  • Un mouvement latéral via des identifiants stockés ou des systèmes en aval déclenchés par les workflows.

Remédiation

  1. Mettez à jour immédiatement : Passez à Conductor ≥ 3.30.2. Dans cette version, les évaluateurs JS et Python ne fonctionnent plus avec l'accès à l'hôte ou le chargement de classes activé.
  2. Défense en profondeur :
    • Placez une passerelle d'authentification (ex. OAuth2, clés API) devant l'API Conductor.
    • Exécutez le processus serveur Conductor avec un utilisateur non root et aux privilèges minimaux.
    • Mettez en œuvre une segmentation réseau stricte pour limiter qui peut enregistrer ou exécuter des workflows.

Détection

Surveillez votre environnement pour les indicateurs de compromission (IoCs) suivants :

  • Définitions de workflow : Signalez toute tâche INLINE, LAMBDA, DO_WHILE ou SWITCH dont les chaînes expression référencent :
    • getClass, forName, Runtime, exec, ProcessBuilder
    • java.lang.reflect ou un accès générique au package java.
  • Alertes au niveau hôte : Surveillez les processus JVM Conductor qui lancent de manière inattendue des interpréteurs de shell (sh, bash, cmd.exe) ou établissent des connexions réseau sortantes.

Pour une analyse approfondie de la chaîne de réflexion, des configurations spécifiques aux versions de l'évaluateur et de l'analyse du correctif, consultez ANALYSIS.md.


Crédits et avertissement

  • Maintenance du dépôt : Ch4120N
  • Raffinement du PoC : (Ch4120N/CVE-2026-58138)
  • Référence de l'avis : Orkes Conductor unauth RCE via GraalVM script evaluators

Avertissement : Ce dépôt contient un laboratoire reproductible indépendant et une preuve de concept (PoC) destinés strictement à des fins défensives, éducatives et de tests de sécurité autorisés. N'utilisez pas ce code contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite explicite. Les auteurs déclinent toute responsabilité en cas d'utilisation abusive.

Télécharger l’outil