CVE-2025-6518: pyspur Incomplete Filtering of Special Elements allowed by SingleLLMCallNode function
6.3
Basic Information
Technical Details
| Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
|---|---|---|---|
| pyspur | pip | <= 0.1.18 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The vulnerability exists in the run method of the SingleLLMCallNode class, located in backend/pyspur/nodes/llm/single_llm_call.py. The method directly uses the user_message from the node's configuration to render a Jinja2 template without any prior sanitization or validation. This allows an attacker to inject arbitrary template code. The GitHub issue #289 provides a clear analysis and a Proof-of-Concept (POC) that confirms the vulnerability. The POC shows how a specially crafted user_message can be used to execute arbitrary commands on the server by accessing Python's object hierarchy through the template. The root cause is the lack of input sanitization on the user_message before it is passed to the Jinja2 Template constructor and rendered. This allows for a classic Server-Side Template Injection (SSTI) attack.