[공격] 분석 — CVE-2026-10043
The MosaicML Composer checkpoint deserialization flaw enables RCE when a malicious model file is loaded—disable automatic loads and enforce signed‑model verification immediately.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00294 · 악용난이도 hard
🔍 공격 기법
-
공격 표면
- Composer 내부
torch.load·pickle.load가 호출되는 체크포인트 로드 경로(*.ckpt,*.pth). - CI/CD 파이프라인, Model Registry 동기화, 웹 UI/REST API(예:
/load_checkpoint) 등에서 파일 경로나 URL을 인자로 받아 실행.
- Composer 내부
-
트리거 조건
- 공격자는 외부 저장소(HTTP, S3 등) 혹은 악성 웹 페이지에 조작된 pickle 객체를 포함한 체크포인트 파일을 업로드한다.
- 대상 시스템이 ① 자동 동기화·자동 로드 설정이 활성화돼 있거나, ② 사용자가 UI/CLI 를 통해 파일을 직접 열도록 유도받으면(피싱·악성 페이지) 해당 파일이 역직렬화된다.
-
공격 단계
- 정찰 – 대상 서버에 Composer가 설치된 CI 러너 또는 모델 레지스트리 연동 설정(
auto_load=True,COMPOSER_CHECKPOINT_DIR) 존재 여부를 탐색한다. 로그·환경 변수, 공개 문서 등을 통해 확인한다. - 초기 접근 – 악성 체크포인트 파일을 제어 가능한 URL에 배치하고, 해당 URL을 피해자에게 전달한다(피싱 메일, 악성 문서, 내부 위협 행위).
- 실행·권한 획득 – CI 작업이 자동으로
torch.load(<malicious_url>)를 수행하거나, 사용자가 UI에서 “Load checkpoint”를 클릭하면 pickle 역직렬화 과정에서 임의 파이썬 코드(os.system,subprocess.Popen)가 실행되어 현재 프로세스(보통 서비스 계정) 권한을 획득한다. - 지속 – 공격자는 생성된 셸/백도어를 시스템 시작 스크립트에 삽입하거나, 악성 모델 파일을 레지스트리에 영구 저장해 다음 파이프라인 실행 시 재사용하도록 만든다.
- 영향 – 프로세스 권한으로 파일 시스템 조작·네트워크 연결·비밀키 탈취·추가 페이로드 설치 등 전면적인 침투가 가능하다.
- 정찰 – 대상 서버에 Composer가 설치된 CI 러너 또는 모델 레지스트리 연동 설정(
-
CVSS ↔ 실제 조건 매핑
AV:L→ 공격자는 로컬에서 Composer가 파일을 열도록 유도해야 함(파일 제공은 원격).AC:L→ 자동 로드가 활성화돼 있으면 난이도가 낮음; 수동 로드라면 사용자의 클릭이 필요해 난이도가 상승.PR:N→ 공격자는 별도 권한 없이 파일만 제공하면 된다.UI:R→ 사용자 혹은 CI 스크립트의 동작이 전제됨.
다중 소스에서 일관성이 확인됐으며(교차검증) EPSS 0.00294(실제 악용 가능성은 낮지만 존재)와 CVSS 7.8을 근거로 이번 주 내 ‘scheduled’ 대응으로 우선순위를 지정했습니다.
악용 가능성: 이 취약점은 AV:L·AC:L·PR:N·UI:R 로 평가되었으므로 공격자는 로컬 파일을 직접 제공하고 사용자가 해당 파일을 열도록 유도해야 합니다. 즉, 공격 경로는 torch.save‑형식의 체크포인트를 읽어들이는 Composer API(예: composer.load_checkpoint(path)) 혹은 CLI 옵션에 전달되는 파일‑경로 파라미터가 노출된 점입니다. 사용자가 악성 체크포인트를 로드하면, 검증되지 않은 객체가 역직렬화되어 현재 프로세스 컨텍스트에서 임의 코드를 실행하게 됩니다. EPSS = 0.00294(≈0.3 %)는 실제 공격이 드물지만 가능성을 완전히 배제할 수 없음을 의미하고, KEV에 등재되지 않은 점은 아직 관찰된 악용 사례가 부족함을 반영합니다. 따라서 **공격 난이도는 “hard”**이며, 성공하려면 공격자는 사전에 ① 악성 체크포인트 파일을 준비하고 ② 이를 신뢰할 만한 배포 채널(예: 내부 모델 저장소, 공유 디스크)이나 웹 페이지에 삽입해 사용자를 속여 로드하도록 해야 합니다. 이 과정에서 UI‑레벨의 사용자 상호작용이 반드시 요구되므로 자동화된 원격 스캔만으로는 악용이 어려운 구조입니다.
💥 영향 분석
악성 체크포인트가 로드되면 현재 Composer 프로세스 권한으로 임의 파이썬 코드가 실행되어, 서비스 계정 수준에서 파일·디렉터리 접근, 네트워크 통신, 비밀키 유출 및 추가 악성 페이로드 설치가 가능해집니다.
🔗 관련 취약점·체이닝
- CWE‑502(Untrusted Deserialization) – 본 결함 자체.
- 추정: 동일 환경에서
torch.save로 만든 정상 모델을 검증 없이pickle.load하는 다른 라이브러리와 연계하면, 악성 객체가 여러 단계에 걸쳐 전파될 수 있습니다. - 일반적인 체이닝 패턴: Untrusted Deserialization → Remote Code Execution → Privilege Escalation (서비스 계정이 루트일 경우) → Lateral Movement.
🔎 탐지
torch.load·pickle.load가 외부 URL(http://,https://,s3://) 을 인자로 호출한 로그.- Composer 프로세스가 비정상적인 자식 프로세스를 생성하거나
/tmp,/var/tmp에 임의 파일을 쓰는 행위. - 모델 레지스트리 동기화 시 예상 외 도메인으로 향하는 네트워크 트래픽.
🛡️ 완화 방안
- 즉시 조치 – 자동 체크포인트 로드(
auto_load등)를 비활성화하고, 수동 검증 절차를 적용합니다. - 무결성 검증 – 모델 파일에 디지털 서명·해시 기반 검증을 도입하고, 서명되지 않은 파일은 로드하지 않도록 정책 설정합니다.
- 샌드박스 –
torch.load를 제한된 컨테이너 혹은 AppArmor/SELinux 프로파일에서 실행하여 시스템 콜을 최소화합니다. - CI/CD 강화 – 파이프라인 단계에서 외부 레지스트리 동기화를 차단하고, 허용된 모델 저장소만 사용하도록 ACL 적용·로그를 SIEM에 연동합니다.
- 패치 적용 – MosaicML Composer 공급자가 제공하는 보안 업데이트가 발표되면 즉시 배포합니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00294 · exploit=hard · in_scope=None