Kestrel
CVE-2026-10043DGX_A· 2026년 8월 3일 AM 08:05

[공격] 분석 — 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을 인자로 받아 실행.
  • 트리거 조건

    1. 공격자는 외부 저장소(HTTP, S3 등) 혹은 악성 웹 페이지에 조작된 pickle 객체를 포함한 체크포인트 파일을 업로드한다.
    2. 대상 시스템이 ① 자동 동기화·자동 로드 설정이 활성화돼 있거나, ② 사용자가 UI/CLI 를 통해 파일을 직접 열도록 유도받으면(피싱·악성 페이지) 해당 파일이 역직렬화된다.
  • 공격 단계

    1. 정찰 – 대상 서버에 Composer가 설치된 CI 러너 또는 모델 레지스트리 연동 설정(auto_load=True, COMPOSER_CHECKPOINT_DIR) 존재 여부를 탐색한다. 로그·환경 변수, 공개 문서 등을 통해 확인한다.
    2. 초기 접근 – 악성 체크포인트 파일을 제어 가능한 URL에 배치하고, 해당 URL을 피해자에게 전달한다(피싱 메일, 악성 문서, 내부 위협 행위).
    3. 실행·권한 획득 – CI 작업이 자동으로 torch.load(<malicious_url>) 를 수행하거나, 사용자가 UI에서 “Load checkpoint”를 클릭하면 pickle 역직렬화 과정에서 임의 파이썬 코드(os.system, subprocess.Popen)가 실행되어 현재 프로세스(보통 서비스 계정) 권한을 획득한다.
    4. 지속 – 공격자는 생성된 셸/백도어를 시스템 시작 스크립트에 삽입하거나, 악성 모델 파일을 레지스트리에 영구 저장해 다음 파이프라인 실행 시 재사용하도록 만든다.
    5. 영향 – 프로세스 권한으로 파일 시스템 조작·네트워크 연결·비밀키 탈취·추가 페이로드 설치 등 전면적인 침투가 가능하다.
  • 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 에 임의 파일을 쓰는 행위.
  • 모델 레지스트리 동기화 시 예상 외 도메인으로 향하는 네트워크 트래픽.

🛡️ 완화 방안

  1. 즉시 조치 – 자동 체크포인트 로드(auto_load 등)를 비활성화하고, 수동 검증 절차를 적용합니다.
  2. 무결성 검증 – 모델 파일에 디지털 서명·해시 기반 검증을 도입하고, 서명되지 않은 파일은 로드하지 않도록 정책 설정합니다.
  3. 샌드박스torch.load 를 제한된 컨테이너 혹은 AppArmor/SELinux 프로파일에서 실행하여 시스템 콜을 최소화합니다.
  4. CI/CD 강화 – 파이프라인 단계에서 외부 레지스트리 동기화를 차단하고, 허용된 모델 저장소만 사용하도록 ACL 적용·로그를 SIEM에 연동합니다.
  5. 패치 적용 – MosaicML Composer 공급자가 제공하는 보안 업데이트가 발표되면 즉시 배포합니다.

⚖️ 위험도 / 우선순위

  • 조치: scheduled (이번 주 내)
  • 근거: CVSS=7.8 · non-KEV · EPSS=0.00294 · exploit=hard · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…