PostgreSQL 11.3, 10.8, 9.6.13, 9.5.17, and 9.4.22 Released!
The PostgreSQL Global Development Group has released an update to all supported versions of our database system, including 11.3, 10.8, 9.6.13, 9.5.17, and 9.4.22. This release fixes two security issues in the PostgreSQL server, a security issue found in two of the PostgreSQL Windows installers, and over 60 bugs reported over the last three months.
Security Issues
Four security vulnerabilities have been closed by this release:
CVE-2019-10127: BigSQL Windows installer does not clear permissive ACL entries
CVE-2019-10128: EnterpriseDB Windows installer does not clear permissive ACL entries
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.
CVE-2019-10129: Memory disclosure in partition routing
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.
CVE-2019-10130: Selectivity estimators bypass row security policies
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.
This issue is present in PostgreSQL 9.5, 9.6, 10, and 11. The PostgreSQL project thanks Dean Rasheed for reporting this problem.
Bug Fixes and Improvements
This update also fixes over 60 bugs that were reported in the last several months. Some of these issues affect only version 11, but many affect all supported versions.
Some of these fixes include:
Several catalog corruption fixes, including one related to running ALTER TABLE on a partitioned table
Several fixes for partitioning
Avoid server crash when an error occurs while trying to persist a cursor query across a transaction commit
Avoid O(N^2) performance issue when rolling back a transaction that created many tables
Fix possible “could not access status of transaction” failures in txid_status()
Fix updatable views to handle explicit DEFAULT items in INSERT .. VALUES statements where there are multiple VALUES rows
Fix CREATE VIEW to allow zero-column views
Add missing support for the CREATE TABLE IF NOT EXISTS .. AS EXECUTE .. statement
Ensure that sub-SELECTs appearing in row-level-security policy expressions are executed with the correct user's permissions
Accept XML documents as valid values of type xml when xmloption is set to content, as required by SQL:2006 and later
Fix incompatibility of GIN-index WAL records that were introduced in 11.2, 10.7, 9.6.12, 9.5.16, and 9.4.21 that affected replica servers running these versions reading in changes to GIN indexes from primary servers of older versions
Several memory leak fixes as well as fixes to management of dynamic shared memory
Relax panics on fsync and sync_file_range failures for certain cases where a failure indicated "operation not supported"
Several fixes to the query planner, several of which should lead to planning improvements
Fix race condition in which a hot-standby postmaster could fail to shut down after receiving a smart-shutdown request
Several fixes for SCRAM authentication
Fix handling of lc_time settings that imply an encoding different from the database's encoding
Create the current_logfiles file with the same permissions as other files in the server's data directory
Several ecpg fixes
Make pg_verify_checksums verify that the data directory it's pointed at is of the right PostgreSQL version
Several fixes for contrib/postgres_fdw, including one for remote partitions where an UPDATE could lead to incorrect results or a crash
Several Windows fixes
This update also contains tzdata release 2019a for DST law changes in Palestine and Metlakatla, plus historical corrections for Israel. Etc/UCT is now a backward-compatibility link to Etc/UTC, instead of being a separate zone that generates the abbreviation UCT, which nowadays is typically a typo. PostgreSQL will still accept UCT as an input zone abbreviation, but it won't output it.
The PostgreSQL Global Development Group has released an update to all supported versions of our database system, including 11.1, 10.6, 9.6.11, 9.5.15, 9.4.20, and 9.3.25. This release fixes one security issue as well as bugs reported over the last three months.
All users using the affected versions of PostgreSQL should update as soon as possible. Please see the notes on "Updating" below for any post-update steps that may be required if you are using pg_stat_statements in your installation.
This update is also the final release for PostgreSQL 9.3, which is now end-of-life and will no longer receive any bug or security fixes. If your environment still uses PostgreSQL 9.3, please make plans to update to a community supported version as soon as possible. Please see our versioning policy for more information.
Security Issues
One security vulnerability has been closed by this release:
CVE-2018-16850: SQL injection in pg_upgrade and pg_dump, via CREATE TRIGGER ... REFERENCING.
Versions Affected: 10, 11
Using a purpose-crafted trigger definition, an attacker can run arbitrary SQL statements with superuser privileges when a superuser runs pg_upgrade on the database or during a pg_dump dump/restore cycle. This attack requires a CREATE privilege on some non-temporary schema or a TRIGGER privilege on a table. This is exploitable in the default PostgreSQL configuration, where all users have CREATE privilege on public schema.
Bug Fixes and Improvements
This update also fixes numerous bugs that were reported in the last several months. Some of these issues affect only version 11, but many affect all supported versions.
These releases include fixes that:
Ensure that automatically created child indexes are created in the same tablespace as the parent partitioned index
Fix several crashes with triggers
Fix problems with applying ON COMMIT DELETE ROWS to a partitioned temporary table
Fix how NULL values are handled when using LEFT JOIN with a parallelized hash join
Several fixes around using named or defaulted arguments in CALL statements
Fix for strict aggregate functions (i.e. aggregates that cannot accept NULL inputs) with ORDER BY columns that enforces the strictness check
Fix with CASE statements where an expression was cast to an array type
Disable an optimization for updating expression indexes in order to prevent a crash
Fix a memory leak that occurred on a specific case of using a SP-GiST index
Fix for pg_verify_checksums incorrectly reporting on files that are not expected to have checksums
Prevent the PostgreSQL server from starting when wal_level is set to a value that cannot support an existing replication slot
Ensure that the server will process already-received NOTIFY and SIGTERM interrupts before waiting for client input
Allow PL/Ruby to work with newer versions of PostgreSQL
Fix for character-class checks on Windows for Unicode characters above U+FFFF, which affected full-text search as well as contrib/ltree and contrib/pg_trgm
Fix a case where psql would not report the receipt of a message from a NOTIFY call until after the next command
Fix build problems on macOS 10.14 (Mojave)
Several build fixes for the Windows platform
This updates also contains tzdata release 2018g for DST law changes in Chile, Fiji, Morocco, and Russia (Volgograd), plus historical corrections for China, Hawaii, Japan, Macau, and North Korea.
This release closes security hole CVE-2016-2193, where a query plan might get reused for more than one ROLE in the same session. This could cause the wrong set of Row Level Security (RLS) policies to be used for the query.
The update also fixes CVE-2016-3065, a server crash bug triggered by using pageinspect with BRIN index pages. Since an attacker might be able to expose a few bytes of server memory, this crash is being treated as a security issue.
This release adds many new features which enhance PostgreSQL's flexibility, scalability and performance for many different types of database users, including improvements to JSON support, replication and index performance.