CVE-2026-6470
PostgreSQL vulnerability analysis and mitigation

Overview

CVE-2026-6470 is a missing authorization vulnerability in PostgreSQL DDL commands that allows an authenticated object creator to cause a denial of service against ALTER and DROP operations on a type by creating a dependency on it. The flaw exists because authorization checks were absent when assigning a range subtype and when referencing a type from an SQL expression, even though many other DDL operations did properly enforce privilege checks. Affected versions span PostgreSQL 14.x before 14.24, 15.x before 15.19, 16.x before 16.15, 17.x before 17.11, and 18.x before 18.5. It was published on August 13, 2026, and carries a CVSS v3.1 base score of 4.3 (Medium) (PostgreSQL Advisory).

Technical details

The root cause is classified as CWE-862 (Missing Authorization). While PostgreSQL's DDL privilege enforcement was applied to many operations, two specific code paths — assigning a range subtype and referencing a type from an SQL expression — lacked the required authorization checks. An authenticated database user can exploit this by creating a dependency on a type they do not own, which then blocks other users (including the type owner or administrators) from executing ALTER TYPE or DROP TYPE on that object. The attack requires only low-level database access (a valid login) and no special privileges, making it accessible to any database user (PostgreSQL Advisory, Feedly).

Impact

Successful exploitation results in a denial of service limited to database schema management operations — specifically, preventing legitimate users from altering or dropping PostgreSQL types. There is no impact on confidentiality or data integrity, and the availability impact is scoped to the affected type objects rather than the entire database service. In multi-tenant or shared database environments, a low-privileged user could persistently block schema evolution or maintenance tasks performed by other users or administrators (PostgreSQL Advisory).

Exploitability

There is no public proof-of-concept exploit and no evidence of in-the-wild exploitation at this time. The EPSS score is approximately 0.0033, indicating a low probability of exploitation in the near term. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. The NVD SSVC assessment classifies exploitation as "none" and the attack as non-automatable with only partial technical impact (PostgreSQL Advisory).

Exploitation steps

  1. Gain database access: Authenticate to a vulnerable PostgreSQL instance (versions before 14.24, 15.19, 16.15, 17.11, or 18.5) with any low-privileged user account that has permission to create objects.
  2. Identify a target type: Enumerate existing user-defined types in the database that another user or administrator may need to modify or drop (e.g., via SELECT typname FROM pg_type WHERE typtype = 'r';).
  3. Create a range type with the target as subtype: Execute a DDL statement that assigns the target type as a range subtype, exploiting the missing authorization check — for example: CREATE TYPE myrange AS RANGE (subtype = target_type);. This creates a dependency on the target type without requiring ownership or ALTER privilege on it.
  4. Alternatively, reference the type in an SQL expression: Create an object (e.g., a function or view) that references the target type in an SQL expression, again bypassing the authorization check and establishing a dependency.
  5. Block ALTER/DROP operations: With the dependency in place, any attempt by the type owner or a superuser to execute ALTER TYPE target_type ... or DROP TYPE target_type will fail due to the dependency, achieving a persistent denial of service on that schema object (PostgreSQL Advisory).

Indicators of compromise

  • Database Logs: Repeated failed ALTER TYPE or DROP TYPE commands in postgresql.log with errors referencing unexpected dependencies on a type.
  • Schema Artifacts: Unexpected range types or SQL objects (functions, views) created by low-privileged users that reference types they do not own — detectable via SELECT * FROM pg_depend WHERE refobjid = (SELECT oid FROM pg_type WHERE typname = '<target_type>');.
  • Audit Logs: Unusual DDL activity from non-owner, non-superuser accounts creating range subtypes or expressions referencing types owned by other users.
  • Process/Session: Database sessions from low-privileged users executing CREATE TYPE ... AS RANGE statements targeting types they do not own (PostgreSQL Advisory).

Mitigation and workarounds

Upgrade PostgreSQL to a patched version: 18.5, 17.11, 16.15, 15.19, or 14.24. As a workaround prior to patching, restrict the CREATE privilege on schemas and the ability to create types and range subtypes to trusted users only, reducing the attack surface. Additionally, monitor for unauthorized type creation and unexpected dependency chains using pg_depend catalog queries (PostgreSQL Advisory, PostgreSQL Release Notes).

Community reactions

The PostgreSQL project disclosed this vulnerability as part of a broader security release covering multiple CVEs across supported major versions. Linux distribution maintainers (Debian, Ubuntu, Alpine, FreeBSD) and security aggregators (AusCERT, Tenable Nessus, Kaspersky) have published advisories and detection plugins. Ubuntu issued security notice USN-8653-1 covering this and related PostgreSQL vulnerabilities. No significant independent researcher commentary or social media discussion has been observed beyond routine patch tracking (Ubuntu Advisory, PostgreSQL Release).

Additional resources


SourceThis report was generated using AI

Related PostgreSQL vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-6464HIGH8.1
  • PostgreSQL logoPostgreSQL
  • cpe:2.3:a:postgresql:postgresql
NoYesAug 13, 2026
CVE-2026-73515HIGH7.2
  • PostgreSQL logoPostgreSQL
  • postgis-client
NoYesAug 13, 2026
CVE-2026-6471HIGH7.2
  • PostgreSQL logoPostgreSQL
  • postgresql-17
NoYesAug 13, 2026
CVE-2026-6470MEDIUM4.3
  • PostgreSQL logoPostgreSQL
  • cpe:2.3:a:postgresql:postgresql
NoYesAug 13, 2026
CVE-2026-6469LOW3.8
  • PostgreSQL logoPostgreSQL
  • postgresql-13
NoYesAug 13, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management