CVE-2026-62663
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 26 - wyżej niż 26% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Ryzyko polega na możliwości wycieku wrażliwych danych, takich jak poświadczenia i klucze, co może prowadzić do dalszej kompromitacji systemów.
Rekomendacja
Zaleca się natychmiastową aktualizację Banks do wersji 2.4.4 lub nowszej oraz walidację wszystkich danych wejściowych przekazywanych do szablonów.
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-61536Wysokie
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.
- 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.4, all four media filters (image, audio, video, document) in banks accept untrusted user input as file paths via Path(value) and pass them directly to open(file_path, "rb") without any path sanitization, canonicalization, or directory restriction. An attacker who controls template variables passed to a banks Prompt can use path traversal (../) to read arbitrary files accessible to the Python process—including .env files, SSH keys, cloud credentials, source code, /etc/passwd, and /etc/shadow—with the content returned base64-encoded in the rendered prompt output, making exfiltration trivial. This is particularly dangerous for applications that use banks to process user-provided template variables before sending prompts to an LLM. This issue has been fixed in version 2.4.4.

