Katalog CVE

CVE-2026-50180

WysokieCVSS 8.7
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.69%

Percentyl 48 - wyżej niż 48% wszystkich znanych CVE

Streszczenie

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.

Ocena ryzyka

Atakujący może wykorzystać podatność do odczytu wrażliwych plików systemowych z serwera PostgreSQL, nawet przy domyślnej restrykcyjnej konfiguracji agenta (tylko SELECT). Może to prowadzić do wycieku danych, takich jak hasła, konfiguracje czy klucze prywatne.

Rekomendacja

Należy natychmiast zaktualizować bibliotekę Langroid do wersji 0.64.0 lub nowszej, która zawiera poprawkę. Dodatkowo warto rozważyć dodatkowe mechanizmy walidacji zapytań SQL po stronie aplikacji.

Inne podatności w Langroid

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

Langroid is a framework for building large-language-model-powered applications. Prior to version 0.64.0, `SQLChatAgent` in `langroid` ships a `_validate_query` defense-in-depth layer whose `_DANGEROUS_SQL_PATTERNS` regex blocklist enumerates dangerous SQL primitives by specific function name. The list misses the canonical PostgreSQL filesystem-disclosure family `pg_read_file()`, `pg_stat_file()`, `pg_ls_logdir()`, `pg_ls_waldir()`, `pg_current_logfile()` (and similar `SELECT`-shaped functions in the same family). It also leaves SQL Server `OPENDATASOURCE` and SQLite `ATTACH '<file>' AS x` (DATABASE keyword omitted) unblocked. An attacker able to shape the LLM's generated SQL (directly via prompt input or transitively via prompt-injection in data the LLM ingests) can read arbitrary files from the PostgreSQL host through ordinary `SELECT` queries, even with the agent's strict default configuration (`allow_dangerous_operations=False`, `allowed_statement_types=['SELECT']`). The payloads survive the statement-type allowlist (each is a `SELECT`) and pass through the regex blocklist (none of the function names match), then reach the live SQLAlchemy engine via `SQLChatAgent.run_query`. Version 0.64.0 contains a patch for the issue.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS