
교육용 Python 타깃 범위로, 모델 로딩 시 TOCTOU를 통한 AI 공급망 RCE인 CVE-2026-22807을 시뮬레이션합니다. 취약한 라이브러리, PoC 스크립트, 보안 연구 및 교육을 위한 동적 페이로드 생성 기능을 포함합니다.
⚠️ 면책 조항 / Disclaimer
이 프로젝트는 보안 연구 및 교육 목적으로만 사용되며, AI 모델 로딩 과정에서의 공급망 공격 원리(Remote Code Execution)를 시연하기 위한 것입니다. 프로덕션 환경에서 생성된 악성 모델을 사용하지 마시고, 이 프로젝트를 불법 공격 행위에 사용하는 것을 엄격히 금지합니다. 개발자는 부적절한 사용으로 인한 법적 책임을 지지 않습니다.
이것은 CVE-2026-22807(전형적인 AI 공급망 취약점 로직)을 시뮬레이션하고 재현하기 위한 경량 Python 타깃 레인지입니다.
이 타깃 레인지는 AI 추론 프레임워크(예: vLLM, Transformers 등)가 모델을 로딩할 때 발생하는 시간 경쟁(TOCTOU) 문제를 시연합니다:
로더가 trust_remote_code=False를 확인하기 전에 모델 아키텍처(AutoConfig/AutoModel)를 파싱하기 위해 사용자가 제공한 Python 코드를 너무 일찍 import하면, 공격자는 보안 검사를 우회하여 원격 코드 실행(RCE) 을 달성할 수 있습니다.
| 파일명 | 역할 | 설명 |
|---|---|---|
vulnerable_lib.py | 🎯 타깃 (Victim) | 취약점이 있는 AI 모델 로더 라이브러리(MiniLLM)를 시뮬레이션합니다. 잘못된 로직 순서를 포함합니다. |
poc_dynamic.py | 🔫 공격자 (Attacker) | 자동화 공격 스크립트입니다. 악성 모델 디렉토리를 생성하고 로딩 프로세스를 트리거합니다. |
dynamic_evil_model/ | 📦 악성 페이로드 | 스크립트 실행 후 자동 생성되는 디렉토리로, config.json과 코드가 주입된 malicious.py를 포함합니다. |
Python 3.x가 설치되어 있는지 확인하세요. 이 타깃 레인지는 서드파티 라이브러리 의존성이 없습니다.
공격 스크립트를 직접 실행하면 기본적으로 whoami 명령이 실행됩니다.
python poc_dynamic.py
예상 출력: 콘솔에 PWNED 문구와 현재 시스템 사용자 이름이 출력된 후, 프로그램이 "Remote code not allowed" 예외를 발생시키는 것을 볼 수 있습니다. 이는 방어가 우회되었음을 증명합니다.
임의의 시스템 명령을 인수로 스크립트에 전달하여 특정 "폭탄"을 생성할 수 있습니다.
Windows 예시 (계산기 실행):
python poc_dynamic.py calc
Linux/Mac 예시 (파일 보기):
python poc_dynamic.py cat /etc/passwd
이 타깃 레인지는 다음과 같은 위험한 프로세스를 재현합니다:
config.json을 읽습니다.auto_map 필드를 발견하고, 모델 클래스를 확인하기 위해 importlib로 대상 Python 파일을 직접 import합니다.import 메커니즘으로 인해 악성 파일 최상위의 os.system()이 즉시 실행됩니다.trust_remote_code를 확인합니다. 이 시점에 차단하고 오류를 발생시키지만, 공격은 이미 완료되었습니다.❌ 취약한 코드 (vulnerable_lib.py):
# 1. 코드 로딩을 먼저 트리거 (RCE는 여기서 발생)
self._resolve_model_class()
# 2. 보안 검사를 나중에 수행 (소 잃고 외양간 고치기)
if not self.trust_remote_code:
raise RuntimeError("Aborted!")
✅ 수정 방안:
# 1. 보안 검사를 먼저 수행
if not self.trust_remote_code and self._needs_remote_code():
raise RuntimeError("Aborted!")
# 2. 검사 통과 후에만 코드 로딩
self._resolve_model_class()