CVE-2026-61536
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 22 - wyżej niż 22% wszystkich znanych CVE
Streszczenie
Banks przed wersją 2.4.3 zawiera podatność zdalnego wykonania kodu w blokach {% completion %}. Atakujący może dostarczyć złośliwy obiekt Tool JSON z polem import_path, które jest rozwiązywane przez importlib.import_module() i getattr() bez żadnej listy dozwolonych elementów. Gdy model LLM wywoła narzędzie o pasującej nazwie, atakujący może wykonać dowolny kod Python, np. os.system lub subprocess.getoutput.
Ocena ryzyka
Ryzyko całkowitego przejęcia procesu hostującego Banks, co może prowadzić do naruszenia poufności, integralności i dostępności systemu.
Rekomendacja
Zaleca się natychmiastową aktualizację Banks do wersji 2.4.3 lub nowszej.
Inne podatności w Banks
Zobacz wszystkie- CVE-2026-71492Średnie
W bibliotece Banks przed wersją 2.4.5 funkcja DirectoryPromptRegistry.set() w src/banks/registries/directory.py interpoluje kontrolowane przez atakującego wartości Prompt.name i Prompt.version do ścieżki bez kanonizacji lub walidacji zawartości. Traversal względny, taki jak ../victim/foo, oraz absolutna wartość Prompt.name mogą ominąć lub odrzucić skonfigurowany katalog główny rejestru, a overwrite=True umożliwia nadpisanie istniejących plików docelowych. Zatruta nazwa jest zapisywana w index.json i odtwarzana przez _load(), co pozwala na przetrwanie ścieżki poza katalogiem głównym przy późniejszych ładowaniach rejestru. Aplikacja przekazująca dane żądań do tych pól może zapisać bajty Prompt.raw do ścieżek wybranych przez atakującego, które są zapisywalne przez proces aplikacji. Problem został naprawiony w wersji 2.4.5.
- CVE-2026-62663Wysokie
Banks, biblioteka do generowania promptów LLM, w wersjach przed 2.4.4 zawiera podatność polegającą na braku sanityzacji ścieżek plików we wszystkich czterech filtrach multimediów (obraz, audio, wideo, dokument). Atakujący kontrolujący zmienne szablonu może użyć przejścia do katalogu nadrzędnego (../) do odczytu dowolnych plików, w tym plików .env, kluczy SSH, poświadczeń chmurowych i kodu źródłowego.
- CVE-2026-44209Wysokie
Biblioteka banks przed wersją 2.4.2 używa niezabezpieczonego środowiska jinja2.Environment() do renderowania szablonów promptów, co umożliwia atak Server-Side Template Injection (SSTI) prowadzący do zdalnego wykonania kodu (RCE) na hoście.
Oryginalny opis (angielski, źródło NVD)
Banks generates meaningful LLM prompts using a simple template language. In versions prior to 2.4.3, 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. This issue has been fixed in version 2.4.3.

