Skip to content
OpenAdvisories

Vendor

pgadmin.org

56 known vulnerabilities.

pgadmin.org at a glance

Last 12 months
47
Critical · all time
15
Exploited · all time
0
Public exploit · all time
8
New vulnerabilities per month · last 12 months
0 10 20 December 2025: 1 vulnerability, 1 critical Dec 2025 January 2026: 0 vulnerabilities February 2026: 1 vulnerability March 2026: 0 vulnerabilities Mar April 2026: 0 vulnerabilities May 2026: 8 vulnerabilities, 1 critical June 2026: 7 vulnerabilities, 3 critical Jun July 2026: 7 vulnerabilities, 3 critical August 2026: 0 vulnerabilities September 2026: 4 vulnerabilities, 1 critical Sep October 2026: 15 vulnerabilities, 1 critical November 2026: 0 vulnerabilities
Show as table
MonthVulnerabilitiesCritical
Nov 202600
Oct 2026151
Sep 202641
Aug 202600
Jul 202673
Jun 202673
May 202681
Apr 202600
Mar 202600
Feb 202610
Jan 202600
Dec 202511
Nov 202541
Oct 202500
Sep 202510
Aug 202500
Jul 202500
Jun 202500
May 202500
Apr 202522
Mar 202500
Feb 202500
Jan 202500
Dec 202400

Products

Latest advisories

  • High max 9.9
    NCSC-2024-0380 1 CVE rev. 2

    Kwetsbaarheid verholpen in pgAdmin

    pgAdmin heeft een kwetsbaarheid verholpen in pgAdmin 8.11.

56 results · Feed

  • Medium 6.5

    pgAdmin 4: Materialized view refresh redirects its connection through a crafted database name

    pgAdmin 4's materialized view refresh passed the target database's name to psql's --dbname argument unchanged. libpq treats a --dbname value containing "=" (or a postgresql:// URI) as a full connection string, whose keywords override the host, port and other …

  • Medium 4.2

    pgAdmin 4: A user's other sessions survive a change of their password

    pgAdmin 4 did not invalidate a user's existing sessions when their password changed, either through the user's own change password dialog or through an administrator resetting it in User Management. A session established before the change, for example on anot…

  • Medium 6.5

    pgAdmin 4: Files opened in a storage directory follow a symbolic link, hard link or FIFO planted after the containment check

    In server mode pgAdmin 4 validates a path a user gives for a file in their storage directory with check_access_permission() and then opened it by name. Several places opened it with a plain open() or handed the path to a utility that opened it later: the serv…

  • High 8.4

    pgAdmin 4: Connection file paths and parameter keys escape the user's storage directory

    In server mode pgAdmin 4 resolves a server's password file, SSL certificate, key, CRL and SSH tunnel identity file relative to the user's storage directory, but get_complete_file_path() only stripped leading slashes before joining the two. A path such as "../…

  • Medium 6.8

    pgAdmin 4: Non-administrators can share a server with every user

    In pgAdmin 4 server mode only administrators are meant to share a server with all users; the server dialog shows the Shared switch only to them. The create and update endpoints of the server API, however, stored the "shared" flag and shared username they were…

  • Medium 6.5

    pgAdmin 4: Server passwords are left in pgAdmin's process environment

    To pass a server's password to psql and to the utilities pgAdmin 4 runs as background processes, the server manager wrote it into pgAdmin's own process environment: as PGPASSWORD for the PSQL tool, and under a per-process variable for a utility. Nothing remov…

  • High 8.2

    pgAdmin 4: libpq uses the pgAdmin service account's own password file and client certificate

    When a server in pgAdmin 4 had no password file, client certificate or client key configured, or the configured one could not be found, pgAdmin left the parameter out of the connection and libpq fell back to the defaults of the operating-system account runnin…

  • High 8.2

    pgAdmin 4: Connection services are not restricted in server mode

    libpq looks a connection service up in the service file of the operating-system account running pgAdmin 4, and an entry there can hold a password or name a password file or client certificate. In server mode any user could set a server's Service, or a "servic…

  • High 8.2
    CVE-2026-116244 Public exploit

    pgAdmin 4: libpq uses the pgAdmin service account's Kerberos credentials

    When a pgAdmin 4 connection was not meant to use a Kerberos user's delegated credentials, pgAdmin removed KRB5CCNAME from its environment, so the Kerberos library fell back to the default credential cache, or a client keytab, of the operating-system account r…

  • High 7.5

    pgAdmin 4: Utility binary path can point at a shared storage directory

    pgAdmin 4 runs pg_dump, pg_restore, pg_dumpall and psql from the binary path a user sets in their preferences. In server mode the binary path was refused only when it lay under the per-user storage directory (STORAGE_DIR), not under a SHARED_STORAGE directory…

  • Critical 9.9

    pgAdmin 4: Import/Export Data query export runs a command through a backslash in a double-quoted identifier

    pgAdmin 4's Import/Export Data tool wraps a user's query export in a psql \copy (...) TO command and checks that the query's parentheses are balanced so that nothing can escape the wrapper. The check rejected a backslash inside a single-quoted string, but not…

  • High 8.2

    pgAdmin 4: SSH tunnels use the pgAdmin service account's own SSH identity

    pgAdmin 4 opens SSH tunnels with the sshtunnel library but gave it neither host_pkey_directories nor ssh_config_file, so it always loaded the unencrypted private keys in ~/.ssh of the operating-system account running pgAdmin, read that account's ~/.ssh/config…

  • High 8.5

    pgAdmin 4: An LDAP or Kerberos login is logged in to another account with the same username

    In server mode pgAdmin 4 keeps an account per authentication source, so the same username can exist as, for example, an internal account and an LDAP account. After LDAP or Kerberos authenticated a user, pgAdmin chose the account to log in by username alone, o…

  • Medium 6.5

    pgAdmin 4: File Manager and storage-path tools act on a different path from the one checked

    In server mode pgAdmin 4 validates a path into the user's storage directory with check_access_permission(), which builds the absolute path with get_abs_path(). Several callers then acted on a path they built differently, so the path checked and the path used …

  • High 8.1

    pgAdmin 4: The failed login limit can be bypassed, and Flask-Security's own views skip pgAdmin's login and password checks

    In server mode pgAdmin 4 locks an internal account after MAX_LOGIN_ATTEMPTS failed logins (3 by default). The limit could be bypassed, giving an unauthenticated attacker an unlimited number of password guesses against any internal account, including the admin…

  • High 8.8

    pgAdmin 4: Argument and connection-string injection via the database field in the Backup tool

    pgAdmin 4's Backup tool appended the client-supplied 'database' field from the /backup/job/<sid>/object request to the pg_dump argument vector as a bare trailing positional argument, without validation. Because pg_dump parses its options with getopt_long, whi…

  • Critical 9.8

    pgAdmin 4: Authentication bypass via a client-controlled identity header in Webserver authentication mode

    pgAdmin 4's Webserver authentication source is intended to accept an identity asserted by the web server or reverse proxy in front of pgAdmin, delivered through the WSGI/CGI environment. WebserverAuthentication.get_user() read config.WEBSERVER_REMOTE_USER fro…

  • Medium 6.5

    pgAdmin 4: Connection-string injection via the database field in the Restore and Maintenance tools

    pgAdmin 4's Restore and Maintenance tools passed the client-supplied 'database' field directly as the value of the --dbname option given to pg_restore and psql. libpq expands a database name containing an equals sign into a full connection string, and connect…

  • Medium 5.9

    pgAdmin 4: File Manager save_file writes through a symbolic link planted after the containment check

    pgAdmin 4's File Manager save_file endpoint, which backs saving from the Query Tool and ERD, validated the requested path with Filemanager.check_access_permission() and then opened the file for writing with a plain open() call. CVE-2026-7819 had previously ha…

  • Critical 9.9
    CVE-2026-17566 Public exploit

    pgAdmin 4: RCE via backslash-escape mismatch in Import/Export Data query guard (incomplete defense, sibling gap to CVE-2025-13780)

    pgAdmin 4's Import/Export Data tool builds a psql \copy (...) command line by interpolating a user-supplied SQL query into a Jinja template and passing the rendered line to psql via --command. To stop an attacker from breaking out of the (...) wrapper, create…

  • Critical 9.0

    pgAdmin 4: AI Assistant read-only transaction bypass via sqlparse/PostgreSQL lexer disagreement (incomplete fix for CVE-2026-12045)

    The fix for CVE-2026-12045 in pgAdmin 4 9.16 required the LLM-supplied query passed to the AI Assistant's execute_sql_query tool to parse, via sqlparse, as exactly one non-transaction-control statement before running it inside a BEGIN TRANSACTION READ ONLY wr…

  • Medium 5.4

    pgAdmin 4: Tool permission bypass via backend routes and Socket.IO handlers

    The per-tool permission system (custom roles / role-based tool permissions, introduced in pgAdmin 4 9.3) did not enforce its permission check consistently. In SERVER mode, pgAdmin 4 gates each tool behind a per-tool Flask-Security permission, but the permissi…

  • Critical 9.6

    pgAdmin 4: Adhoc server clone leaks another user's stored database credentials and ownership to a non-owner

    /misc/workspace/adhoc_connect_server, part of the Workspaces feature introduced in pgAdmin 4 9.0, when passed the id of an existing server, clones that server via Server.clone(), which copies every column from the source row, including user_id, shared, shared…

  • Medium 6.5

    pgAdmin 4: Missing authentication decorator on Constraints, preferences, Debugger and Schema Diff routes allows unauthenticated access in SERVER mode (incomplete fix for CVE-2026-12046)

    In SERVER mode, pgAdmin 4 enforces authentication per route via the @pga_login_required decorator; the application's before_request hook only handles desktop-mode auto-login and the Kerberos/Webserver-auth redirect, so any route shipped without the decorator …

  • High 7.5

    pgAdmin 4: OS command injection in MASTER_PASSWORD_HOOK via untrusted username substitution

    The MASTER_PASSWORD_HOOK setting, introduced in pgAdmin 4 7.2, lets an administrator configure an external command that returns a per-user encryption key, with %u in the configured string replaced by the current user's name. The previous implementation substi…

  • High 8.8

    pgAdmin 4: SQL injection via unescaped object names in index Statistics and publication/subscription dependency views (incomplete fix for CVE-2026-12044)

    The fix for CVE-2026-12044 in pgAdmin 4 9.16 hardened qtLiteral and switched sixteen COMMENT ON / pgstattuple / pgstatindex templates to it, but missed several sinks that had been placed in test_sql_string_literal_lint.py's ALLOWLIST on the incorrect assumpti…

  • Medium 4.3

    pgAdmin 4: Open redirect in multi-factor authentication flow via unvalidated 'next' parameter

    Open redirect in pgAdmin 4's multi-factor authentication flow. The MFA validate and register endpoints honoured the user-supplied 'next' query/form parameter without confirming the target pointed back inside pgAdmin, so an authenticated victim who clicked /mf…

  • Critical 9.3

    pgAdmin 4: Stored XSS via untrusted error and plan-node text rendered through html-react-parser

    Stored cross-site scripting in pgAdmin 4's error-rendering and plan-node-rendering paths. Text returned by a PostgreSQL server (ErrorResponse messages, including object names quoted back inside relation-does-not-exist errors and inside EXPLAIN Recheck Cond / …

  • Low 3.5

    pgAdmin 4: HTML injection in cloud verify_credentials / deploy endpoints via unsanitised SDK exception text

    HTML injection in pgAdmin 4's cloud deployment module. The verify_credentials, deploy, regions, and update-server endpoints under /rds/, /azure/, /google/, and the top-level /cloud/ blueprint propagated AWS / Azure / Google SDK exception text — and the relate…

  • Critical 9.0

    pgAdmin 4: Unauthenticated pickle deserialization in SQL Editor close / update_connection routes enables remote code execution

    Two state-mutating endpoints in pgAdmin 4's SQL Editor blueprint -- DELETE /sqleditor/close/<trans_id> and POST /sqleditor/initialize/sqleditor/update_connection/<sgid>/<sid>/<did> -- were the only routes in the module missing the @pga_login_required decorato…

  • Critical 9.0

    pgAdmin 4: AI Assistant read-only transaction bypass allows unauthorised writes and remote code execution

    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 to…

  • Medium 4.3

    pgAdmin 4: SQL injection in named restore point endpoint

    SQL injection in pgAdmin 4's named restore point endpoint (POST /browser/server/restore_point/{gid}/{sid}). The user-supplied 'value' field was interpolated directly into the SQL string with str.format() instead of being passed as a bound parameter, allowing …

  • High 8.8

    pgAdmin 4: SQL injection in COMMENT ON ... IS '<description>' rendering across dialog templates

    SQL injection in pgAdmin 4 across every dialog template that renders ``COMMENT ON ... IS '<description>'`` for a user-supplied description field. The Jinja templates for Domains (and their constraints), Foreign Tables, Languages, and Event Triggers, plus the …

  • Medium 6.5

    pgAdmin 4: Account-lockout bypass via Flask-Security default /login view

    Improper restriction of excessive authentication attempts (CWE-307) in pgAdmin 4. pgAdmin enforces MAX_LOGIN_ATTEMPTS only inside its custom /authenticate/login view. Flask-Security's default /login view, which is registered automatically by security.init_app…

  • High 7.0

    pgAdmin 4: Unsafe deserialization (CWE-502) in file-backed session manager leads to remote code execution

    Deserialization of untrusted data (CWE-502) in pgAdmin 4 FileBackedSessionManager. The session manager performed unsafe deserialization of session-file contents (using Python's standard object-serialization module) before performing any HMAC integrity check. …

  • High 8.1

    pgAdmin 4: Symbolic-link path traversal in File Manager allows arbitrary file write

    Symbolic-link path traversal (CWE-61, CWE-22) in pgAdmin 4 File Manager. check_access_permission used os.path.abspath, which resolves '..' but does not resolve symbolic links, while the subsequent kernel write follows symlinks. An authenticated user could pla…

  • Medium 6.5

    pgAdmin 4: Local file inclusion and server-side request forgery in LLM API configuration endpoints

    Local file inclusion (LFI) and server-side request forgery (SSRF) vulnerabilities in pgAdmin 4 LLM API configuration endpoints. User-supplied api_key_file and api_url preferences were passed to the LLM provider clients without validation. An authenticated use…

  • High 8.8

    pgAdmin 4: SQL injection in Maintenance tool option values leading to remote code execution

    SQL injection vulnerability in pgAdmin 4 Maintenance Tool. Four user-supplied JSON fields (buffer_usage_limit, vacuum_parallel, vacuum_index_cleanup, reindex_tablespace) were concatenated directly into the rendered VACUUM/ANALYZE/REINDEX command and passed to…

  • High 8.8

    pgAdmin 4: OS command injection in Import/Export query export via psql metacommand breakout

    OS command injection (CWE-78) vulnerability in pgAdmin 4 Import/Export query export. User-supplied input was interpolated directly into a psql \copy metacommand template without sanitization. An authenticated user could inject ") TO PROGRAM 'cmd'" to break ou…

  • Medium 4.8

    pgAdmin 4: Stored XSS via crafted PostgreSQL object names in Browser Tree and Explain Visualizer

    Stored cross-site scripting (XSS) vulnerability in pgAdmin 4 Browser Tree and Explain Visualizer modules. User-controlled PostgreSQL object names (database, schema, table, column, etc.) were assigned to DOM elements via innerHTML, allowing crafted object name…