PostgreSQL security advisories
CVE records, recorded fixes, and original historical evidence. JSON · Release comparisons
Known PostgreSQL security vulnerabilities
View by PostgreSQL branch: All versions · 19 · 18 · 17 · 16 · 15 · 14 · 13 · 12 · 11 · 10 · 9.6 · 9.5 · 9.4 · 9.3 · 9.2 · 9.1 · 9.0 · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.4 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5 · 6.4 · 6.3 ·
| Reference | Affected | Fixed | Component & CVSS | Description |
|---|---|---|---|---|
| CVE-2026-19385 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | client 8.8 | Heap buffer overflow in PostgreSQL pg_dump of long function transform lists allows an object creator to execute arbitrary code as the operating system user running pg_dump, via a crafted transform list. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-18408 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | client 8.8 | Untrusted data inclusion in pg_dump in PostgreSQL allows a malicious superuser of the origin server to inject arbitrary code for restore-time execution as the client operating system account running psql to restore the dump, via psql \restrict meta-command input expansion. The fix for CVE-2025-8714 introduced \restrict and \unrestrict to block this attack, but \unrestrict itself was sufficient for an attack. pg_dumpall is also affected. pg_restore is affected when used to generate a plain-format dump. Non-core use of \restrict would be affected, but we've not identified non-core use. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-18024 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 4.3 | Buffer over-read in PostgreSQL ascii() SQL function allows a user to disclose up to 3 bytes after the end of a specific allocation, via a crafted text value. This is the same class of defect that CVE-2026-2006 fixed, though this instance has less impact. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-16241 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | client 3.8 | Integer underflow in PostgreSQL ECPG allows a database server administrator to achieve temporary denial of service against the ECPG client via sending a bytea value lacking the mandatory prefix. The client overwrites a huge memory region with bytes outside attacker knowledge or control. This typically yields a simple SIGSEGV, but rare cases might achieve client-specific integrity impact via the write. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-16239 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 8.8 | Type confusion in PostgreSQL "portal"/cursor lifecycle allows a user to execute arbitrary code as the operating system user running the database, via re-creation of a cursor or other portal with different types. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-16238 | 18 | 18.6 | core server 8.8 | Type confusion in PostgreSQL pg_restore_attribute_stats() allows an object creator to execute arbitrary code as the operating system user running the database, via conflation of range and multirange values. Within major version 18, minor versions before PostgreSQL 18.6 are affected. Versions before PostgreSQL 18 are unaffected. More details… |
| CVE-2026-15742 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | contrib module 8.8 | Integer wraparound in PostgreSQL fuzzystrmatch allows a user to direct writes to a huge range of addresses, executing arbitrary code as the operating system user running the database, via extreme inputs to SQL function levenshtein() or levenshtein_less_equal(). Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-15741 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 8.8 | SQL injection in PostgreSQL EXTRACT() deparse allows an object owner to execute arbitrary SQL as a superuser via a hostile object definition. Attacks affect expression deparse consumers broadly, including pg_dump, psql commands like \sf, and any similar usage in non-core tools. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-14681 | 17 18 | 17.11 18.6 | core server 4.2 | Improper enforcement of message integrity in PostgreSQL GSSAPI support allows a user to negotiate GSSAPI contrary to pg_hba.conf rules, via initial direct TLS connection. Despite a pg_hba.conf that appears to require GSSAPI, the connection may exchange data over TLS encryption alone. If the TLS settings are more permissive than the GSS settings, the connection may continue with lesser protection. Within major versions 17-18, minor versions before PostgreSQL 18.6 and 17.11 are affected. Versions before PostgreSQL 17 are unaffected. More details… |
| CVE-2026-14680 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 8.8 | Type confusion with PostgreSQL "internal" data type arguments allows any user to execute arbitrary code as the operating system user running the database, via calls to functions with that argument type. Type "internal" represents a class of mutually-incompatible data structures not intended for access from SQL. The system intended to prevent such function calls, but this prevention had gaps. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-14679 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 8.2 | Stack buffer overflow in PostgreSQL argument name matching allows an object creator to achieve unknown impacts via OUT parameter count. The attack can write only 0x0 and 0x1 bytes. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-14678 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | contrib module 4.3 | Buffer over-read in PostgreSQL pg_trgm index picksplit function reads past end of a heap buffer. This might allow a table maintainer to infer limited memory values, via the lossy signal of index split choices. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-14677 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 8.8 | Integer wraparound in PostgreSQL 32-bit builds of pltcl and plperl allows an object creator to cause the server to undersize an allocation and write out-of-bounds via crafted function bodies. This may execute arbitrary code as the operating system user running the database. CVE-2026-6473 had fixed similar problems. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-14676 | 18 | 18.6 | contrib module 8.8 | Heap buffer overflow in PostgreSQL pg_stat_statements allows the query author to execute arbitrary code as the operating system user running the database, via crafted queries containing array constants. Within major version 18, minor versions before PostgreSQL 18.6 are affected. Versions before PostgreSQL 18 are unaffected. More details… |
| CVE-2026-14673 | 14 15 16 18 | 14.24 15.19 16.15 18.6 | contrib module 3.8 | Untrusted search path in PostgreSQL amcheck allows a grantee of amcheck function EXECUTE privilege to execute arbitrary functions as the owners of expression indexes that depend on the search path, via setting a hostile search path before calling the amcheck function. Within major versions 18, 16, 15, and 14, minor versions before PostgreSQL 18.6, 16.15, 15.19, and 14.24 are affected. PostgreSQL 17 is unaffected. More details… |
| CVE-2026-14672 | 16 17 18 | 16.15 17.11 18.6 | core server 5.3 | Observable response discrepancy in PostgreSQL SCRAM authentication allows an unauthenticated user to test the existence of a user via observing the SCRAM iteration count. This requires the probed user to have a non-default scram_iterations count, because the authentication challenge for a nonexistent user reports the default scram_iterations. Within major versions 16-18, minor versions before PostgreSQL 18.6, 17.11, and 16.15 are affected. Versions before PostgreSQL 16 are unaffected. More details… |
| CVE-2026-14671 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | contrib module 8.8 | Type confusion in PostgreSQL module "refint" allows an object creator to execute arbitrary code as the operating system user running the database. The fix for this emerged as a non-security bug report, and the fix appear in the git repository with subject "refint: Remove plan cache.", without a CVE number. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-14670 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 8.8 | Heap buffer overflow in PostgreSQL plperl return of a tied hash allows the function owner to execute arbitrary code as the operating system user running the database, via a crafted function body. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-14669 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 8.8 | Heap buffer overflow in PostgreSQL to_char(timestamptz) allows the party choosing the timezone to execute arbitrary code as the operating system user running the database, via a long POSIX timezone abbreviation. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-14668 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 8.1 | Type confusion regarding input of PostgreSQL ctid data type selectivity estimator allows an object creator to view a calculation derived from the value of an arbitrary 4-byte span of memory, via a chosen non-ctid input. While the calculation loses precision, substantial memory value recovery appears possible. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-14666 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 4.2 | Incomplete tracking in PostgreSQL of changes to role membership, role attributes, and database ownership allows a query to continue using cached row-level security policies after those changes require a different policy, via plan reuse. Stale policies continue until some other event invalidates the cache or connection termination ends the session. This permits a user to complete reads and modifications that were recently permitted but now forbidden. An attacker must tailor an attack to a particular application's pattern of privilege removal and role-specific row security policies. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-14664 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 8.8 | Heap buffer overflow in PostgreSQL regexp allows the query author to execute arbitrary code as the operating system user running the database, via text that would not pass encoding validation. This shares heritage with CVE-2026-2006, but this case involved unanticipated data growth when round-tripped through pg_wchar. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-14663 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | contrib module 6.5 | Cleartext storage in PostgreSQL pgcrypto disabled ciphers allows a user to recover cleartext, via direct observation of the faulty ciphertext. The OpenSSL version and OpenSSL configuration determine the disabled ciphers. If the application accepts encrypted data as input, decryption will succeed even with the wrong key. This in turn loses the modest protection from the Modification Detection Code (MDC). Affected functions are pgp_sym_encrypt, pgp_sym_decrypt, pgp_pub_encrypt, pgp_pub_decrypt, pgp_sym_encrypt_bytea, pgp_sym_decrypt_bytea, pgp_pub_encrypt_bytea, and pgp_pub_decrypt_bytea. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-14662 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 8.8 | Integer wraparound in PostgreSQL tsvector and tsquery data type functions allows an unprivileged database user to cause the server to undersize an allocation and write out-of-bounds, via crafted large inputs. This may execute arbitrary code as the operating system user running the database. These types are typically sourced from application logic, not taken from the application's user. Hence, application users attacking the database, through the application as a conduit, are unlikely. CVE-2026-6473 had fixed similar problems. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-6638 | 16 17 18 | 16.14 17.10 18.4 | core server 3.7 | SQL injection in PostgreSQL logical replication ALTER SUBSCRIPTION ... REFRESH PUBLICATION allows a subscriber table creator to execute arbitrary SQL with the subscription's publication-side credentials. The attack takes effect at the next REFRESH PUBLICATION. Within major versions 16, 17, and 18, minor versions before PostgreSQL 18.4, 17.10, and 16.14 are affected. Versions before PostgreSQL 16 are unaffected. More details… |
| CVE-2026-6637 | 14 15 16 17 18 | 14.23 15.18 16.14 17.10 18.4 | contrib module 8.8 | Stack buffer overflow in PostgreSQL module "refint" allows an unprivileged database user to execute arbitrary code as the operating system user running the database. A distinct attack is possible if the application declares a user-controlled column as a "refint" cascade primary key and facilitates user-controlled updates to that column. In that case, a SQL injection allows a primary key update value provider to execute arbitrary SQL as the database user performing the primary key update. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected. More details… |
| CVE-2026-6575 | 18 | 18.4 | core server 4.3 | Buffer over-read in PostgreSQL function pg_restore_attribute_stats() accepts array values of unmatched length, which causes query planning to read past end of one array. This allows a table maintainer to infer memory values past that array end. Within major version 18, minor versions before PostgreSQL 18.4 are affected. Versions before PostgreSQL 18 are unaffected. More details… |
| CVE-2026-6479 | 14 15 16 17 18 | 14.23 15.18 16.14 17.10 18.4 | core server 7.5 | Uncontrolled recursion in PostgreSQL SSL and GSS negotiation allows an attacker able to connect to a PostgreSQL AF_UNIX socket to achieve sustained denial of service. If SSL and GSS are both disabled, an attacker can do the same via access to a PostgreSQL TCP socket. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected. More details… |
| CVE-2026-6478 | 14 15 16 17 18 | 14.23 15.18 16.14 17.10 18.4 | core server 6.5 | Covert timing channel in comparison of MD5-hashed password in PostgreSQL authentication allows an attacker to recover user credentials sufficient to authenticate. This does not affect scram-sha-256 passwords, the default in all supported releases. However, current databases may have MD5-hashed passwords originating in upgrades from PostgreSQL 13 or earlier. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected. More details… |
| CVE-2026-6477 | 14 15 16 17 18 | 14.23 15.18 16.14 17.10 18.4 | client 8.8 | Use of inherently dangerous function PQfn(..., result_is_int=0, ...) in PostgreSQL libpq lo_export(), lo_read(), lo_lseek64(), and lo_tell64() functions allows the server superuser to overwrite a client stack buffer with an arbitrarily-large response. Like gets(), PQfn(..., result_is_int=0, ...) stores arbitrary-length, server-determined data into a buffer of unspecified size. Because both the \lo_export command in psql and pg_dump call lo_read(), the server superuser can overwrite pg_dump or psql stack memory. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected. More details… |
| CVE-2026-6476 | 17 18 | 17.10 18.4 | client 7.2 | SQL injection in PostgreSQL pg_createsubscriber allows an attacker with pg_create_subscription rights to execute arbitrary SQL as a superuser. The attack takes effect when pg_createsubscriber next runs. Within major versions 17 and 18, minor versions before PostgreSQL 18.4 and 17.10 are affected. Versions before PostgreSQL 17 are unaffected. More details… |
| CVE-2026-6475 | 14 15 16 17 18 | 14.23 15.18 16.14 17.10 18.4 | client 8.8 | Symlink following in PostgreSQL pg_basebackup plain format and in pg_rewind allows an origin superuser to overwrite local files, e.g. /var/lib/postgres/.bashrc, that hijack the operating system account. It will remain the case that starting the server after these commands implicitly trusts the origin superuser, due to features like shared_preload_libraries. Hence, the attack has practical implications only if one takes relevant action between these commands and server start, like moving the files to a different VM or snapshotting the VM. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected. More details… |
| CVE-2026-6474 | 14 15 16 17 18 | 14.23 15.18 16.14 17.10 18.4 | core server 4.3 | Externally-controlled format string in PostgreSQL timeofday() function allows an attacker to retrieve portions of server memory, via crafted timezone zones. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected. More details… |
| CVE-2026-6473 | 14 15 16 17 18 | 14.23 15.18 16.14 17.10 18.4 | core server 8.8 | Integer wraparound in multiple PostgreSQL server features allows an unprivileged database user to cause the server to undersize an allocation and write out-of-bounds. This may execute arbitrary code as the operating system user running the database. In applications that pass gigabyte-scale user inputs to the relevant database functions, the application input provider may achieve a segmentation fault. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected. More details… |
| CVE-2026-6472 | 14 15 16 17 18 | 14.23 15.18 16.14 17.10 18.4 | core server 5.4 | Missing authorization in PostgreSQL CREATE TYPE allows an object creator to hijack other queries that use search_path to find user-defined types, including extension-defined types. That is to say, the victim will execute arbitrary SQL functions of the attacker's choice. Versions before PostgreSQL 18.4, 17.10, 16.14, 15.18, and 14.23 are affected. More details… |
| CVE-2026-6471 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 7.2 | Missing authorization in PostgreSQL logical decoding allows a non-superuser holding REPLICATION privilege to dlopen any file visible to the operating system account running the server, via the choice of logical decoding plugin. This in turn runs arbitrary code as that account. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-6470 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 4.3 | Missing authorization in PostgreSQL DDL commands allows an object creator to achieve denial of service against ALTER and DROP of the type, via creating a dependency on the type. Many DDL operations did check the privilege, but assigning a range subtype and referencing the type from an SQL expression did not. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-6469 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | core server 3.8 | Incorrect ownership assignment in PostgreSQL ALTER TABLE ALTER TYPE command reassigns ownership of dependent statistics objects to the current user. This wrongly allows the table owner to run DROP STATISTICS and ALTER STATISTICS via this improper ownership. It wrongly denies those commands to the prior statistics object owner. DROP TABLE remains able to remove statistics objects, so this exploit achieves nothing in many ownership arrangements. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-6464 | 14 15 16 17 18 | 14.24 15.19 16.15 17.11 18.6 | client 8.1 | 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 input rows, psql processes the in-line data rows as psql commands. "COPY FROM" with a filename is unaffected. The server administrator has no inherent control over the data rows, so a complete attack requires the attacker to separately acquire control of both the server and the data rows. Alternatively, an attacker controlling data rows alone might complete an attack through a coincidental error that they don't control. Versions before PostgreSQL 18.6, 17.11, 16.15, 15.19, and 14.24 are affected. More details… |
| CVE-2026-2007 | 18 | 18.2 | contrib module 8.2 | Heap buffer overflow in PostgreSQL pg_trgm allows a database user to achieve unknown impacts via a crafted input string. The attacker has limited control over the byte patterns to be written, but we have not ruled out the viability of attacks that lead to privilege escalation. PostgreSQL 18.1 and 18.0 are affected. More details… |
| CVE-2026-2006 | 14 15 16 17 18 | 14.21 15.16 16.12 17.8 18.2 | core server 8.8 | Missing validation of multibyte character length in PostgreSQL text manipulation allows a database user to issue crafted queries that achieve a buffer overrun. That suffices to execute arbitrary code as the operating system user running the database. Versions before PostgreSQL 18.2, 17.8, 16.12, 15.16, and 14.21 are affected. More details… |
| CVE-2026-2005 | 14 15 16 17 18 | 14.21 15.16 16.12 17.8 18.2 | contrib module 8.8 | Heap buffer overflow in PostgreSQL pgcrypto allows a ciphertext provider to execute arbitrary code as the operating system user running the database. Versions before PostgreSQL 18.2, 17.8, 16.12, 15.16, and 14.21 are affected. More details… |
| CVE-2026-2004 | 14 15 16 17 18 | 14.21 15.16 16.12 17.8 18.2 | contrib module 8.8 | Missing validation of type of input in PostgreSQL intarray extension selectivity estimator function allows an object creator to execute arbitrary code as the operating system user running the database. Versions before PostgreSQL 18.2, 17.8, 16.12, 15.16, and 14.21 are affected. More details… |
| CVE-2026-2003 | 14 15 16 17 18 | 14.21 15.16 16.12 17.8 18.2 | core server 4.3 | Improper validation of type "oidvector" in PostgreSQL allows a database user to disclose a few bytes of server memory. We have not ruled out viability of attacks that arrange for presence of confidential information in disclosed bytes, but they seem unlikely. Versions before PostgreSQL 18.2, 17.8, 16.12, 15.16, and 14.21 are affected. More details… |
| CVE-2025-12818 | 13 14 15 16 17 18 | 13.23 14.20 15.15 16.11 17.7 18.1 | core server 5.9 | Integer wraparound in multiple PostgreSQL libpq client library functions allows an application input provider or network peer to cause libpq to undersize an allocation and write out-of-bounds by hundreds of megabytes. This results in a segmentation fault for the application using libpq. Versions before PostgreSQL 18.1, 17.7, 16.11, 15.15, 14.20, and 13.23 are affected. More details… |
| CVE-2025-12817 | 13 14 15 16 17 18 | 13.23 14.20 15.15 16.11 17.7 18.1 | core server 3.1 | Missing authorization in PostgreSQL CREATE STATISTICS command allows a table owner to achieve denial of service against other CREATE STATISTICS users by creating in any schema. A later CREATE STATISTICS for the same name, from a user having the CREATE privilege, would then fail. Versions before PostgreSQL 18.1, 17.7, 16.11, 15.15, 14.20, and 13.23 are affected. More details… |
| CVE-2025-8715 | 13 14 15 16 17 | 13.22 14.19 15.14 16.10 17.6 | core server 8.8 | Improper neutralization of newlines in pg_dump in PostgreSQL allows a user of the origin server to inject arbitrary code for restore-time execution as the client operating system account running psql to restore the dump, via psql meta-commands inside a purpose-crafted object name. The same attacks can achieve SQL injection as a superuser of the restore target server. pg_dumpall, pg_restore, and pg_upgrade are also affected. Versions before PostgreSQL 17.6, 16.10, 15.14, 14.19, and 13.22 are affected. Versions before 11.20 are unaffected. CVE-2012-0868 had fixed this class of problem, but version 11.20 reintroduced it. More details… |
| CVE-2025-8714 | 13 14 15 16 17 | 13.22 14.19 15.14 16.10 17.6 | core server 8.8 | Untrusted data inclusion in pg_dump in PostgreSQL allows a malicious superuser of the origin server to inject arbitrary code for restore-time execution as the client operating system account running psql to restore the dump, via psql meta-commands. pg_dumpall is also affected. pg_restore is affected when used to generate a plain-format dump. This is similar to MySQL CVE-2024-21096. Versions before PostgreSQL 17.6, 16.10, 15.14, 14.19, and 13.22 are affected. More details… |
| CVE-2025-8713 | 13 14 15 16 17 | 13.22 14.19 15.14 16.10 17.6 | core server 3.1 | PostgreSQL optimizer statistics allow a user to read sampled data within a view that the user cannot access. Separately, statistics allow a user to read sampled data that a row security policy intended to hide. PostgreSQL maintains statistics for tables by sampling data available in columns; this data is consulted during the query planning process. Prior to this release, a user could craft a leaky operator that bypassed view access control lists (ACLs) and bypassed row security policies in partitioning or table inheritance hierarchies. Reachable statistics data notably included histograms and most-common-values lists. CVE-2017-7484 and CVE-2019-10130 intended to close this class of vulnerability, but this gap remained. Versions before PostgreSQL 17.6, 16.10, 15.14, 14.19, and 13.22 are affected. More details… |
| CVE-2025-4207 | 13 14 15 16 17 | 13.21 14.18 15.13 16.9 17.5 | core server 5.9 | Buffer over-read in PostgreSQL GB18030 encoding validation allows a database input provider to achieve temporary denial of service on platforms where a 1-byte over-read can elicit process termination. This affects the database server and also libpq. Versions before PostgreSQL 17.5, 16.9, 15.13, 14.18, and 13.21 are affected. More details… |
| CVE-2025-1094 | 13 14 15 16 17 | 13.19 14.16 15.11 16.7 17.3 | core server 8.1 | Improper neutralization of quoting syntax in PostgreSQL libpq functions PQescapeLiteral(), PQescapeIdentifier(), PQescapeString(), and PQescapeStringConn() allows a database input provider to achieve SQL injection in certain usage patterns. Specifically, SQL injection requires the application to use the function result to construct input to psql, the PostgreSQL interactive terminal. Similarly, improper neutralization of quoting syntax in PostgreSQL command line utility programs allows a source of command line arguments to achieve SQL injection when client_encoding is BIG5 and server_encoding is one of EUC_TW or MULE_INTERNAL. Versions before PostgreSQL 17.3, 16.7, 15.11, 14.16, and 13.19 are affected. More details… |
| CVE-2024-10979 | 12 13 14 15 16 17 | 12.21 13.17 14.14 15.9 16.5 17.1 | core server 8.8 | Incorrect control of environment variables in PostgreSQL PL/Perl allows an unprivileged database user to change sensitive process environment variables (e.g. PATH ). That often suffices to enable arbitrary code execution, even if the attacker lacks a database server operating system user. Versions before PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 are affected.
The PostgreSQL project thanks Coby Abrams for reporting this problem. More details… |
| CVE-2024-10978 | 12 13 14 15 16 17 | 12.21 13.17 14.14 15.9 16.5 17.1 | core server 4.2 | Incorrect privilege assignment in PostgreSQL allows a less-privileged application user to view or change different rows from those intended. An attack requires the application to use SET ROLE , SET SESSION AUTHORIZATION , or an equivalent feature. The problem arises when an application query uses parameters from the attacker or conveys query results to the attacker. If that query reacts to current_setting('role') or the current user ID, it may modify or return data as though the session had not used SET ROLE or SET SESSION AUTHORIZATION . The attacker does not control which incorrect user ID applies. Query text from less-privileged sources is not a concern here, because SET ROLE and SET SESSION AUTHORIZATION are not sandboxes for unvetted queries. Versions before PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 are affected.
The PostgreSQL project thanks Tom Lane for reporting this problem. More details… |
| CVE-2024-10977 | 12 13 14 15 16 17 | 12.21 13.17 14.14 15.9 16.5 17.1 | client 3.1 | Client use of server error message in PostgreSQL allows a server not trusted under current SSL or GSS settings to furnish arbitrary non-NUL bytes to the libpq application. For example, a man-in-the-middle attacker could send a long error message that a human or screen-scraper user of psql mistakes for valid query results. This is probably not a concern for clients where the user interface unambiguously indicates the boundary between one error message and other text. Versions before PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 are affected.
The PostgreSQL project thanks Jacob Champion for reporting this problem. More details… |
| CVE-2024-10976 | 12 13 14 15 16 17 | 12.21 13.17 14.14 15.9 16.5 17.1 | core server 4.2 | Incomplete tracking in PostgreSQL of tables with row security allows a reused query to view or change different rows from those intended. CVE-2023-2455 and CVE-2016-2193 fixed most interaction between row security and user ID changes. They missed cases where a subquery, WITH query, security invoker view, or SQL-language function references a table with a row-level security policy. This has the same consequences as the two earlier CVEs. That is to say, it leads to potentially incorrect policies being applied in cases where role-specific policies are used and a given query is planned under one role and then executed under other roles. This scenario can happen under security definer functions or when a common user and query is planned initially and then re-used across multiple SET ROLEs.
Applying an incorrect policy may permit a user to complete otherwise-forbidden reads and modifications. This affects only databases that have used CREATE POLICY to define a row security policy. An attacker must tailor an attack to a particular application's pattern of query plan reuse, user ID changes, and role-specific row security policies. Versions before PostgreSQL 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21 are affected. More details… |
| CVE-2024-7348 | 12 13 14 15 16 | 12.20 13.16 14.13 15.8 16.4 | core server 8.8 | Time-of-check Time-of-use (TOCTOU) race condition in pg_dump in PostgreSQL allows an object creator to execute arbitrary SQL functions as the user running pg_dump, which is often a superuser. The attack involves replacing another relation type with a view or foreign table. The attack requires waiting for pg_dump to start, but winning the race condition is trivial if the attacker retains an open transaction. Versions before PostgreSQL 16.4, 15.8, 14.13, 13.16, and 12.20 are affected.
The PostgreSQL project thanks Noah Misch for reporting this problem. More details… |
| CVE-2024-4317 | 14 15 16 | 14.12 15.7 16.3 | core server 3.1 | Missing authorization in PostgreSQL built-in views pg_stats_ext and pg_stats_ext_exprs allows an unprivileged database user to read most common values and other statistics from CREATE STATISTICS commands of other users. The most common values may reveal column values the eavesdropper could not otherwise read or results of functions they cannot execute. Installing an unaffected version only fixes fresh PostgreSQL installations, namely those that are created with the initdb utility after installing that version. Current PostgreSQL installations will remain vulnerable until they follow the instructions in the release notes, which are provided as a convenience in the below section. Within major versions 14-16, minor versions before PostgreSQL 16.3, 15.7, and 14.12 are affected. Versions before PostgreSQL 14 are unaffected.
This fix only fixes fresh PostgreSQL installations, namely those that are created with the initdb utility after this fix is applied. If you have a current PostgreSQL installation and are concerned about this issue, please use the following remediation steps to fix the issue:
From the above URLs, you can click the URL that says "raw" to download a version that you can copy and paste.
Be sure to use the script appropriate to your PostgreSQL major version. If you do not see this file, either your version is not vulnerable (only PostgreSQL 14, 15, and 16 are affected) or your minor version is too old to have the fix.
\i /usr/share/postgresql/fix-CVE-2024-4317.sql
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
After executing the fix-CVE-2024-4317.sql script in template0 and template1 , you should revoke the ability for template0 to accept connections. You can do this with the following command:
ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
The PostgreSQL project thanks Lukas Fittl for reporting this problem. More details… |
| CVE-2024-0985 | 12 13 14 15 16 | 12.18 13.14 14.11 15.6 16.2 | core server 8 | UPDATE (June 19, 2024) : Added v16 as impacted. Updated description to clarify the attack vector.
Late privilege drop in REFRESH MATERIALIZED VIEW CONCURRENTLY in PostgreSQL allows an object creator to execute arbitrary SQL functions as the command issuer. The command intends to run SQL functions as the owner of the materialized view, enabling safe refresh of untrusted materialized views. The victim is a superuser or member of one of the attacker's roles. The attack requires luring the victim into running REFRESH MATERIALIZED VIEW CONCURRENTLY on the attacker's materialized view. More details… |
| CVE-2023-39418 | 15 | 15.4 | core server 3.1 | PostgreSQL 15 introduced the MERGE command, which fails to test new rows against row security policies defined for UPDATE and SELECT . If UPDATE and SELECT policies forbid some row that INSERT policies do not forbid, a user could store such rows. Subsequent consequences are application-dependent. This affects only databases that have used CREATE POLICY to define a row security policy.
The PostgreSQL project thanks Dean Rasheed for reporting this problem. More details… |
| CVE-2023-39417 | 11 12 13 14 15 | 11.21 12.16 13.12 14.9 15.4 | core server 7.5 | An extension script is vulnerable if it uses @extowner@ , @extschema@ , or @extschema:...@ inside a quoting construct (dollar quoting, '' , or "" ). No bundled extension is vulnerable. Vulnerable uses do appear in a documentation example and in non-bundled extensions. Hence, the attack prerequisite is an administrator having installed files of a vulnerable, trusted, non-bundled extension. Subject to that prerequisite, this enables an attacker having database-level CREATE privilege to execute arbitrary code as the bootstrap superuser. PostgreSQL will block this attack in the core server, so there's no need to modify individual extensions.
The PostgreSQL project thanks Micah Gates, Valerie Woolard, Tim Carey-Smith, and Christoph Berg for reporting this problem. More details… |
| CVE-2023-5870 | 11 12 13 14 15 16 | 11.22 12.17 13.13 14.10 15.5 16.1 | core server 2.2 | Documentation says the pg_signal_backend role cannot signal "a backend owned by a superuser". On the contrary, it can signal background workers, including the logical replication launcher. It can signal autovacuum workers and the autovacuum launcher. Signaling autovacuum workers and those two launchers provides no meaningful exploit, so exploiting this vulnerability requires a non-core extension with a less-resilient background worker. For example, a non-core background worker that does not auto-restart would experience a denial of service with respect to that particular background worker.
The PostgreSQL project thanks Hemanth Sandrana and Mahendrakar Srinivasarao for reporting this problem. More details… |
| CVE-2023-5869 | 11 12 13 14 15 16 | 11.22 12.17 13.13 14.10 15.5 16.1 | core server 8.8 | While modifying certain SQL array values, missing overflow checks let authenticated database users write arbitrary bytes to a memory area that facilitates arbitrary code execution. Missing overflow checks also let authenticated database users read a wide area of server memory. The CVE-2021-32027 fix covered some attacks of this description, but it missed others.
The PostgreSQL project thanks Pedro Gallegos for reporting this problem. More details… |
| CVE-2023-5868 | 11 12 13 14 15 16 | 11.22 12.17 13.13 14.10 15.5 16.1 | core server 4.3 | Certain aggregate function calls receiving "unknown"-type arguments could disclose bytes of server memory from the end of the "unknown"-type value to the next zero byte. One typically gets an "unknown"-type value via a string literal having no type designation. We have not confirmed or ruled out viability of attacks that arrange for presence of notable, confidential information in disclosed bytes.
The PostgreSQL project thanks Jingzhou Fu for reporting this problem. More details… |
| CVE-2023-2455 | 11 12 13 14 15 | 11.20 12.15 13.11 14.8 15.3 | core server 4.2 | While CVE-2016-2193 fixed most interaction between row security and user ID changes, it missed a scenario involving function inlining. This leads to potentially incorrect policies being applied in cases where role-specific policies are used and a given query is planned under one role and then executed under other roles. This scenario can happen under security definer functions or when a common user and query is planned initially and then re-used across multiple SET ROLE s. Applying an incorrect policy may permit a user to complete otherwise-forbidden reads and modifications. This affects only databases that have used CREATE POLICY to define a row security policy.
The PostgreSQL project thanks Wolfgang Walther for reporting this problem. More details… |
| CVE-2023-2454 | 11 12 13 14 15 | 11.20 12.15 13.11 14.8 15.3 | core server 7.2 | This enabled an attacker having database-level CREATE privilege to execute arbitrary code as the bootstrap superuser. Database owners have that right by default, and explicit grants may extend it to other users.
The PostgreSQL project thanks Alexander Lakhin for reporting this problem. More details… |
| CVE-2022-41862 | 12 13 14 15 | 12.14 13.10 14.7 15.2 | client 3.7 | A modified, unauthenticated server can send an unterminated string during the establishment of Kerberos transport encryption. When a libpq client application has a Kerberos credential cache and doesn't explicitly disable option gssencmode , a server can cause libpq to over-read and report an error message containing uninitialized bytes from and following its receive buffer. If libpq's caller somehow makes that message accessible to the attacker, this achieves a disclosure of the over-read bytes. We have not confirmed or ruled out viability of attacks that arrange for a crash or for presence of notable, confidential information in disclosed bytes.
The PostgreSQL project thanks Jacob Champion for reporting this problem. More details… |
| CVE-2022-2625 | 10 11 12 13 14 | 10.22 11.17 12.12 13.8 14.5 | core server 7.1 | Some extensions use CREATE OR REPLACE or CREATE IF NOT EXISTS commands. Some don't adhere to the documented rule to target only objects known to be extension members already. An attack requires permission to create non-temporary objects in at least one schema, ability to lure or wait for an administrator to create or update an affected extension in that schema, and ability to lure or wait for a victim to use the object targeted in CREATE OR REPLACE or CREATE IF NOT EXISTS . Given all three prerequisites, the attacker can run arbitrary code as the victim role, which may be a superuser. Known-affected extensions include both PostgreSQL-bundled and non-bundled extensions. PostgreSQL is blocking this attack in the core server, so there's no need to modify individual extensions.
The PostgreSQL project thanks Sven Klemm for reporting this problem. More details… |
| CVE-2022-1552 | 10 11 12 13 14 | 10.21 11.16 12.11 13.7 14.3 | core server 8.8 | Autovacuum, REINDEX , CREATE INDEX , REFRESH MATERIALIZED VIEW , CLUSTER , and pg_amcheck made incomplete efforts to operate safely when a privileged user is maintaining another user's objects. Those commands activated relevant protections too late or not at all. An attacker having permission to create non-temp objects in at least one schema could execute arbitrary SQL functions under a superuser identity.
While promptly updating PostgreSQL is the best remediation for most users, a user unable to do that can work around the vulnerability by disabling autovacuum, not manually running the above commands, and not restoring from output of the pg_dump command. Performance may degrade quickly under this workaround. VACUUM is safe, and all commands are fine when a trusted user owns the target object.
The PostgreSQL project thanks Alexander Lakhin for reporting this problem. More details… |
| CVE-2021-32029 | 11 12 13 | 11.12 12.7 13.3 | core server 6.5 | Using an UPDATE ... RETURNING on a purpose-crafted partitioned table, an attacker can read arbitrary bytes of server memory. In the default configuration, any authenticated database user can create prerequisite objects and complete this attack at will. A user lacking the CREATE and TEMPORARY privileges on all databases and the CREATE privilege on all schemas typically cannot use this attack at will.
The PostgreSQL project thanks Tom Lane for reporting this problem. More details… |
| CVE-2021-32028 | 10 11 12 13 9.6 | 10.17 11.12 12.7 13.3 9.6.22 | core server 6.5 | Using an INSERT ... ON CONFLICT ... DO UPDATE command on a purpose-crafted table, an attacker can read arbitrary bytes of server memory. In the default configuration, any authenticated database user can create prerequisite objects and complete this attack at will. A user lacking the CREATE and TEMPORARY privileges on all databases and the CREATE privilege on all schemas cannot use this attack at will.
The PostgreSQL project thanks Andres Freund for reporting this problem. More details… |
| CVE-2021-32027 | 10 11 12 13 9.6 | 10.17 11.12 12.7 13.3 9.6.22 | core server 6.5 | While modifying certain SQL array values, missing bounds checks let authenticated database users write arbitrary bytes to a wide area of server memory.
The PostgreSQL project thanks Tom Lane for reporting this problem. More details… |
| CVE-2021-23222 | 10 11 12 13 14 9.6 | 10.19 11.14 12.9 13.5 14.1 9.6.24 | client 3.7 | A man-in-the-middle attacker can inject false responses to the client's first few queries, despite the use of SSL certificate verification and encryption.
If more preconditions hold, the attacker can exfiltrate the client's password or other confidential data that might be transmitted early in a session. The attacker must have a way to trick the client's intended server into making the confidential data accessible to the attacker. A known implementation having that property is a PostgreSQL configuration vulnerable to CVE-2021-23214 . As with any exploitation of CVE-2021-23214 , the server must be using trust authentication with a clientcert requirement or using cert authentication. To disclose a password, the client must be in possession of a password, which is atypical when using an authentication configuration vulnerable to CVE-2021-23214 . The attacker must have some other way to access the server to retrieve the exfiltrated data (a valid, unprivileged login account would be sufficient).
The PostgreSQL project thanks Jacob Champion for reporting this problem. More details… |
| CVE-2021-23214 | 10 11 12 13 14 9.6 | 10.19 11.14 12.9 13.5 14.1 9.6.24 | core server 8.1 | When the server is configured to use trust authentication with a clientcert requirement or to use cert authentication, a man-in-the-middle attacker can inject arbitrary SQL queries when a connection is first established, despite the use of SSL certificate verification and encryption. This is similar to CVE-2011-0411 (different product).
The PostgreSQL project thanks Jacob Champion for reporting this problem. More details… |
| CVE-2021-20229 | 13 | 13.2 | core server 3.1 | A user having a SELECT privilege on an individual column can craft a special query that returns all columns of the table.
Additionally, a stored view that uses column-level privileges will have incomplete column-usage bitmaps. In installations that depend on column-level permissions for security, it is recommended to execute CREATE OR REPLACE on all user-defined views to force them to be re-parsed.
The PostgreSQL project thanks Sven Klemm for reporting this problem. More details… |
| CVE-2021-3677 | 11 12 13 | 11.13 12.8 13.4 | core server 6.5 | A purpose-crafted query can read arbitrary bytes of server memory. In the default configuration, any authenticated database user can complete this attack at will. The attack does not require the ability to create objects. If server settings include max_worker_processes=0 , the known versions of this attack are infeasible. However, undiscovered variants of the attack may be independent of that setting. More details… |
| CVE-2021-3393 | 11 12 13 | 11.11 12.6 13.2 | core server 3.1 | A user having an UPDATE privilege on a partitioned table but lacking the SELECT privilege on some column may be able to acquire denied-column values from an error message. This is similar to CVE-2014-8161 , but the conditions to exploit are more rare.
The PostgreSQL project thanks Heikki Linnakangas for reporting this problem. More details… |
| CVE-2020-25696 | 10 11 12 13 9.5 9.6 | 10.15 11.10 12.5 13.1 9.5.24 9.6.20 | client 7.5 | The \gset meta-command, which sets psql variables based on query results, does not distinguish variables that control psql behavior. If an interactive psql session uses \gset when querying a compromised server, the attacker can execute arbitrary code as the operating system account running psql . Using \gset with a prefix not found among specially treated variables, e.g. any lowercase string, precludes the attack in an unpatched psql .
The PostgreSQL project thanks Nick Cleaton for reporting this problem. More details… |
| CVE-2020-25695 | 10 11 12 13 9.5 9.6 | 10.15 11.10 12.5 13.1 9.5.24 9.6.20 | core server 8.8 | An attacker having permission to create non-temporary objects in at least one schema can execute arbitrary SQL functions under the identity of a superuser.
While promptly updating PostgreSQL is the best remediation for most users, a user unable to do that can work around the vulnerability by disabling autovacuum and not manually running ANALYZE , CLUSTER , REINDEX , CREATE INDEX , VACUUM FULL , REFRESH MATERIALIZED VIEW , or a restore from output of the pg_dump command. Performance may degrade quickly under this workaround.
VACUUM without the FULL option is safe, and all commands are fine when a trusted user owns the target object.
The PostgreSQL project thanks Etienne Stalmans for reporting this problem. More details… |
| CVE-2020-25694 | 10 11 12 13 9.5 9.6 | 10.15 11.10 12.5 13.1 9.5.24 9.6.20 | client 8.1 | Many PostgreSQL-provided client applications have options that create additional database connections. Some of those applications reuse only the basic connection parameters (e.g. host , user , port ), dropping others. If this drops a security-relevant parameter (e.g. channel_binding , sslmode , requirepeer , gssencmode ), the attacker has an opportunity to complete a MITM attack or observe cleartext transmission.
Affected applications are clusterdb , pg_dump , pg_restore , psql , reindexdb , and vacuumdb . The vulnerability arises only if one invokes an affected client application with a connection string containing a security-relevant parameter.
This also fixes how the \connect command of psql reuses connection parameters, i.e. all non-overridden parameters from a previous connection string now re-used.
The PostgreSQL project thanks Peter Eisentraut for reporting this problem. More details… |
| CVE-2020-14350 | 10 11 12 9.5 9.6 | 10.14 11.9 12.4 9.5.23 9.6.19 | core server 7.1 | When a superuser runs certain CREATE EXTENSION statements, users may be able to execute arbitrary SQL functions under the identity of that superuser. The attacker must have permission to create objects in the new extension's schema or a schema of a prerequisite extension. Not all extensions are vulnerable.
In addition to correcting the extensions provided with PostgreSQL, the PostgreSQL Global Development Group is issuing guidance for third-party extension authors to secure their own work.
The PostgreSQL project thanks Andres Freund for reporting this problem. More details… |
| CVE-2020-14349 | 10 11 12 | 10.14 11.9 12.4 | core server 7.5 | The PostgreSQL search_path setting determines schemas searched for tables, functions, operators, etc. The CVE-2018-1058 fix caused most PostgreSQL-provided client applications to sanitize search_path , but logical replication continued to leave search_path unchanged. Users of a replication publisher or subscriber database can create objects in the public schema and harness them to execute arbitrary SQL functions under the identity running replication, often a superuser. Installations having adopted a documented secure schema usage pattern are not vulnerable.
The PostgreSQL project thanks Noah Misch for reporting this problem. More details… |
| CVE-2020-10733 | 10 11 12 9.5 9.6 | 10.13 11.8 12.3 9.5.22 9.6.18 | packaging 6.7 | The Windows installer for PostgreSQL invokes system-provided executables that do not have fully-qualified paths. Executables in the directory where the installer loads or the current working directory take precedence over the intended executables. An attacker having permission to add files into one of those directories can use this to execute arbitrary code with the installer's administrative rights.
The PostgreSQL project thanks Hou JingYi (@hjy79425575) for reporting this problem. More details… |
| CVE-2020-1720 | 10 11 12 9.6 | 10.12 11.7 12.2 9.6.17 | core server 3.1 | The ALTER ... DEPENDS ON EXTENSION sub-commands do not perform authorization checks, which can allow an unprivileged user to drop any function, procedure, materialized view, index, or trigger under certain conditions. This attack is possible if an administrator has installed an extension and an unprivileged user can CREATE , or an extension owner either executes DROP EXTENSION predictably or can be convinced to execute DROP EXTENSION .
The PostgreSQL project thanks Tom Lane for reporting this problem. More details… |
| CVE-2019-10211 | 10 11 9.4 9.5 9.6 | 10.10 11.5 9.4.24 9.5.19 9.6.15 | packaging 7.8 | When the database server or libpq client library initializes SSL, libeay32.dll attempts to read configuration from a hard-coded directory. Typically, the directory does not exist, but any local user could create it and inject configuration. This configuration can direct OpenSSL to load and execute arbitrary code as the user running a PostgreSQL server or client.
Most PostgreSQL client tools and libraries use libpq , and one can encounter this vulnerability by using any of them. This vulnerability is much like CVE-2019-5443 , but it originated independently. One can work around the vulnerability by setting environment variable OPENSSL_CONF to "NUL:/openssl.cnf" or any other name that cannot exist as a file.
The PostgreSQL project thanks Daniel Gustafsson of the curl security team for reporting this problem. More details… |
| CVE-2019-10210 | 10 11 9.4 9.5 9.6 | 10.10 11.5 9.4.24 9.5.19 9.6.15 | packaging 6.7 | The EnterpriseDB Windows installer writes a password to a temporary file in its installation directory, creates initial databases, and deletes the file. During those seconds while the file exists, a local attacker can read the PostgreSQL superuser password from the file.
The PostgreSQL project thanks Noah Misch for reporting this problem. More details… |
| CVE-2019-10209 | 11 | 11.5 | core server 3.1 | In a database containing hypothetical, user-defined hash equality operators, an attacker could read arbitrary bytes of server memory. For an attack to become possible, a superuser would need to create unusual operators. It is possible for operators not purpose-crafted for attack to have the properties that enable an attack, but we are not aware of specific examples.
The PostgreSQL project thanks Andreas Seltenreich for reporting this problem. More details… |
| CVE-2019-10208 | 10 11 9.4 9.5 9.6 | 10.10 11.5 9.4.24 9.5.19 9.6.15 | core server 7.5 | Given a suitable SECURITY DEFINER function, an attacker can execute arbitrary SQL under the identity of the function owner. An attack requires EXECUTE permission on the function, which must itself contain a function call having inexact argument type match. For example, length('foo'::varchar) and length('foo') are inexact, while length('foo'::text) is exact.
As part of exploiting this vulnerability, the attacker uses CREATE DOMAIN to create a type in a pg_temp schema. The attack pattern and fix are similar to that for CVE-2007-2138 .
Writing SECURITY DEFINER functions continues to require following the considerations noted in the documentation:
https://www.postgresql.org/docs/current/sql-createfunction.html#SQL-CREATEFUNCTION-SECURITY
The PostgreSQL project thanks Tom Lane for reporting this problem. More details… |
| CVE-2019-10164 | 10 11 | 10.9 11.4 | core server 7.5 | An authenticated user could create a stack-based buffer overflow by changing their own password to a purpose-crafted value. In addition to the ability to crash the PostgreSQL server, this could be further exploited to execute arbitrary code as the PostgreSQL operating system account.
Additionally, a rogue server could send a specifically crafted message during the SCRAM authentication process and cause a libpq-enabled client to either crash or execute arbitrary code as the client's operating system account.
This issue is fixed by upgrading and restarting your PostgreSQL server as well as your libpq installations.
The PostgreSQL Project thanks Alexander Lakhin for reporting this problem. More details… |
| CVE-2019-10130 | 10 11 9.5 9.6 | 10.8 11.3 9.5.17 9.6.13 | core server 3.1 | PostgreSQL maintains statistics for tables by sampling data available in columns; this data is consulted during the query planning process. Prior to this release, a user able to execute SQL queries with permissions to read a given column could craft a leaky operator that could read whatever data had been sampled from that column. If this happened to include values from rows that the user is forbidden to see by a row security policy, the user could effectively bypass the policy. This is fixed by only allowing a non-leakproof operator to use this data if there are no relevant row security policies for the table.
The PostgreSQL project thanks Dean Rasheed for reporting this problem. More details… |
| CVE-2019-10129 | 11 | 11.3 | core server 6.5 | Prior to this release, a user running PostgreSQL 11 can read arbitrary bytes of server memory by executing a purpose-crafted INSERT statement to a partitioned table. More details… |
| CVE-2019-10128 | 10 11 9.4 9.5 9.6 | 10.8 11.3 9.4.22 9.5.17 9.6.13 | packaging 7 | Due to both the EnterpriseDB and BigSQL Windows installers not locking down the permissions of the PostgreSQL binary installation directory and the data directory, an unprivileged Windows user account and an unprivileged PostgreSQL account could cause the PostgreSQL service account to execute arbitrary code.
This vulnerability is present in all supported versions of PostgreSQL for these installers, and possibly exists in older versions. Both sets of installers have fixed the permissions for these directories for both new and existing installations. If you have installed PostgreSQL on Windows using other methods, we advise that you check that your PostgreSQL binary directories are writable only to trusted users and that your data directories are only accessible to trusted users.
The PostgreSQL project thanks Conner Jones for reporting this problem. More details… |
| CVE-2019-10127 | 10 11 9.4 9.5 9.6 | 10.8 11.3 9.4.22 9.5.17 9.6.13 | packaging 7 | Due to both the EnterpriseDB and BigSQL Windows installers not locking down the permissions of the PostgreSQL binary installation directory and the data directory, an unprivileged Windows user account and an unprivileged PostgreSQL account could cause the PostgreSQL service account to execute arbitrary code.
This vulnerability is present in all supported versions of PostgreSQL for these installers, and possibly exists in older versions. Both sets of installers have fixed the permissions for these directories for both new and existing installations. If you have installed PostgreSQL on Windows using other methods, we advise that you check that your PostgreSQL binary directories are writable only to trusted users and that your data directories are only accessible to trusted users.
The PostgreSQL project thanks Conner Jones for reporting this problem. More details… |
| CVE-2019-3466 | 10 11 12 9.4 9.5 9.6 | 10.11 11.6 12.1 9.4.25 9.5.20 9.6.16 | packaging 8.4 | A PostgreSQL superuser could escalate to root using a deficiency in the pg_ctlcluster command. pg_ctlcluster is a utility provided by the "postgresql-common" package that is installed with PostgreSQL on Debian and Ubuntu platforms. More details… |
| CVE-2018-16850 | 10 11 | 10.6 11.1 | core server 8.8 | More details… |
| CVE-2018-10925 | 10 9.5 9.6 | 10.5 9.5.14 9.6.10 | core server 7.1 | More details… |
| CVE-2018-10915 | 10 9.3 9.4 9.5 9.6 | 10.5 9.3.24 9.4.19 9.5.14 9.6.10 | client 8.5 | More details… |
| CVE-2018-1115 | 10 9.6 | 10.4 9.6.9 | contrib module 3.1 | More details… |
| CVE-2018-1058 | 10 9.3 9.4 9.5 9.6 | 10.3 9.3.22 9.4.17 9.5.12 9.6.8 | client 8.8 | More details… |
| CVE-2018-1053 | 10 9.3 9.4 9.5 9.6 | 10.2 9.3.21 9.4.16 9.5.11 9.6.7 | client 6.7 | More details… |
| CVE-2018-1052 | 10 | 10.2 | core server 6.5 | More details… |
| CVE-2017-15099 | 10 9.5 9.6 | 10.1 9.5.10 9.6.6 | core server 3.1 | More details… |
| CVE-2017-15098 | 10 9.3 9.4 9.5 9.6 | 10.1 9.3.20 9.4.15 9.5.10 9.6.6 | core server 4.3 | More details… |
| CVE-2017-12172 | 10 9.2 9.3 9.4 9.5 9.6 | 10.1 9.2.24 9.3.20 9.4.15 9.5.10 9.6.6 | contrib module 8.4 | More details… |
| CVE-2017-7548 | 9.4 9.5 9.6 | 9.4.13 9.5.8 9.6.4 | core server 3.1 | More details… |
| CVE-2017-7547 | 9.2 9.3 9.4 9.5 9.6 | 9.2.22 9.3.18 9.4.13 9.5.8 9.6.4 | core server 8.5 | More details… |
| CVE-2017-7546 | 9.2 9.3 9.4 9.5 9.6 | 9.2.22 9.3.18 9.4.13 9.5.8 9.6.4 | core server 8.1 | More details… |
| CVE-2017-7486 | 9.2 9.3 9.4 9.5 9.6 | 9.2.21 9.3.17 9.4.12 9.5.7 9.6.3 | core server 8.5 | More details… |
| CVE-2017-7485 | 9.3 9.4 9.5 9.6 | 9.3.17 9.4.12 9.5.7 9.6.3 | client 8.1 | More details… |
| CVE-2017-7484 | 9.2 9.3 9.4 9.5 9.6 | 9.2.21 9.3.17 9.4.12 9.5.7 9.6.3 | core server 4.3 | More details… |
| CVE-2016-7048 | 9.1 9.2 9.3 9.4 9.5 | 9.1.24 9.2.19 9.3.15 9.4.10 9.5.5 | packaging 7.5 | More details… |
| CVE-2016-5424 | 9.1 9.2 9.3 9.4 9.5 | 9.1.23 9.2.18 9.3.14 9.4.9 9.5.4 | client 8.5 | More details… |
| CVE-2016-5423 | 9.1 9.2 9.3 9.4 9.5 | 9.1.23 9.2.18 9.3.14 9.4.9 9.5.4 | core server 4.3 | More details… |
| CVE-2016-3065 | 9.5 | 9.5.2 | contrib module 3.1 | More details… |
| CVE-2016-2193 | 9.5 | 9.5.2 | core server 4.2 | More details… |
| CVE-2016-0773 | 9.1 9.2 9.3 9.4 9.5 | 9.1.20 9.2.15 9.3.11 9.4.6 9.5.1 | core server 6.5 | More details… |
| CVE-2015-5289 | 9.3 9.4 | 9.3.10 9.4.5 | core server 5.9 | More details… |
| CVE-2015-5288 | 9.0 9.1 9.2 9.3 9.4 | 9.0.23 9.1.19 9.2.14 9.3.10 9.4.5 | contrib module 3.1 | More details… |
| CVE-2015-3167 | 9.0 9.1 9.2 9.3 9.4 | 9.0.20 9.1.16 9.2.11 9.3.7 9.4.2 | contrib module 3.7 | More details… |
| CVE-2015-3166 | 9.0 9.1 9.2 9.3 9.4 | 9.0.20 9.1.16 9.2.11 9.3.7 9.4.2 | core server 5.6 | More details… |
| CVE-2015-3165 | 9.0 9.1 9.2 9.3 9.4 | 9.0.20 9.1.16 9.2.11 9.3.7 9.4.2 | core server 7.5 | More details… |
| CVE-2015-0244 | 9.0 9.1 9.2 9.3 9.4 | 9.0.19 9.1.15 9.2.10 9.3.6 9.4.1 | core server 8.1 | More details… |
| CVE-2015-0243 | 9.0 9.1 9.2 9.3 9.4 | 9.0.19 9.1.15 9.2.10 9.3.6 9.4.1 | contrib module 6.5 | More details… |
| CVE-2015-0242 | 9.0 9.1 9.2 9.3 9.4 | 9.0.19 9.1.15 9.2.10 9.3.6 9.4.1 | core server 4.2 | More details… |
| CVE-2015-0241 | 9.0 9.1 9.2 9.3 9.4 | 9.0.19 9.1.15 9.2.10 9.3.6 9.4.1 | core server 4.2 | More details… |
| CVE-2014-8161 | 9.0 9.1 9.2 9.3 9.4 | 9.0.19 9.1.15 9.2.10 9.3.6 9.4.1 | core server 3.1 | More details… |
| CVE-2014-0067 | 9.0 9.1 9.2 9.3 9.4 | 9.0.19 9.1.15 9.2.10 9.3.6 9.4.1 | other 7 | More details… |
| CVE-2014-0066 | 8.4 9.0 9.1 9.2 9.3 | 8.4.20 9.0.16 9.1.12 9.2.7 9.3.3 | contrib module 0 | More details… |
| CVE-2014-0065 | 8.4 9.0 9.1 9.2 9.3 | 8.4.20 9.0.16 9.1.12 9.2.7 9.3.3 | core server 0 | More details… |
| CVE-2014-0064 | 8.4 9.0 9.1 9.2 9.3 | 8.4.20 9.0.16 9.1.12 9.2.7 9.3.3 | core server 6.5 | More details… |
| CVE-2014-0063 | 8.4 9.0 9.1 9.2 9.3 | 8.4.20 9.0.16 9.1.12 9.2.7 9.3.3 | core server 4.3 | More details… |
| CVE-2014-0062 | 8.4 9.0 9.1 9.2 9.3 | 8.4.20 9.0.16 9.1.12 9.2.7 9.3.3 | core server 8.8 | More details… |
| CVE-2014-0061 | 8.4 9.0 9.1 9.2 9.3 | 8.4.20 9.0.16 9.1.12 9.2.7 9.3.3 | core server 7.5 | More details… |
| CVE-2014-0060 | 8.4 9.0 9.1 9.2 9.3 | 8.4.20 9.0.16 9.1.12 9.2.7 9.3.3 | core server 3.1 | More details… |
| CVE-2013-1901 | 9.1 9.2 | 9.1.9 9.2.4 | More details… | |
| CVE-2013-1900 | 8.4 9.0 9.1 9.2 | 8.4.17 9.0.13 9.1.9 9.2.4 | More details… | |
| CVE-2013-1899 | 9.0 9.1 9.2 | 9.0.13 9.1.9 9.2.4 | More details… | |
| CVE-2013-0255 | 8.3 8.4 9.0 9.1 9.2 | 8.3.23 8.4.16 9.0.12 9.1.8 9.2.3 | More details… | |
| CVE-2012-3489 | 8.3 8.4 9.0 9.1 | 8.3.20 8.4.13 9.0.9 9.1.5 | More details… | |
| CVE-2012-3488 | 8.3 8.4 9.0 9.1 | 8.3.20 8.4.13 9.0.9 9.1.5 | More details… | |
| CVE-2012-2655 | 8.3 8.4 9.0 9.1 | 8.3.19 8.4.12 9.0.8 9.1.4 | More details… | |
| CVE-2012-2143 | 8.3 8.4 9.0 9.1 | 8.3.19 8.4.12 9.0.8 9.1.4 | More details… | |
| CVE-2012-0868 | 8.3 8.4 9.0 9.1 | 8.3.18 8.4.11 9.0.7 9.1.3 | More details… | |
| CVE-2012-0867 | 8.4 9.0 9.1 | 8.4.11 9.0.7 9.1.3 | More details… | |
| CVE-2012-0866 | 8.3 8.4 9.0 9.1 | 8.3.18 8.4.11 9.0.7 9.1.3 | More details… | |
| CVE-2010-4015 | 8.2 8.3 8.4 9.0 | 8.2.20 8.3.14 8.4.7 9.0.3 | More details… | |
| CVE-2010-3433 | 7.4 8.0 8.1 8.2 8.3 8.4 9.0 | 7.4.30 8.0.26 8.1.22 8.2.18 8.3.12 8.4.5 9.0.1 | More details… | |
| CVE-2010-1975 | 7.4 8.0 8.1 8.2 8.3 8.4 | 7.4.29 8.0.25 8.1.21 8.2.17 8.3.11 8.4.4 | More details… | |
| CVE-2010-1170 | 7.4 8.0 8.1 8.2 8.3 8.4 | 7.4.29 8.0.25 8.1.21 8.2.17 8.3.11 8.4.4 | More details… | |
| CVE-2010-1169 | 7.4 8.0 8.1 8.2 8.3 8.4 | 7.4.29 8.0.25 8.1.21 8.2.17 8.3.11 8.4.4 | More details… | |
| CVE-2009-4136 | 7.4 8.0 8.1 8.2 8.3 8.4 | 7.4.27 8.0.23 8.1.19 8.2.15 8.3.9 8.4.2 | More details… | |
| CVE-2009-4034 | 7.4 8.0 8.1 8.2 8.3 8.4 | 7.4.27 8.0.23 8.1.19 8.2.15 8.3.9 8.4.2 | More details… | |
| CVE-2009-3231 | 8.2 8.3 | 8.2.14 8.3.8 | More details… | |
| CVE-2009-3230 | 7.4 8.0 8.1 8.2 8.3 8.4 | 7.4.26 8.0.22 8.1.18 8.2.14 8.3.8 8.4.1 | More details… | |
| CVE-2009-3229 | 8.2 8.3 8.4 | 8.2.14 8.3.8 8.4.1 | More details… | |
| CVE-2009-0922 | 7.4 8.0 8.1 8.2 8.3 | 7.4.25 8.0.21 8.1.17 8.2.13 8.3.7 | More details… | |
| CVE-2007-6601 | 7.3 7.4 8.0 8.1 8.2 | 7.3.21 7.4.19 8.0.15 8.1.11 8.2.6 | More details… | |
| CVE-2007-6600 | 7.3 7.4 8.0 8.1 8.2 | 7.3.21 7.4.19 8.0.15 8.1.11 8.2.6 | More details… | |
| CVE-2007-4769 | 7.4 8.0 8.1 8.2 | 7.4.19 8.0.15 8.1.11 8.2.6 | More details… | |
| CVE-2007-2138 | 7.3 7.4 8.0 8.1 8.2 | 7.3.19 7.4.17 8.0.13 8.1.9 8.2.4 | More details… | |
| CVE-2007-0556 | 8.0 8.1 8.2 | 8.0.11 8.1.7 8.2.2 | More details… | |
| CVE-2007-0555 | 7.3 7.4 8.0 8.1 8.2 | 7.3.13 7.4.16 8.0.11 8.1.7 8.2.2 | More details… | |
| CVE-2006-5542 | 8.1 | 8.1.5 | More details… | |
| CVE-2006-5541 | 7.4 8.0 8.1 | 7.4.14 8.0.9 8.1.5 | More details… | |
| CVE-2006-5540 | 8.1 | 8.1.5 | More details… | |
| CVE-2006-2314 | 7.3 7.4 8.0 8.1 | 7.3.15 7.4.13 8.0.8 8.1.4 | More details… | |
| CVE-2006-2313 | 7.3 7.4 8.0 8.1 | 7.3.15 7.4.13 8.0.8 8.1.4 | More details… | |
| CVE-2006-0678 | 7.3 7.4 8.0 | 7.3.14 7.4.12 8.0.7 | More details… | |
| CVE-2006-0553 | 8.1 | 8.1.3 | More details… | |
| CVE-2006-0105 | 8.0 8.1 | 8.0.6 8.1.2 | More details… | |
| CVE-2005-1410 | 7.4 8.0 | 7.4.8 8.0.3 | More details… | |
| CVE-2005-1409 | 7.3 7.4 8.0 | 7.3.10 7.4.8 8.0.3 | More details… | |
| CVE-2005-0247 | 7.4 8.0 | 7.4.8 8.0.2 | More details… | |
| CVE-2005-0246 | 7.3 7.4 8.0 | 7.3.9 7.4.7 8.0.1 | More details… | |
| CVE-2005-0245 | 7.3 7.4 8.0 | 7.3.10 7.4.7 8.0.1 | More details… | |
| CVE-2005-0244 | 7.3 7.4 8.0 | 7.3.9 7.4.7 8.0.1 | More details… | |
| CVE-2005-0227 | 7.3 7.4 8.0 | 7.3.9 7.4.7 8.0.1 | More details… | |
| CVE-2004-0977 | 7.3 7.4 | 7.3.8 7.4.6 | More details… |