Podatność autoryzacyjna w pgAdmin 4 (tryb serwerowy) umożliwia uwierzytelnionemu użytkownikowi dostęp do zasobów innych użytkowników oraz eskalację uprawnień poprzez wykonanie dowolnych poleceń systemowych. Ze względu na krytyczny wynik CVSS 9.4 oraz możliwość zdalnego nadużycia przez każdego zalogowanego użytkownika, podatność wymaga pilnego załatania.
▸ Pokaż oryginał (EN)
Authorization vulnerability in pgAdmin 4 server mode affecting Server Groups, Servers, Shared Servers, Background Processes, and Debugger modules. Multiple endpoints fetched user-owned objects without filtering by the requesting user's identity. An authenticated user could access another user's private servers, server groups, background processes, and debugger function arguments by guessing object IDs. Additionally, the Shared Servers feature contained multiple issues including credential leakage (passexec_cmd, passfile, SSL keys), privilege escalation via writable passexec_cmd (a shell command executed when establishing the connection) allowing arbitrary command execution in the owner's process context, and owner-data corruption via SQLAlchemy session mutations. Several owner-only fields (passexec_cmd, passexec_expiration, db_res, db_res_type) were writable by non-owners through the API, and additional fields (kerberos_conn, tags, post_connection_sql) lacked per-user persistence so non-owner edits mutated the owner's record. Fix centralises access control via a new server_access module, scopes all user-owned models with a UserScopedMixin, returns HTTP 410 from connection_manager when access is denied in server mode, suppresses owner-only fields for non-owners across the merge / API response / ServerManager paths, and adds an explicit owner-only write guard. The remediation landed in two pull requests; both are referenced. This issue affects pgAdmin 4: before 9.15.
Wiele punktów końcowych API pobierało obiekty należące do użytkowników bez weryfikacji tożsamości osoby wysyłającej żądanie — wystarczyło odgadnąć identyfikator obiektu (np. serwera, grupy serwerów, procesu w tle), aby uzyskać do niego dostęp. Funkcja Shared Servers zawierała dodatkowe luki: pola wyłącznie dla właściciela (m.in. passexec_cmd, passexec_expiration, db_res) były możliwe do zapisu przez innych użytkowników poprzez API, a pole passexec_cmd — będące poleceniem powłoki wykonywanym przy nawiązywaniu połączenia — mogło zostać nadpisane przez nieuprawnionego użytkownika, co prowadziło do wykonania dowolnego polecenia w kontekście procesu właściciela. Ponadto dochodziło do wycieku poświadczeń (passexec_cmd, passfile, klucze SSL) oraz do uszkodzenia danych właściciela wskutek mutacji sesji SQLAlchemy przez nieuprawnione edycje.
Atakujący z aktywnym kontem może uzyskać dostęp do prywatnych serwerów, grup serwerów i argumentów debuggera innych użytkowników, wykraść wrażliwe poświadczenia oraz wykonać dowolne polecenia systemowe w kontekście procesu właściciela zasobu (privilege escalation / RCE po stronie serwera).
Należy zaktualizować pgAdmin 4 do wersji 9.15 lub nowszej. Poprawka wprowadza scentralizowaną kontrolę dostępu poprzez nowy moduł server_access, mixin UserScopedMixin ograniczający widoczność modeli do właściciela, blokadę zapisu pól zastrzeżonych dla właściciela oraz zwracanie HTTP 410 przy odmowie dostępu w trybie serwerowym. Szczegóły dostępne w pull requestach producenta: github.com/pgadmin-org/pgadmin4/pull/9830 oraz /pull/9835.
pgAdmin 4 w trybie serwerowym (server mode) — wszystkie wersje przed 9.15
Podatność dotyczy wyłącznie instalacji pgAdmin 4 uruchomionych w trybie serwerowym (server mode); tryb desktopowy nie jest podatny. Poprawka została wdrożona w ramach dwóch osobnych pull requestów (PR #9830 i PR #9835).
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/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:XPgadmin 4
APPPgadmin< 9.15
Powiązane podatności
Stored cross-site scripting in pgAdmin 4's error-rendering and plan-node-rendering paths. Text returned by a P...
Two state-mutating endpoints in pgAdmin 4's SQL Editor blueprint -- DELETE /sqleditor/close/<trans_id> and POS...
Read-only transaction bypass in the pgAdmin 4 AI Assistant allows an attacker who can influence database conte...
RCE w pgAdmin 4 poprzez złośliwe pliki dump w trybie serwerowym
RCE w pgAdmin 4 — wstrzykiwanie komend podczas przywracania bazy