CVE-2026-50181
WysokieCVSS 7.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 8 - wyżej niż 8% wszystkich znanych CVE
Streszczenie
W frameworku Langroid narzędzia ReadFileTool i WriteFileTool nie weryfikują, czy ścieżka pliku pozostaje w granicach katalogu roboczego (curr_dir). Umożliwia to atakującemu odczyt i zapis plików poza dozwolonym katalogiem poprzez sekwencje typu ../.
Ocena ryzyka
Organizacja narażona jest na wyciek poufnych danych (np. plików konfiguracyjnych, sekretów) oraz na nieautoryzowany zapis plików, co może prowadzić do modyfikacji kodu źródłowego lub wstrzyknięcia złośliwej treści.
Rekomendacja
Należy natychmiast zaktualizować Langroid do wersji 0.64.0 lub nowszej, która zawiera poprawkę usuwającą podatność na path traversal.
Inne podatności w Langroid
Zobacz wszystkie- CVE-2026-55615Krytyczne
Langroid przed wersją 0.65.5 zawiera podatność w komponencie Neo4jChatAgent, która pozwala na wstrzykiwanie zapytań Cypher. Atakujący może wpłynąć na treść zapytania poprzez prompt injection, co umożliwia odczytanie lub zniszczenie wszystkich danych grafu, a przy włączonych procedurach APOC lub dbms.security – uzyskanie dostępu do systemu plików i wykonanie poleceń OS.
- CVE-2026-54769Krytyczne
Langroid w wersjach przed 0.65.2 zawiera krytyczną podatność umożliwiającą ucieczkę z sandboksa i zdalne wykonanie kodu (RCE) w komponentach `TableChatAgent` i `VectorStore`. Podczas ewaluacji komunikatów narzędziowych generowanych przez LLM z parametrem `full_eval=True`, funkcja `eval()` nie usuwa `__builtins__` z globalnego słownika, co pozwala na dostęp do funkcji systemowych, takich jak `__import__('os').system()`. Atakujący może wykorzystać tę lukę, dostarczając spreparowany prompt, aby uzyskać nieuwierzytelnione RCE na hoście.
- CVE-2026-54760Krytyczne
W frameworku Langroid do wersji 0.65.1 wykryto podatność na iniekcję SQL w komponencie `SQLChatAgent`. Mimo domyślnego wyłączenia niebezpiecznych operacji, mechanizm ochronny oparty na liście blokowanych wzorców regex i liście dozwolonych zapytań SELECT może zostać ominięty przez specjalnie skonstruowane zapytania PostgreSQL, co umożliwia odczyt plików serwera.
- CVE-2026-25879Krytyczne
Langroid SQLChatAgent przed wersją 0.63.0 wykonuje zapytania SQL generowane przez model językowy, które mogą być manipulowane przez wstrzyknięcie promptu. Atakujący może wymusić wykonanie niebezpiecznych operacji, takich jak COPY ... FROM PROGRAM, prowadząc do zdalnego wykonania kodu na hoście bazy danych.
- CVE-2026-54771Wysokie
Podatność w frameworku Langroid przed wersją 0.65.3 umożliwia bezpośrednie wywoływanie narzędzi przez niezaufanych użytkowników za pomocą surowych ładunków JSON, nawet gdy narzędzia są zarejestrowane z flagami `use=False, handle=True`.
- CVE-2026-50180Wysokie
W bibliotece Langroid w wersji przed 0.64.0, komponent SQLChatAgent zawiera niedoskonałą warstwę zabezpieczeń _validate_query, która nie blokuje wszystkich niebezpiecznych funkcji SQL. Lista blokująca pomija m.in. funkcje PostgreSQL do odczytu plików (pg_read_file, pg_stat_file) oraz konstrukcje SQL Server i SQLite, co umożliwia atakującemu odczyt plików z hosta bazy danych.
Oryginalny opis (angielski, źródło NVD)
Langroid is a framework for building large-language-model-powered applications. Prior to version 0.64.0, Langroid's `ReadFileTool` and `WriteFileTool` appear to treat `curr_dir` as the intended working-directory boundary for file operations. However, the tools only change the process working directory to `curr_dir` and then operate on the user-supplied `file_path` without resolving and enforcing that the final path remains inside `curr_dir`. As a result, a tool caller can supply path traversal sequences such as `../secret.txt` to read files outside the configured current directory, or `../written_by_tool.txt` to write files outside that directory. This can impact applications that expose Langroid file tools to an LLM agent, user-controlled tool call, or delegated coding/documentation agent while relying on `curr_dir` to restrict file access to a project/workspace directory. Version 0.64.0 patches the issue.

