HIGHCVSS 7.5Vulnerability

CVE-2026-61536

## Summary `banks` parses `Tool` JSON objects from the rendered body of `{% completion %}` blocks and later resolves their `import_path` field through `importlib.import_module(...)` + `getattr(...)` to obtain the callable that handles a tool call. There is no allowlist or sanitization on `import_path`, so any importable Python attribute (e.g. `os.system`, `subprocess.getoutput`) can be selected. When the LLM emits a `tool_calls` entry whose `function.name` matches the attacker-supplied tool name, the resolved callable is invoked with kwargs decoded from `tool_call.function.arguments`, yielding arbitrary code execution in the banks-hosting process. This is distinct from GHSA-gphh-9q3h-jgpp / CVE-2026-44209. That advisory was fixed in 2.4.2 by switching `src/banks/env.py` from `Environment` to `SandboxedEnvironment`. The fix does not touch `src/banks/extensions/completion.py`, and the unsafe import + getattr chain still executes on 2.4.2. The malicious `Tool` JSON is plain text in the rendered template body — it requires no Jinja attribute access, so the sandbox is irrelevant. ## Vulnerable Code `src/banks/extensions/completion.py:79-98` ```python def _get_tool_callable(self, tools, tool_call): for tool in tools: if tool.function.name == tool_call.function.name: module_name, func_name = tool.import_path.rsplit(".", maxsplit=1) module = importlib.import_module(module_name) return getattr(module, func_name) src/banks/extensions/completion.py:128-129 (sink) function_args = json.loads(tool_call.function.arguments) function_response = func(**function_args) src/banks/extensions/completion.py:181-202 (source — tools parsed from rendered template body) for line in body.split("\n"): try: messages.append(ChatMessage.model_validate_json(line)) except ValidationError: try: tools.append(Tool.model_validate_json(line)) excep

Properties

Severity
high
Summary
Banks: Unsafe importlib.import_module of attacker-controlled Tool.import_path in CompletionExtension allows RCE
Epss score
0.00377
Cvss score
7.5
Retrieved at
2026-11-05T18:09:45+00:00
Ghsa published
2026-11-05T17:51:02Z
Source url
https://github.com/advisories/GHSA-64vx-6h2c-rjh7
Ghsa updated
2026-11-05T17:57:44Z
Ghsa id
GHSA-64vx-6h2c-rjh7
Last source
FIRST EPSS
Cve id
CVE-2026-61536
Cvss vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
First seen by Signal
2026-11-05T18:04:03+00:00
Is ghsa only
false
Epss percentile
0.31879

Related Entities (4)

AFFECTS (1)

→[Software]pip/banks

VULNERABLE_TO (1)

←[Software]pip/banks

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-61536 (CVSS 7.5) — Ninja Signal Threat Intelligence | Ninja Signal