← 목록으로

AI 모델 공급망 공격: 신뢰할 수 없는 모델 파일의 위험

[AI] AI 보안 · 작성: 2026-07-19 19:36:26 · 조회 2

모델 파일을 다운로드해서 그대로 로드하는 행위가, 신뢰할 수 없는 실행 파일을 다운로드해서 실행하는 것과 본질적으로 다르지 않을 수 있다는 게 이 공격 클래스의 핵심이다. "그냥 가중치(weight) 숫자 덩어리 아닌가?"라고 생각하기 쉽지만, 실제로는 그렇지 않은 포맷이 여전히 널리 쓰인다.

왜 모델 파일이 위험할 수 있는가: pickle 문제

PyTorch 모델의 전통적인 저장 포맷(.pt, .pth)은 내부적으로 Python의 pickle 모듈을 사용한다. 리버싱/Web 카테고리 글에서 다룬 "안전하지 않은 역직렬화"가 여기서 그대로 재현된다 — pickle.load()는 파일에 담긴 임의의 Python 객체 생성 코드를 실행할 수 있고, __reduce__ 메서드를 악용하면 모델을 불러오는 순간 임의 명령이 실행되도록 만들 수 있다.

import torch
model = torch.load("downloaded_model.pt")  # 이 한 줄이 임의 코드 실행일 수 있다

모델을 "로드"만 했을 뿐인데 실제로는 악성코드를 실행시킨 것과 같은 상황이 벌어질 수 있다. HuggingFace 같은 대형 모델 허브도 이 문제를 인지하고 스캐너를 운영하지만, 스캐너를 우회하는 새로운 페이로드가 계속 발견되고 있다.

안전한 대안: Safetensors

이 문제를 근본적으로 막기 위해 나온 포맷이 safetensors다. 실행 가능한 코드 없이 순수하게 텐서(숫자 배열) 데이터만 담을 수 있도록 설계되어서, 로드 과정에서 임의 코드 실행이 구조적으로 불가능하다. 최근 배포되는 모델은 .safetensors 형식을 함께 제공하는 경우가 많아졌고, 가능하면 이쪽을 우선 사용하는 게 안전하다.

그 외 공급망 공격 벡터

학습 데이터 오염 (Data Poisoning)

공개적으로 수집되는 학습 데이터(웹 크롤링, 공개 데이터셋)에 악의적으로 조작된 샘플을 섞어 넣어서, 특정 트리거 입력이 들어왔을 때만 모델이 오작동하게 만드는 백도어를 심는 방식. 겉보기엔 정상 모델과 동일하게 동작하다가 특정 조건에서만 발현되어 탐지가 어렵다.

파인튜닝 서비스형(Fine-tuning-as-a-Service) 남용

사용자가 제공한 데이터로 파인튜닝해주는 서비스에, 안전 가드레일을 무력화하는 데이터를 섞어 넣어 검열되지 않은 모델을 우회적으로 만들어내는 시나리오도 보고된 바 있다.

의존성 패키지 공급망

모델 자체가 아니라, 추론에 쓰이는 라이브러리(예: 특정 추론 서버, 토크나이저 패키지)에 취약점이나 악성 코드가 심어지는 경우 — 이건 전통적인 오픈소스 패키지 공급망 공격과 완전히 동일한 문제다.

방어 체크리스트

"AI 모델도 결국 신뢰할 수 없는 출처의 실행 가능한 아티팩트일 수 있다"는 인식이 이 공격 클래스를 이해하는 핵심이다.

AI 보안 카테고리의 글 (3/7)

  1. Prompt Injection: LLM 애플리케이션의 새로운 공격 표면
  2. OWASP LLM Top 10: LLM 애플리케이션 취약점 한눈에 보기
  3. AI 모델 공급망 공격: 신뢰할 수 없는 모델 파일의 위험
  4. Adversarial Examples: 사람 눈에는 안 보이는데 AI는 속는 입력
  5. 모델 추출과 멤버십 추론: AI 서비스에서 새어 나가는 것들
  6. AI 오케스트레이션(멀티 에이전트)의 보안 문제
  7. LLM 탈옥(Jailbreak) 기법과 방어
← OWASP LLM Top 10: LLM 애플리케이션 취약점 한눈에 보기 Adversarial Examples: 사람 눈에는 안 보이는데 AI는 속는 입력 →