
Kit di riproduzione per CVE-2026-58138, una vulnerabilità di iniezione di codice con CVSS 9.8 in Conductor. Contiene la regola OpenTaint e le approssimazioni GraalVM, test isolati della regola, il risultato della scansione e un exploit funzionante.
La scansione prende di mira Conductor v3.23.0 e rileva due segnalazioni dall'input di workflow non autenticato agli evaluator GraalVM con accesso completo all'host. Ogni segnalazione contiene quattro flussi di entry-point HTTP:
core/src/main/java/com/netflix/conductor/core/events/ScriptEvaluator.java:203core/src/main/java/com/netflix/conductor/core/execution/evaluators/PythonEvaluator.java:63.opentaint/rules/ - la regola di join e il sink Context.eval con accesso completo all'host.opentaint/model/config/ - modelli di pass-through per i builder fluenti GraalVM.opentaint/test-projects/ - 15 campioni di regola positivi e negativiresults/report.sarif - le segnalazioni OpenTaint riprodottepoc/poc_inline_lambda_rce.py - l'exploit funzionanteRichiede OpenTaint e JDK 21.
opentaint compile \
.opentaint/test-projects/graaljs-polyglot-code-injection \
--output /tmp/conductor-rule-model
opentaint test rule run /tmp/conductor-rule-model \
--ruleset .opentaint/rules \
--passthrough-approximations .opentaint/model/config
Risultato atteso: Passed: 15, failed: 0.
git clone --depth 1 --branch v3.23.0 \
https://github.com/conductor-oss/conductor.git conductor
opentaint scan ./conductor \
--ruleset builtin \
--ruleset .opentaint/rules \
--rule-id java/security/graaljs-polyglot-code-injection.yaml:graaljs-polyglot-code-injection \
--passthrough-approximations .opentaint/model/config \
--max-memory 16G \
--output results/report.sarif
opentaint summary results/report.sarif --show-findings
Risultato atteso: due segnalazioni java/security/graaljs-polyglot-code-injection ai sink elencati sopra. Utilizza il valore completo <rule-file>:<rule-id> mostrato nel comando affinché OpenTaint carichi anche le regole source e sink referenziate dalla join.
Avvia Conductor v3.23.0 con la sua configurazione server predefinita, quindi esegui:
# JavaScript INLINE task
python3 poc/poc_inline_lambda_rce.py --base-url http://localhost:8000
# Other supported paths
python3 poc/poc_inline_lambda_rce.py --task-type lambda --variant js
python3 poc/poc_inline_lambda_rce.py --task-type inline --variant python
Lo script termina con stato 0 dopo aver confermato l'esecuzione del comando. Il PoC supporta anche DO_WHILE e SWITCH. Eseguilo con --help per tutte le opzioni.
Conductor ha corretto la vulnerabilità nella versione 3.30.2. Vedi il case study per il percorso vulnerabile, i dettagli dell'exploit, la progettazione della regola e l'analisi della patch.