CVE-2026-58474: whichllm < 0.5.16 Code Injection via run and snippet commands
whichllm before 0.5.16 contains a code injection vulnerability in the run and snippet commands that allows a remote attacker who controls a HuggingFace repository to achieve arbitrary code execution by crafting a malicious GGUF filename containing double quotes or other special characters. The script generation function in cli.py interpolates HuggingFace-derived values, including GGUF variant filenames from the Hub API siblings rfilename field, directly into Python source code without escaping, allowing the crafted filename to break out of the generated string literal and execute injected code on the user's machine before any model download occurs.
Affected Software
Event History
Frequently Asked Questions
Which installations are affected?
whichllm versions before 0.5.16 are affected when the run or snippet commands process HuggingFace repository metadata.
What does an attacker need to exploit this issue?
An attacker needs control of a HuggingFace repository and must provide a malicious GGUF filename through the repository's Hub API metadata. The filename can contain double quotes or other special characters that escape the generated Python string literal.
Does exploitation require a model to be downloaded?
No. The injected code can execute on the user's machine during script generation, before any model download occurs.
What can be done if an immediate upgrade is not possible?
Avoid using the run and snippet commands with HuggingFace repositories that are not trusted. Upgrade to version 0.5.16 or later when possible.