Skip to main content
← All vulnerabilities
CVE-2024-34359PYSEC-2026-392GHSA-56XG-WFCC-G829

llama-cpp-python vulnerable to Remote Code Execution by Server-Side Template Injection in Model Metadata

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 0.2.72
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: poc
  • Automatable: no
  • Technical impact: total

Summary

llama-cpp-python is the Python bindings for llama.cpp. `llama-cpp-python` depends on class `Llama` in `llama.py` to load `.gguf` llama.cpp or Latency Machine Learning Models. The `init` constructor built in the `Llama` takes several parameters to configure the loading and running of the model. Other than `NUMA, LoRa settings`, `loading tokenizers,` and `hardware settings`, `init` also loads the `chat template` from targeted `.gguf` 's Metadata and furtherly parses it to `llama_chat_format.Jinja2ChatFormatter.to_chat_handler()` to construct the `self.chat_handler` for this model. Nevertheless, `Jinja2ChatFormatter` parse the `chat template` within the Metadate with sandbox-less `jinja2.Environment`, which is furthermore rendered in `call` to construct the `prompt` of interaction. This allows `jinja2` Server Side Template Injection which leads to remote code execution by a carefully constructed payload.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: poc · Automatable: no · Technical impact: total

  3. Record last updated
  4. EPSS reached 10%

    FIRST estimates at least a 10% chance of exploitation in the next 30 days

Affected versions

  • abetlen llama-cpp-python

    From 0.2.30 · through 0.2.71

  • llama-cpp-pythonPyPI

    From 0.2.30 · fixed in 0.2.72

References 2

GitHub · abetlen/llama-cpp-python