PostgreSQL Releases Fixes for 52 Vulnerabilities, Including Decades-Old RCE Bug

PostgreSQL has addressed a sweeping set of 52 vulnerabilities, one of which is a severe type confusion flaw (CVE-2026-6460) that allows a database user with permissions to create database objects to execute code at the operating system level. This particular bug has been present since support for composite types and the ability to alter column types were added in the mid-2000s. The fixes arrive with updated versions 18.7, 17.12, 16.16, 15.20, and 14.25. All prior releases are vulnerable.

How the Bug Works and Risk Profile

The flaw stems from mismatches between old and updated composite types: when a field’s data type is changed while existing data still uses the old version, the server may treat stored values as if they match the new type. This can lead to memory corruption or privilege escalation. A proof-of-concept exploit was demonstrated on PostgreSQL version 18.6. While this exploit can crash the server and leak memory addresses from accounts with minimal privilege, the step that runs arbitrary code has not been publicly disclosed. It’s unclear if default login roles without elevated privileges can push beyond a crash to execute code. The vulnerability is rated with a CVSS score of 8.8. PostgreSQL and Red Hat confirm that the ability to create or modify database objects is required.

Scope of the Update and Other Fixes

Beyond CVE-2026-6460, 32 of the 52 issues in this update are rated 8.8—the maximum severity in this batch. One particularly noteworthy fix (CVE-2026-116322) requires no login nor user action; this allows a remote client to cause PostgreSQL 18 servers to restart. The update also addresses potential code execution via client tools: malicious archives could harm users running pg_restore, and pg_dump tar output could let psql execute code.

Recommended Actions for Administrators

To mitigate these flaws, admins should:

  • Upgrade PostgreSQL to the patched versions: 18.7, 17.12, 16.16, 15.20, or 14.25.
  • Rebuild all C-language extensions to ensure they’re compatible with the fixed versions—extensions compiled against older builds may still be vulnerable.
  • Synchronize updates for client tools—pg_dump, pg_restore, reindexdb, vacuumdb—to match server security posture while avoiding backward compatibility issues.
  • If services run PostgreSQL under custom service units (outside the default setup), they should be restarted during the upgrade to apply fixes properly.
  • For those using version 14 or older, note that PostgreSQL 14 has reached end of life; 14.25 is its final release with security support.
  • After upgrading, reindex databases and make a new full backup. For deployments using incremental backups, base future backups on this updated full snapshot.
  • Do not disable the new composite_type_mismatch setting—turning it off undermines the protections introduced in this patch batch.

There is currently no workaround for environments that cannot immediately upgrade; waiting could leave systems exposed to serious risks.

Why It Matters: An authenticated code execution vulnerability dating back more than 20 years highlights how long-standing architectural features can harbor deep security risks. With recently revealed exploits affecting managed Postgres services from major cloud providers, this update affects not just self-hosted instances but also many in the cloud. Administrators need to act swiftly not only to patch the server but to rebuild extensions and tools, because even a small oversight could leave a critical gap. Going forward, auditing legacy features—especially type systems and schema evolution—will be as vital as keeping deployments up to date.