Summary
Ein Angreifer kann mehrere Schwachstellen in PostgreSQL ausnutzen, um beliebigen Code auszuführen, Berechtigungen zu erweitern, Sicherheitsmaßnahmen zu umgehen, SQL-Injection durchzuführen, Daten zu manipulieren und offenzulegen oder einen Denial-of-Service-Zustand zu verursachen.
Product
PostgreSQL ist eine frei verfügbare Datenbank für unterschiedliche Betriebssysteme.
Vulnerabilities 53
-
High 8.8
PostgreSQL parallel RECORD typmod use-after-free executes arbitrary code
Use after free in PostgreSQL coordination of anonymous RECORD type identifiers among parallel workers allows a database user to execute arbitrary code as the operating system user running the database, via causing one process to free a shared tuple descriptor…
-
High 8.8
PostgreSQL composite-type change during field assignment executes arbitrary code
Type confusion in PostgreSQL composite-value field assignment allows an object creator to execute arbitrary code as the operating system user running the database, via changing a composite type between deforming and reforming a value. Versions before PostgreS…
-
High 8.8
PostgreSQL plperl prepared-query use-after-free executes arbitrary code
Use after free in PostgreSQL plperl allows an object creator to execute arbitrary code as the operating system user running the database, via re-entering plperl and freeing a prepared query while an outer invocation is executing it. Versions before PostgreSQL…
-
High 8.8
PostgreSQL plperl blessed-reference type confusion may execute arbitrary code
Type confusion in PostgreSQL plperl may allow an object creator to execute arbitrary code, via blessing a non-hash reference into PostgreSQL::InServer::ARRAY. We have not confirmed or ruled out a way to control the pointer sufficiently to achieve security imp…
-
High 8.8
PostgreSQL pg_restore executes arbitrary code due to missing non-plain archive validation
Improper input validation in PostgreSQL pg_restore allows a non-plain archive provider to execute arbitrary code as the operating system user running pg_restore, via a crafted archive. Note a contrast: crafted archive data may legitimately cause arbitrary SQL…
-
High 8.8
PostgreSQL tsvector_delete() heap buffer overflow executes arbitrary code
Heap-based buffer overflow in PostgreSQL tsvector_delete() allows a database user to execute arbitrary code as the operating system user running the database, via a tsvector whose lexeme data uses a nonstandard but valid ordering that requires additional alig…
-
High 8.8
PostgreSQL security-restricted operations can create types in pg_temp, which later queries of the session find
Improper protection of alternate path in PostgreSQL security-restricted operations allows an object creator to execute arbitrary SQL as the operation's caller, via a domain, enum, or range type created in pg_temp. The victim session must later run a query con…
-
High 8.8
PostgreSQL ts_rank_cd() heap buffer overflow may execute arbitrary code
Heap-based buffer overflow in PostgreSQL ts_rank_cd() may allow a database user to execute arbitrary code as the operating system user running the database, via an invalid tsvector containing duplicate positions. Versions before PostgreSQL 18.7, 17.12, 16.16,…
-
High 8.8
PostgreSQL pg_dump not-null constraint name allows SQL injection
SQL injection in PostgreSQL pg_dump allows an object creator to execute arbitrary SQL as the user restoring the dump, via an inherited column having a child-local not-null constraint whose name requires quoting. Within major version 18, minor versions before …
-
High 8.8
PostgreSQL plperl reentrant return_next() use-after-free executes arbitrary code
Use after free in PostgreSQL plperl allows an object creator to execute arbitrary code as the operating system user running the database, via reentrant return_next() calls. Versions before PostgreSQL 18.7, 17.12, 16.16, 15.20, and 14.25 are affected.
-
High 8.8
PostgreSQL plperl array and hash conversion use-after-free executes arbitrary code
Use after free in PostgreSQL plperl allows an object creator to execute arbitrary code as the operating system user running the database, via dropping the final reference to a Perl array or hash while PostgreSQL is converting that object. Versions before Post…
-
High 8.8
PostgreSQL pltcl reentrant result conversion use-after-free executes arbitrary code
Use after free in PostgreSQL pltcl allows an object creator to execute arbitrary code as the operating system user running the database, via a domain CHECK that re-enters the Tcl interpreter and frees or changes a string still used by the outer result convers…
-
High 8.8
PostgreSQL plperl tied-object exceptions follow stale sigjmp_buf
Uncaught exceptions in PostgreSQL plperl allow an object creator to cause use of a stale sigjmp_buf, via a tied Perl object, or a Perl object whose overloaded conversion throws while plperl is handling another error. We have not ruled out arbitrary code execu…
-
High 8.8
PostgreSQL generation memory context integer wraparound executes arbitrary code
Integer wraparound in PostgreSQL generation memory contexts allows a database user to execute arbitrary code as the operating system user running the database, via freeing an allocation larger than 1 GB and causing its block to be reused for smaller chunks wh…
-
High 8.8
PostgreSQL statistics import type confusion executes arbitrary code
Type confusion in PostgreSQL statistics import allows a table maintainer to execute arbitrary code as the operating system user running the database, via nested SET DATA TYPE during conversion of values to import. Within major version 18, minor versions befor…
-
High 8.8
PostgreSQL pg_dump tar restore.sql fails to block psql command injection
Untrusted data inclusion in PostgreSQL pg_dump tar-format restore.sql allows a compromised origin server to execute arbitrary code as the client operating system account running psql, via the predictable restriction key in restore.sql. This is a gap in the fi…
-
High 8.8
PostgreSQL min/max aggregate type confusion executes arbitrary code
Type confusion in PostgreSQL min/max aggregate optimization allows an object creator to execute arbitrary code as the operating system user running the database, via a user-defined aggregate whose SORTOP option causes the planner to treat the aggregate's inpu…
-
High 8.8
PostgreSQL portal setup use-after-free executes arbitrary code
Use after free in PostgreSQL portal setup allows an object creator to execute arbitrary code as the operating system user running the database, via running user-defined code during planning or executor startup that closes the portal currently being prepared. …
-
High 8.8
PostgreSQL commutator or negator result-type confusion executes arbitrary code
Type confusion in PostgreSQL operator commutator and negator links allows an object creator to execute arbitrary code as the operating system user running the database, via linking operators having different result types or creating inconsistent reciprocal li…
-
High 8.8
PostgreSQL REINDEX CONCURRENTLY does not block DROP INDEX during index functions
Operation on a dropped index in PostgreSQL REINDEX CONCURRENTLY allows an object creator to execute arbitrary code as the operating system user running the database, via an index expression that issues DROP INDEX. Versions before PostgreSQL 18.7, 17.12, 16.16…
-
High 8.8
PostgreSQL tuple-size integer wraparound executes arbitrary code
Integer wraparound in PostgreSQL in-memory tuple-size calculations allows a database user to execute arbitrary code as the operating system user running the database, via oversized tuple data. Versions before PostgreSQL 18.7, 17.12, 16.16, 15.20, and 14.25 ar…
-
High 8.8
PostgreSQL materialized set-returning function type confusion executes arbitrary code
Type confusion in PostgreSQL materialized set-returning functions allows a database user to execute arbitrary code as the operating system user running the database, via returning rows having different dynamic RECORD return types. json_populate_recordset() is…
-
High 8.8
PostgreSQL dropped-column type confusion executes arbitrary code
Type confusion in PostgreSQL anonymous RECORD types allows an object creator to execute arbitrary code as the operating system user running the database, via row types having dropped attributes in the same positions but with different widths or alignments. Wi…
-
High 8.8
PostgreSQL transition-table cursor use-after-free executes arbitrary code
Use after free in PostgreSQL trigger functions allows an object creator to execute arbitrary code as the operating system user running the database, via a cursor over a transition table. Versions before PostgreSQL 18.7, 17.12, 16.16, 15.20, and 14.25 are affe…
-
High 8.8
PostgreSQL type-cache invalidation gap executes arbitrary code
Type confusion from incomplete PostgreSQL type-cache invalidation allows an object creator to execute arbitrary code as the operating system user running the database, via a composite type change while its cache entry is being populated. Within major version …
-
High 8.8
PostgreSQL logical replication can write to subscriber system catalogs, executing arbitrary code
Missing authorization in PostgreSQL logical replication allows a compromised publisher to execute arbitrary code as the operating system user running the superuser-owned subscription, via naming a system catalog as a replication target. Only subscriptions own…
-
High 8.8
PostgreSQL dblink reentrant disconnect use-after-free executes arbitrary code
Use after free in the PostgreSQL dblink extension allows an object creator to execute arbitrary code as the operating system user running the database, via type conversion code that re-enters dblink and closes a connection whose results an outer dblink call i…
-
High 8.8
PostgreSQL FDW batch-insert mismatch executes arbitrary code
Heap-based buffer overflow in PostgreSQL foreign batch inserts allows a foreign server to execute arbitrary code, via reporting that it inserted more rows than the server supplied. postgres_fdw can legitimately encounter this when a rule on the remote table e…
-
High 8.8
PostgreSQL expanded-record domain-check use-after-free executes arbitrary code
Use after free in PostgreSQL expanded-record domain checks allows an object creator to execute arbitrary code as the operating system user running the database, via repeated checks of a domain over a composite type that cause reuse of a dangling memory-contex…
-
High 8.8
PostgreSQL plpgsql record-field type confusion executes arbitrary code
Type confusion in PostgreSQL plpgsql record-field assignment allows an object creator to execute arbitrary code as the operating system user running the database, via a reentrant domain CHECK that changes a RECORD variable's row type while a value is being ca…
-
High 8.8
PostgreSQL output parameter type confusion executes arbitrary code
Type confusion in PostgreSQL SQL-language functions allows an object creator to execute arbitrary code as the operating system user running the database, via an output parameter of type "any". Versions before PostgreSQL 18.7, 17.12, 16.16, 15.20, and 14.25 ar…
-
High 8.8CVE-2026-6460 Public exploit
PostgreSQL type confusion after ALTER ... SET DATA TYPE executes arbitrary code
Type confusion in PostgreSQL allows an object creator to execute arbitrary code as the operating system user running the database, via ALTER ... SET DATA TYPE primarily. Other DDL attack routes exist, such as "ALTER TABLE ... ADD COLUMN; ROLLBACK; ALTER TABLE…
-
High 8.1
PostgreSQL extended-statistics pseudo-type confusion executes arbitrary code
Type confusion in PostgreSQL extended statistics allows an object creator to execute arbitrary code as the operating system user running the database, via a statistics expression of an anonymous RECORD type whose backend-local type identifier denotes a differ…
-
High 8.1
PostgreSQL dblink and subscriptions can append to arbitrary files
External control of file name in PostgreSQL dblink and CREATE/ALTER SUBSCRIPTION allows a user to achieve persistent denial of service, via appending invalid data to a chosen file. Specifically, the "sslkeylogfile" connection parameter appends data, in NSS ke…
-
High 8.1
PostgreSQL psql COPY FROM STDIN early failure processes data lines as psql commands
Untrusted data inclusion in PostgreSQL psql COPY may allow a server administrator to elicit execution of data lines as psql commands, via error injection. If the "COPY FROM STDIN" or "\copy FROM STDIN" command fails before the server indicates that it awaits …
-
High 8.0
SQL injection in PostgreSQL reindexdb allows an object creator to execute arbitrary SQL as the database user running re…
-
High 7.2
PostgreSQL "vacuumdb --missing-stats-only" lets a database owner execute code as the vacuumdb user
Untrusted search path in PostgreSQL vacuumdb allows a database owner to execute arbitrary SQL as the database user running vacuumdb, via shadowing operators used in the --missing-stats-only catalog query. The pg_upgrade documentation recommends an affected va…
-
High 7.2
PostgreSQL extension-script substitutions allow SQL injection through object names
SQL injection in PostgreSQL extension-script substitutions allows an attacker with database-level CREATE privilege to execute arbitrary code as the bootstrap superuser, via a schema or owner name containing newlines or other special substrings. This is simila…
-
High 7.2
PostgreSQL extension script schema mishandling executes arbitrary SQL
Uncontrolled search path element in PostgreSQL CREATE EXTENSION allows an attacker with database-level CREATE privilege to execute arbitrary code as the bootstrap superuser, via ALTER SCHEMA ... RENAME or CREATE EXTENSION ... SCHEMA "$user". ALTER EXTENSION w…
-
Medium 6.5
PostgreSQL parallel B-tree array scan reads beyond array bounds
Buffer over-read in PostgreSQL parallel B-tree scans allows an object creator to read attacker-chosen server-memory addresses, via a function incorrectly marked PARALLEL SAFE or STABLE to make participating workers build different scan-key arrays. Within majo…
-
Medium 5.4
Missing authorization in PostgreSQL DROP OWNED allows a role to remove itself from restrictive row level security polic…
-
Medium 5.4
Inconsistent transition-capture state in PostgreSQL MERGE allows a table data modifier to make an AFTER trigger process…
-
Medium 5.4
PostgreSQL INSERT ... ON CONFLICT can read or modify rows despite auto-updatable view WHERE condition
Improper protection in PostgreSQL INSERT ... ON CONFLICT on auto-updatable views allows an attacker having INSERT and UPDATE privileges on the view to read and modify every row in the view's base table, via iterated INSERT ... ON CONFLICT DO UPDATE. This bypa…
-
Medium 5.3
PostgreSQL pre-authentication cancel request can leak a spinlock
Improper locking in PostgreSQL startup processing allows an unauthenticated network client to trigger a server restart, via arranging for authentication_timeout to arrive while it holds a spinlock during cancel handling. Within major version 18, minor version…
-
Medium 4.3
PostgreSQL dict_int reads beyond zero-length tokens
Buffer over-read in PostgreSQL dict_int allows a database user to disclose portions of server memory, via a zero-length token. Versions before PostgreSQL 18.7, 17.12, 16.16, 15.20, and 14.25 are affected.
-
Medium 4.3
Use after free in PostgreSQL COPY FROM error reporting allows a database user to disclose portions of server memory, vi…
-
Medium 4.3
PostgreSQL unterminated name value discloses server memory
Improper null termination in PostgreSQL array element assignment allows a database user to disclose server memory, via changing the final byte of a fixed-length name value to a nonzero byte and passing it to code that treats the value as a C string. Versions …
-
Medium 4.3
Exposure of sensitive information in PostgreSQL security_barrier processing allows a database user to infer values hidd…
-
Medium 4.3
Missing authorization in PostgreSQL REASSIGN OWNED allows a role granted INHERIT but not SET to transfer objects to the…
-
Medium 4.3
PostgreSQL pg_show_all_settings() use-after-free discloses memory
Use after free in PostgreSQL pg_show_all_settings() allows a database user to retrieve memory contents, via loading a module while the function is scanning custom-variable placeholders that the module replaces and frees. Within major versions 16-18, minor ver…
-
Medium 4.3
PostgreSQL INSERT ... ON CONFLICT can read rows despite row security policies
Improper protection in PostgreSQL INSERT ... ON CONFLICT allows an attacker having INSERT, UPDATE, and applicable SELECT privileges on the table to read every row despite row security policies, via iterated INSERT ... ON CONFLICT DO UPDATE. Unlike CVE-2026-16…
-
Low 3.7
PostgreSQL pg_basebackup can use backup manifest content as a format string
Use of externally-controlled format string in PostgreSQL pg_basebackup allows an attacker having already compromised a server to achieve disclosure from pg_basebackup memory, via backup manifest bytes. The vulnerability does not return the improperly-read byt…
-
Low 3.1
PostgreSQL foreign key and JSON conversions bypass EXECUTE privilege on cast functions
Missing authorization in PostgreSQL type conversion allows a database user to invoke a cast function despite lacking EXECUTE privilege on that function, via foreign keys, to_json(), and others. A successful attack requires the attacker to search each database…
Revision history
-
#1
Initiale Fassung
References
-
PostgreSQL Release Notes vom 2026-11-12
https://www.postgresql.org/about/news/postgresql-187-1712-1616-1520-1425-and-19-rc-2-released-3442/
-
Debian Security Advisory DSA-6625 vom 2026-11-13
https://lists.debian.org/debian-security-announce/2026/msg00545.html