Article
pgAdmin Update 9.19: Which Installs Are Exposed to Two Critical Flaws
The pgAdmin update to 9.19 fixes CVE-2026-116241 and CVE-2026-116238. See which installs run in server mode, what each flaw allows and how to update.
Quick links
Press Enter to search, Esc to close
Vulnerability
A critical OS command injection in the Import/Export Data tool of pgAdmin 4, the open source admin tool for PostgreSQL.
In short
CVE-2026-116241 is a critical OS command injection in the Import/Export Data tool of pgAdmin 4, the open source admin tool for PostgreSQL. A signed-in user with the default Import/Export Data permission can run commands on the pgAdmin host. It affects all releases before 9.19, and pgAdmin 4 9.19 fixes it.
The CVE record says a signed-in pgAdmin 4 user can make psql run an operating system command on the pgAdmin host, "as the operating-system account running pgAdmin." The user needs only an ordinary database role and the Import/Export Data permission. The record says pgAdmin grants that permission to non-administrators by default.
pgAdmin is the open source administration tool for PostgreSQL. The PostgreSQL CNA scores this flaw 9.9 Critical in CVSS 3.1 and 9.4 Critical in CVSS 4.0. The record credits Yonghwa Lee of Xint by Theori with finding it.
The Import/Export Data tool can export the result of a query. pgAdmin wraps that query in a psql \copy (...) TO command. Before it runs the command, pgAdmin checks that the parentheses in the query are balanced, so nothing can escape the wrapper.
The check rejected a backslash inside a single-quoted string, but not inside a double-quoted identifier. psql reads quotes differently when the setting standard_conforming_strings is off. A backslash then escapes the double quote, so the identifier does not end where pgAdmin thinks it does.
The CVE record says any ordinary database role can turn that setting off for itself. A closing parenthesis hidden from the check then ends the \copy (...) wrapper early. Then psql runs the TO PROGRAM clause that follows on the pgAdmin host, before the database server rejects the statement.
The record calls CVE-2026-116241 a bypass of the fix for CVE-2026-17566. That earlier flaw, fixed in pgAdmin 4 9.18, got past the same parenthesis check with a backslash in a single-quoted string. The CVE-2026-17566 record names CVE-2025-12762 and CVE-2025-13780 as the same class of bug.
The 9.19 fix rejects any backslash inside a double-quoted identifier. The record explains why: what such a backslash means depends on a server setting that pgAdmin cannot know for sure when it checks the query. The release notes add that a backslash or null byte in the schema, table or column names of an export or import is now refused too.
The risk is highest on a shared pgAdmin in server mode, where many people sign in to one install. There, any user with the default permission can run commands as the pgAdmin service account. The CNA's CVSS 4.0 notes also rate the impact High for systems reachable from that host with its credentials.
The pgAdmin server deployment guide says server mode is the default configuration, and the desktop runtime overrides it. The official container and the Python package both run in server mode.
The record does not say whether desktop mode is affected. Its CVSS notes reuse the threat model of CVE-2026-17566, a signed-in user in server mode. Updating desktop installs too is our advice, not a vendor statement.
The same release fixed CVE-2026-116238, which let attackers get past the failed login limit in server mode. Our pgAdmin 9.19 update guide covers both flaws and the update path for each package type.
These are the public signals we checked on 31 October 2026.
The Blackhole post is a daily digest of critical CVEs on a Telegram news channel. It adds nothing beyond the CVE record. pgAdmin's release notes do not say whether anyone has exploited the flaw.
Other recent flaws also let attackers run commands through a management tool, such as the Arista VeloCloud Orchestrator command injection. Our remote code execution glossary entry explains what an attacker can do with that kind of access.
The CVE record lists every pgAdmin 4 release before 9.19 as affected, and 9.19 as the fix. On 29 October 2026, pgAdmin released 9.19 for all the package types it ships.
The container download page says the image runs pgAdmin in server mode. The Python package page says the same for the PyPI package. On Docker Hub, the 9.19 and latest tags were both updated on 29 October.
The pgAdmin RPM page lists 9.14 as the last release for AlmaLinux, RHEL and Rocky Linux 8. A yum upgrade on those hosts will not reach 9.19. Move them to the container, the Python package or a newer OS release.
The upgrade also changes how some server-mode setups behave. The release notes say to set SERVER_PASSEXEC_COMMANDS before the first start on 9.19. On that start, every stored Password Exec Command that does not match the list is cleared, and that cannot be undone. Our vulnerability management guide covers how to plan and check a rollout.
The CVE-2026-17566 record goes public. It names pgAdmin 4 9.18 as the fix for the first Import/Export Data guard bypass.
pgAdmin 4 9.18 is released.
pgAdmin opens tracking issue 10663, and the fix for the double-quoted identifier bypass is written.
The PostgreSQL CNA reserves CVE-2026-116241.
pgAdmin 4 9.19 is released with fixes for 15 vulnerabilities, CVE-2026-116238 through CVE-2026-116252.
The CVE record and the NVD entry go public.
The CVE is not in CISA KEV, catalog version 2026.10.30.
Pull dpage/pgadmin4:9.19, upgrade the pgadmin4 package from PyPI, or upgrade the pgadmin4 packages with apt or yum. Then check the version in the About box.
Update containers, Python installs and pgadmin4-web hosts first. In server mode many users share one install, and the command runs as its service account.
Until the update is in, an administrator can revoke the permission for a role in the Permissions tab of User Management. The CVE record says non-administrators have it by default.
The 9.19 release notes say stored Password Exec Commands that do not match this list are cleared on the first start, and that cannot be undone.
The pgAdmin RPM repository for these releases ends at 9.14. Move those hosts to the container, the Python package or a newer OS release.
CISA's KEV catalog did not list it on 31 October 2026. pgAdmin's release notes do not discuss exploitation. NVD had not added its own analysis yet.
Any signed-in pgAdmin user with the Import/Export Data permission and an ordinary database role. The CVE record says non-administrators get that permission by default.
The CVE record does not say. It lists every release before 9.19 and names no mode, and its CVSS notes reuse the CVE-2026-17566 threat model of a signed-in user in server mode. The risk is highest on shared server-mode installs; we advise updating desktop installs too.
The CVE record calls it a bypass of the CVE-2026-17566 fix in pgAdmin 4 9.18. Both get past the same parenthesis check, first through a single-quoted string, now through a double-quoted identifier.
Take control of your digital security with an exclusive demo of our AI-driven threat intelligence platform.