Patch available CVSS 8.8 Security news

PostgreSQL fixes 52 security flaws; the worst, CVE-2026-6460, lets a database user run code on the server

On Thursday 12 November 2026 the PostgreSQL project released 18.7, 17.12, 16.16, 15.20 and 14.25, fixing 52 security vulnerabilities and more than 140 other bugs. The one to focus on is CVE-2026-6460 (CVSS 8.8): a user who can create objects in the database can trigger a type confusion after ALTER … SET DATA TYPE and run arbitrary code as the operating system account the database runs under. Full protection also requires rebuilding C-language extensions. No exploitation has been reported. PostgreSQL 14.25 is the final release of the 14 branch.

Kyberkit editorial team · · event date · reading time 6 minutes · For admins and analysts

Patch available: PostgreSQL, CVE-2026-6460, CVSS 8.8

Key points

  • Who is affected: admins running their own PostgreSQL 14 to 18 servers, and developers and vendors of C-language extensions. Managed cloud databases are patched by the provider – check when yours will roll out the new releases.
  • Most important: CVE-2026-6460 (CVSS 8.8) – anyone allowed to create objects (tables, types) can use a type confusion after changing a column's data type to run code on the server as the database's OS user. Another 31 flaws also score 8.8, and most of them, according to the project's descriptions, allow code execution.
  • Most of the flaws require an authenticated database user. The risk is highest wherever several people or applications can create objects: shared and multi-tenant installations, analytics platforms, development environments, or a compromised web application.
  • Watch the tools too: pg_dump, pg_restore, reindexdb and vacuumdb have their own bugs (SQL injection, code execution when restoring an untrusted backup). Update client packages on workstations and in CI as well.

Vulnerabilities: CVE-2026-6460, CVE-2026-18447, CVE-2026-14661, CVE-2026-116314, CVE-2026-116330

What happened

On Thursday 12 November 2026 the PostgreSQL Global Development Group released updates for every supported branch: 18.7, 17.12, 16.16, 15.20 and 14.25, plus the second release candidate of PostgreSQL 19. They fix 52 security vulnerabilities (CVEs) and, according to the announcement, more than 140 other bugs.

These are minor releases: stop the server and replace the binaries – no dump and restore or pg_upgrade is needed. Because of the CVE-2026-6460 fix, however, C-language extensions need to be rebuilt, and depending on your setup some indexes should be rebuilt after upgrading.

The announcement does not mention exploitation. PostgreSQL 14.25 is the final release of the 14 branch – it will receive no further fixes.

Technical details

The details come from the PostgreSQL security advisory, the 18.7 release notes and the NVD record. We do not publish exploitation steps.

CVE-2026-6460 (CVSS 3.1 8.8, CWE-843 – type confusion): a user who can create objects can execute arbitrary code as the operating system account running the database. The main route is ALTER … SET DATA TYPE (changing the data type of a column or composite type); the project also lists other DDL sequences, such as adding a column, rolling back and adding a column again.

The root cause: PostgreSQL did not adequately track the type of stored values, and the values did not identify their own type. After a type's layout changed, stale values with the old layout could survive in the system – in catalog entries, PL/pgSQL variables and elsewhere. When the server read them using the new layout, it misread memory. Composite types altered while queries were using them were the most dangerous case.

According to the release notes, the fix:

  • introduces versioning of composite values, so the server can detect a value that doesn't match the current type descriptor,
  • adds locking (for example against ALTER TYPE on a type used by a CREATE TABLE that hasn't committed yet),
  • tightens when ALTER COLUMN TYPE is allowed if something depends on the type (such as a function's default expression),
  • adds a composite_type_mismatch server parameter that disables the checks – at a security cost.

The bug was reported by a long list of researchers and teams, including OpenAI Security Research, the Anthropic OSS program and Ada Logics.

Other flaws in the same release (selection):

CVE What it does CVSS
CVE-2026-18447 output parameter type confusion → code execution 8.8
CVE-2026-14661 dblink and logical replication subscriptions can append to arbitrary files 8.1
CVE-2026-120145 logical replication can write to the subscriber's system catalogs → code execution 8.8
CVE-2026-116314 pg_restore doesn't validate non-plain archives → code execution 8.8
CVE-2026-116330 restore.sql in a pg_dump tar archive fails to block psql commands 8.8
CVE-2026-116318, CVE-2026-116325 SQL injection in pg_dump (constraint name) and reindexdb (index name) 8.8 / 8.0
CVE-2026-116313 vacuumdb --missing-stats-only: a database owner runs code as the vacuumdb user 7.2
CVE-2026-6467, CVE-2026-120153 extension scripts: object substitution and SQL injection via names 7.2
several CVEs use-after-free bugs in PL/Perl and PL/Tcl → code execution 8.8
CVE-2026-116311, CVE-2026-120154 row-level security (RLS) policy bypasses 5.4 / 4.3

In total 32 flaws score 8.8 and most of them, by the project's descriptions, lead to code execution; most of the bugs require an authenticated database user, typically one who can create objects.

How a database user turns into an attacker on the server1. The attacker holds a database account that can create objects – their own, an application's, or one obtained via SQL injection; 2. A sequence of DDL commands (a data type change) triggers the type confusion; 3. Code runs as the database's OS user (usually postgres); 4. All data on the server is readable regardless of PostgreSQL permissions, and the attacker moves on into the network1The attacker holds a database accountthat can create objects – their own,an application's, or one obtained viaSQL injection2A sequence of DDL commands (a datatype change) triggers the typeconfusion3Code runs as the database's OS user(usually postgres)4All data on the server is readableregardless of PostgreSQL permissions,and the attacker moves on into thenetwork
Possible attack path via CVE-2026-6460 on an unpatched server (based on the PostgreSQL advisory)

Who is affected

Branch Vulnerable Fixed
PostgreSQL 18 before 18.7 18.7
PostgreSQL 17 before 17.12 17.12
PostgreSQL 16 before 16.16 16.16
PostgreSQL 15 before 15.20 15.20
PostgreSQL 14 before 14.25 14.25 (final release of the branch)
  • Most at risk are servers where untrusted or less trusted users can create objects: shared database hosting, multi-tenant applications, analytics environments where analysts create their own tables, and applications that use one all-powerful account.
  • C-language extensions (your own and third-party) need to be rebuilt against the new release; the project says some will need code changes.
  • The pg_dump, pg_restore, reindexdb and vacuumdb bugs also affect client packages – admin workstations, backup servers and CI jobs that restore backups.
  • Older branches (13 and earlier) are no longer supported and get no fixes.

How to tell if you were compromised

The project has not published indicators of compromise and reports no exploitation. What we suggest checking (our own advice, not the project's):

  • Who can create objects: review CREATE privileges on schemas (\dn+ in psql), schema owners, and roles with CREATEDB or CREATEROLE (\du).
  • Unusual DDL in the logs: temporarily set log_statement = 'ddl' and look for repeated ALTER … TYPE and ALTER TABLE … ADD COLUMN with ROLLBACK from application accounts that don't normally change the schema.
  • Backend crashes in the server log (server process … was terminated by signal 11) – type confusion and use-after-free bugs often show up as crashing processes.
  • Child processes and files of the postgres account: unknown processes running as the database user, new files outside the data directory, new cron jobs.

You can break down the CVSS vector in our CVSS calculator.

What to do

  1. Upgrade the server to 18.7, 17.12, 16.16, 15.20 or 14.25 (distribution or PGDG packages). Check with SELECT version();.
  2. Rebuild C extensions – update extension packages together with the server and recompile your own. Only disable checks with composite_type_mismatch temporarily and knowing the risk.
  3. Update client tools (pg_dump, pg_restore, reindexdb, vacuumdb) on workstations, backup servers and in CI. Don't restore backups from untrusted sources.
  4. Limit who can create objects: application accounts shouldn't own schemas or hold CREATE unless they need it; run schema migrations with a separate account.
  5. After upgrading, follow the announcement's steps: reindex GIN indexes if you suspect corruption, pg_trgm GiST indexes using gist_trgm_ops, tables reporting missing chunk number errors, and B-tree indexes on bpchar columns declared without a length; if you use incremental backups, take a new full backup; and check NOT NULL NO INHERIT constraints on partitioned tables.
  6. PostgreSQL 14: plan a move to a newer major version – there will be no more fixes.

Timeline

Timeline of the November 2026 PostgreSQL security release12 Nov 2026: PostgreSQL releases 18.7, 17.12, 16.16, 15.20, 14.25 and 19 RC 2, fixing 52 CVEs; 14.25 is the final 14.x release; 12 Nov 2026: NVD publishes CVE-2026-6460 (8.8, CWE-843); CISA rates exploitation as none; 13 Nov 2026: No exploitation reported, no technical write-up or public exploit; 19 Nov 2026: Planned release of PostgreSQL 19 (per the project, unless delayed)12 Nov 2026PostgreSQL releases 18.7,17.12, 16.16, 15.20, 14.25and 19 RC 2, fixing 52 CVEs;14.25 is the final 14.xrelease12 Nov 2026NVD publishes CVE-2026-6460(8.8, CWE-843); CISA ratesexploitation as none13 Nov 2026No exploitation reported, notechnical write-up or publicexploit19 Nov 2026Planned release of PostgreSQL19 (per the project, unlessdelayed)
Release and records (PostgreSQL, NVD)

Updates

  • 13 Nov 2026 – first version of this article.

FAQ

Is CVE-2026-6460 being exploited?

The PostgreSQL project reports no exploitation, and CISA's assessment in the NVD record of 13 Nov 2026 rates exploitation as none. We found no technical write-up or public exploit as of 13 Nov. The patches do, however, point to where the bug is, and database servers are a popular target, so upgrade in your next maintenance window.

The attacker needs a database account. Why is this serious?

Because a database user becomes an operating system user. Code running as the postgres account can read every database on the server regardless of PostgreSQL permissions, change the configuration and move further into the network. Applications commonly hold an account that can create tables, and an attacker can get one through SQL injection in a web app.

Why do I have to rebuild extensions?

The CVE-2026-6460 fix adds versioning of composite values so the server can tell when a value doesn't match the type's current layout. The release notes state plainly that full protection requires rebuilding C-language extensions, and some will need source-code changes. Packages from your distribution or the PGDG repository are rebuilt by their maintainers – update them together with the server. Recompile your own extensions against the new release.

Can I turn the checks off if an extension breaks after upgrading?

The new composite_type_mismatch server parameter disables the checks, but the project explicitly warns that this carries security risks. Use it only temporarily until the extension vendor ships a fixed build, and only on servers where untrusted users cannot create objects.

We run PostgreSQL 14. What now?

According to the announcement, 14.25 is the final release of the 14 branch – no further bug or security fixes will follow. Install 14.25 now and plan a major-version upgrade (pg_upgrade or dump and restore). The project plans to release PostgreSQL 19 on 19 Nov 2026.

Sources

  1. PostgreSQL – CVE-2026-6460: type confusion after ALTER … SET DATA TYPE executes arbitrary code
  2. PostgreSQL – PostgreSQL 18.7, 17.12, 16.16, 15.20, 14.25, and 19 RC 2 Released! (12 Nov 2026)
  3. PostgreSQL – Release notes for 18.7
  4. NVD – CVE-2026-6460 (published 12 Nov 2026)

Spotted a mistake? Let us know and we will correct it openly.