CRITICAL🇬🇧 English

CVE-2026-12045

pgAdmin 4 AI Assistant: ominięcie transakcji read-only i RCE via prompt injection

CVSS 9.4v4.0pub. 2026-06-19upd. 2026-07-01

Podatność w module AI Assistant pgAdmin 4 umożliwia atakującemu ominięcie zabezpieczenia transakcji tylko do odczytu i wykonanie dowolnego SQL z uprawnieniami roli bazodanowej użytkownika pgAdmin. W skrajnym przypadku, gdy rola posiada uprawnienia superużytkownika PostgreSQL, możliwe jest zdalne wykonanie kodu (RCE) na hoście serwera bazodanowego.

Pokaż oryginał (EN)

Read-only transaction bypass in the pgAdmin 4 AI Assistant allows an attacker who can influence database content that the assistant reads to execute arbitrary SQL with the privileges of the pgAdmin user's database role. The AI Assistant's execute_sql_query tool runs LLM-generated SQL inside a BEGIN TRANSACTION READ ONLY wrapper to prevent data modification. The LLM-supplied query was forwarded to the database driver without restriction to a single statement or to read-only verbs, so a multi-statement payload beginning with COMMIT, END, ROLLBACK, or ABORT terminated the read-only transaction and ran subsequent statements in autocommit mode. The trailing ROLLBACK then had no effect. Delivery is via prompt injection: an attacker who can write content into any object the AI Assistant may inspect (a row, a column value, a comment) can cause the LLM to emit the multi-statement payload as a tool call. With ordinary write privileges on the pgAdmin user's role the attacker can perform unauthorised data modification. When the pgAdmin user's role is a PostgreSQL superuser or holds pg_execute_server_program, the chain extends to remote code execution on the database server host via COPY ... TO PROGRAM. Fix validates the LLM-supplied query up front: it must parse to exactly one non-empty / non-comment statement whose leading real token (after stripping whitespace, comments, and punctuation) is one of SELECT, WITH, EXPLAIN, SHOW, VALUES, or TABLE. Transaction-control verbs, DML, DDL, CALL, COPY, DO, SET/RESET, and everything else are rejected before any database work happens. PostgreSQL's READ ONLY mode continues to backstop data-modifying CTEs, EXPLAIN ANALYZE on writes, and volatile side effects. This issue affects pgAdmin 4: from 9.13 before 9.16.

🤖 Analiza AI
Jak działa

Narzędzie AI Assistant o nazwie execute_sql_query uruchamia zapytania SQL generowane przez model językowy (LLM) wewnątrz bloku BEGIN TRANSACTION READ ONLY, który ma zapobiegać modyfikacji danych. Zapytanie dostarczone przez LLM było jednak przekazywane do sterownika bazy danych bez ograniczenia do jednej instrukcji ani do operacji tylko do odczytu. Atakujący może umieścić w treści obiektu bazy danych (np. wierszu, wartości kolumny lub komentarzu) specjalnie spreparowany payload, który poprzez prompt injection skłoni LLM do wygenerowania wieloinstrukcyjnego zapytania. Payload rozpoczynający się od COMMIT, END, ROLLBACK lub ABORT kończy transakcję read-only i wykonuje kolejne instrukcje w trybie autocommit, co umożliwia nieautoryzowaną modyfikację danych, a przy uprawnieniach pg_execute_server_program lub superużytkownika — także wykonanie kodu systemowego przez COPY ... TO PROGRAM.

Skutki

Atakujący z możliwością zapisu do dowolnego obiektu odczytywanego przez AI Assistant może wykonać nieautoryzowane operacje DML/DDL na bazie danych, a w przypadku konta z uprawnieniami superużytkownika PostgreSQL lub pg_execute_server_program — uzyskać zdalne wykonanie kodu (RCE) na hoście serwera bazodanowego.

Mitygacja

Należy zaktualizować pgAdmin 4 do wersji 9.16 lub nowszej. Wersja 9.16 wprowadza walidację zapytań dostarczanych przez LLM — akceptowane są wyłącznie pojedyncze instrukcje rozpoczynające się od SELECT, WITH, EXPLAIN, SHOW, VALUES lub TABLE; wszelkie instrukcje kontroli transakcji, DML, DDL, COPY, DO i inne są odrzucane przed jakimkolwiek kontaktem z bazą danych. Patch dostępny w repozytorium: commit bf4792444446f0e7ab721d23cbd6bfe6afaa7a8b.

Kogo dotyczy

pgAdmin 4 w wersjach od 9.13 do 9.15 (przed 9.16)

Uwagi

Podatność wymaga, aby atakujący posiadał uprawnienia do zapisu w dowolnym obiekcie bazy danych odczytywanym przez AI Assistant (np. wiersz tabeli, komentarz). Eskalacja do RCE jest możliwa wyłącznie, gdy rola użytkownika pgAdmin jest superużytkownikiem PostgreSQL lub posiada uprawnienie pg_execute_server_program. Szczegóły techniczne i opis naprawy pochodzą z oficjalnego zgłoszenia w repozytorium pgAdmin 4 (issue #10022).

CVSS Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
  • Pgadmin 4

    APP
    Pgadmin
    9.13 – 9.16 (bez)
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
RCESQLi
CWE
Referencje

Powiązane podatności

CVE-2026-17566CRITICAL9.4PL ✓ten sam produkt

pgAdmin 4: RCE przez command injection w narzędziu Import/Export Data

CVE-2026-17351CRITICAL9.4PL ✓ten sam produkt

SQL injection bypass w pgAdmin 4 AI Assistant via sqlparse — obejście transakcji READ ONLY

CVE-2026-17349CRITICAL9.3PL ✓ten sam produkt

pgAdmin 4: kradzież poświadczeń przez nieuprawniony klon serwera (adhoc connect)

CVE-2026-12048CRITICAL9.3PL ✓ten sam produkt

Stored XSS w pgAdmin 4 — wstrzyknięcie HTML przez komunikaty PostgreSQL

CVE-2026-12046CRITICAL9.5PL ✓ten sam produkt

pgAdmin 4: brak uwierzytelnienia na endpointach SQL Editor z deserialization RCE