🇰🇷 한글 설명
MLflow 3.10.0부터 3.17.0 미만 버전에서 프롬프트 브랜치의 모델 버전 소스 경로 검증이 URL 스킴이 있는 경우에만 수행되어, 스킴 없는 상대 경로를 통해 원격 사용자가 서버 로컬 파일을 읽을 수 있습니다. 인증이 없는 기본 설정 서버는 권한 없이 공격 가능하며, 기본 인증 환경에서는 등록된 모델을 생성할 수 있는 인증 사용자가 위험에 노출됩니다. 이 취약점은 3.17.0 버전에서 수정되었습니다.
💡 쉬운 설명
MLflow라는 AI 모델 관리 도구에 결함이 있어, 악의적인 사용자가 서버 안의 파일을 몰래 읽어갈 수 있습니다. 해결하려면 3.17.0 이상 버전으로 업데이트해야 합니다.
🇺🇸 원문 (English)
MLflow is an open source AI engineering platform for agents, large language models, and machine learning models. From 3.10.0 until 3.17.0, the prompt branch in _create_model_version() accepts schemeless relative sources because path validation runs only when a source has a URL scheme, and mlflow.prompt.is_prompt is interpreted by tag presence rather than a true value. A remote caller can store a server-local path as the model version artifact location and use /api/2.0/mlflow/model-versions/get-artifact to read files accessible to the MLflow server process. Default unauthenticated servers require no privileges, while basic-auth deployments are exposed to authenticated users who can create registered models. This issue is fixed in version 3.17.0.
📍 영향받는 시스템
MLflow 3.10.0 이상 3.17.0 미만 버전을 사용하는 모든 서버
⚔️ 공격 벡터
스킴 없는 상대 경로를 모델 버전 소스로 등록한 뒤 get-artifact API로 MLflow 서버 프로세스가 읽을 수 있는 로컬 파일을 조회
🛡️ 대응 방법
MLflow를 3.17.0 이상 버전으로 업그레이드하고, 신뢰할 수 없는 사용자의 모델 등록 권한을 제한하며, 서버에 인증을 적용
🔧 검증 코드
출력된 버전이 3.10.0 이상 3.17.0 미만이면 취약하며, 3.17.0 이상이면 패치된 버전입니다.
pip show mlflow 2>/dev/null | grep -i '^version'