The PostgreSQL Global Development Group (PGDG) takes security seriously, allowing our users to place their trust in the web sites and applications built around PostgreSQL. Our approach covers fail-safe configuration options, a secure and robust database server as well as good integration with other security infrastructure software.
PostgreSQL security updates are primarily made available as minor version upgrades. You are always advised to use the latest minor version available, as it will likely also contain other non-security related fixes. All known security issues are always fixed in the next major release, when it comes out.
PGDG believes that accuracy, completeness and availability of security information is essential for our users. We choose to pool all information on this one page, allowing easy searching for vulnerabilities by a range of criteria.
The following table lists all known security issues. Please note that versions prior to 8.3 are no longer supported and vulnerabilities for these versions may not be included in this list. New vulnerabilities in these versions are no longer patched.
Vulnerabilities list which major releases they were present in, and which version they are fixed in for each. If the vulnerability was exploitable without a valid login, this is also stated. They also list a vulnerability class, but we urge all users to read the description to determine if the bug affects specific installations or not.
|CVE-2013-1899||9.2, 9.1, 9.0||9.2.4, 9.1.9, 9.0.13||core server||A||A connection request containing a database name that begins with "-" may be crafted to damage or destroy files within a server's data directory|
|CVE-2013-1900||9.2, 9.1, 9.0, 8.4||9.2.4, 9.1.9, 9.0.13, 8.4.17||contrib module||C||Random numbers generated by contrib/pgcrypto functions may be easy for another database user to guess|
|CVE-2013-1901||9.2, 9.1||9.2.4, 9.1.9||core server||D||An unprivileged user can run commands that could interfere with in-progress backups.|
|CVE-2013-1902||9.2, 9.1, 9.0, 8.4, 8.3||9.2.4-1, 9.1.9-1, 9.0.13-1, 8.4.17-1, 8.3.23-3||packaging||C||EnterpriseDB's installers for Linux and Mac OS X created a directory and file in /tmp with predictable names.|
|CVE-2013-1903||9.2, 9.1, 9.0, 8.4, 8.3||9.2.4-1, 9.1.9-1, 9.0.13-1, 8.4.17-1, 8.3.23-3||packaging||C||EnterpriseDB's installers for Linux and Mac OS X passed the database superuser password to a script in an insecure fashion.|
|CVE-2013-0255||9.2, 9.1, 9.0, 8.4, 8.3||9.2.3, 9.1.8, 9.0.12, 8.4.16, 8.3.23||core server||D||executing enum_recv() with wrong parameters crashes server|
|CVE-2012-3489||9.1, 9.0, 8.4, 8.3||9.1.5, 9.0.9, 8.4.13, 8.3.20||core server||C||xml_parse() DTD validation can be used to read arbitrary files|
|CVE-2012-3488||9.1, 9.0, 8.4, 8.3||9.1.5, 9.0.9, 8.4.13, 8.3.20||contrib module||C||contrib/xml2's xslt_process() can be used to read and write arbitrary files|
|CVE-2012-2143||9.1, 9.0, 8.4, 8.3||9.1.4, 9.0.8, 8.4.12, 8.3.19||contrib module||C||Passwords containing the byte 0x80 passed to the crypt() function in pgcrypto are incorrectly truncated if DES encryption was used|
|CVE-2012-2655||9.1, 9.0, 8.4, 8.3||9.1.4, 9.0.8, 8.4.12, 8.3.19||core server||D||SECURITY DEFINER and SET attributes on procedural call handlers are not ignored and can be used to crash the server|
|CVE-2012-0866||9.1, 9.0, 8.4, 8.3||9.1.3, 9.0.7, 8.4.11, 8.3.18||core server||C||Permissions on a function called by a trigger are not properly checked.|
|CVE-2012-0867||9.1, 9.0, 8.4||9.1.3, 9.0.7, 8.4.11||core server, limited deployments||A||SSL certificate name checks are truncated to 32 characters, allowing connection spoofing under some circumstances when using third party certificate authorities.|
|CVE-2012-0868||9.1, 9.0, 8.4, 8.3||9.1.3, 9.0.7, 8.4.11, 8.3.18||core server||C||Line breaks in object names can be exploited to execute arbitrary SQL when reloading a pg_dump file.|
|CVE-2010-4015||9.0, 8.4, 8.3, 8.2||9.0.3, 8.4.7, 8.3.14, 8.2.20||contrib module||C||An authenticated database user can cause a buffer overrun by calling functions from the intarray optional module with certain parameters.|
|CVE-2010-3433||9.0, 8.4, 8.3, 8.2, 8.1, 8.0, 7.4||9.0.1, 8.4.5, 8.3.12, 8.2.18, 8.1.22, 8.0.26, 7.4.30||core server||C||An authenticated database user can manipulate modules and tied variables in some external procedural languages to execute code with enhanced privileges.Details|
|CVE-2010-1975||8.4, 8.3, 8.2, 8.1, 8.0, 7.4||8.4.4, 8.3.11, 8.2.17, 8.1.21, 8.0.25, 7.4.29||core server||C||An unprivileged database user can remove superuser-only settings that were applied to his account with ALTER USER by a superuser, thus bypassing settings that should be enforced.|
|CVE-2010-1169||8.4, 8.3, 8.2, 8.1, 8.0, 7.4||8.4.4, 8.3.11, 8.2.17, 8.1.21, 8.0.25, 7.4.29||core server, limited deployments||C||A vulnerability in Safe.pm and PL/Perl can allow an authenticated user to run arbitrary Perl code on the database server if PL/Perl is installed and enabled.|
|CVE-2010-1170||8.4, 8.3, 8.2, 8.1, 8.0, 7.4||8.4.4, 8.3.11, 8.2.17, 8.1.21, 8.0.25, 7.4.29||core server, limited deployments||C||Insecure permissions on the pltcl_modules table could allow an authenticated user to run arbitrary Tcl code on the database server if PL/Tcl is installed and enabled.|
|CVE-2009-4034||8.4, 8.3, 8.2, 8.1, 8.0, 7.4||8.4.2, 8.3.9, 8.2.15, 8.1.19, 8.0.23, 7.4.27||client, core server, limited deployments||A||NULL Bytes in SSL Certificates can be used to falsify client or server authentication. This only affects users who have SSL enabled, perform certificate name validation or client certificate authentication, and where the Certificate Authority (CA) has been tricked into issuing invalid certificates. The use of a CA that can be trusted to always issue valid certificates is recommended to ensure you are not vulnerable to this issue.|
|CVE-2009-4136||8.4, 8.3, 8.2, 8.1, 8.0, 7.4||8.4.2, 8.3.9, 8.2.15, 8.1.19, 8.0.23, 7.4.27||core server||C||Privilege escalation via changing session state in an index function. This closes a corner case related to vulnerabilities CVE-2009-3230 and CVE-2007-6600 (below).|
|CVE-2009-3229||8.4, 8.3, 8.2||8.4.1, 8.3.8, 8.2.14||core server||D||Authenticated non-superusers can shut down the backend server by re-LOAD-ing libraries in $libdir/plugins, if any libraries are present there.|
|CVE-2009-3230||8.4, 8.3, 8.2, 8.1, 8.0, 7.4||8.4.1, 8.3.8, 8.2.14, 8.1.18, 8.0.22, 7.4.26||core server||C||The fix for issue CVE-2007-6600 (below) failed to include protection against misuse of RESET SESSION AUTHORIZATION.|
|CVE-2009-3231||8.3, 8.2||8.3.8, 8.2.14||core server||A||If PostgreSQL is configured with LDAP authentication, and your LDAP configuration allows anonymous binds, it is possible for a user to authenticate themselves with an empty password.|
|CVE-2009-0922||8.3, 8.2, 8.1, 8.0, 7.4||8.3.7, 8.2.13, 8.1.17, 8.0.21, 7.4.25||core server||D||It is possible to cause a momentary denial of service when there is a failure to convert a localized error message to the client-specified encoding. A valid login is required to exploit this vulnerability.|
|8.2, 8.1, 8.0, 7.4, 7.3||8.2.6, 8.1.11, 8.0.15, 7.4.19, 7.3.21||core server||C||Two vulnerabilities in how ANALYZE executes user defined functions that are part of expression indexes allows users to gain superuser privileges. A valid login that has permissions to create functions and tables is required to exploit this vulnearbility.|
|8.2, 8.1, 8.0, 7.4||8.2.6, 8.1.11, 8.0.15, 7.4.19||core server||B||Three vulnearbilities in the regular expression handling libraries can be exploited to cause a backend crash, infinite loops or memory exhaustion. This vulnearbility can be exploited through frontend applications that allow unfiltered regular expressions to be passed in queries.|
|8.2, 8.1, 8.0, 7.4, 7.3||8.2.6, 8.1.11, 8.0.15, 7.4.19, 7.3.21||contrib module||C||DBLink functions combined with local trust or ident access control could be used by a malicious user togain superuser privileges. A valid login is required to exploit this vulnerability.|
|8.2, 8.1, 8.0, 7.4, 7.3||8.2.4, 8.1.9, 8.0.13, 7.4.17, 7.3.19||core server||C||A vulnerability involving insecure search_path settings allows unprivileged users to gain the SQL privileges of the owner of any SECURITY DEFINER function they are allowed to call. Securing such a function requires both a software update and changes to the function definition.|
|CVE-2007-0556||8.2, 8.1, 8.0||8.2.2, 8.1.7, 8.0.11||core server||C||A vulnerability involving changing the data type of a table column can easily be exploited to cause a backend crash, and in principle might be used to read database content that the user should not be able to access.|
|CVE-2007-0555||8.2, 8.1, 8.0, 7.4, 7.3||8.2.2, 8.1.7, 8.0.11, 7.4.16, 7.3.13||core server||C||A vulnerability allows suppressing the normal checks that a SQL function returns the data type it's declared to do. These errors can easily be exploited to cause a backend crash, and in principle might be used to read database content that the user should not be able to access.|
|8.1||8.1.5||core server||D||A bug in the logging of V3 protocol messages can cause a denial of service. A valid login is required to exploit this vulnerability.|
|8.1, 8.0, 7.4||8.1.5, 8.0.9, 7.4.14||core server||D||A bug in the coercion of unknown literals to ANYARRAY can cause a denial of service. A valid login is required to exploit this vulnerability.|
|8.1||8.1.5||core server||D||A bug in the handling of aggregates in UPDATE can cause a denial of service. A valid login is required to exploit this vulnerability.|
|8.1, 8.0, 7.4, 7.3||8.1.4, 8.0.8, 7.4.13, 7.3.15||core server||A||The widely-used practice of escaping ASCII single quote "'" by turning it into "\'" is unsafe when operating in multibyte encodings that allow 0x5c (ASCII code for backslash) as the trailing byte of a multibyte character.|
|8.1, 8.0, 7.4, 7.3||8.1.4, 8.0.8, 7.4.13, 7.3.15||core server||A||An attacker able to submit crafted strings to an application that will embed those strings in SQL commands can use invalidly-encoded multibyte characters to bypass standard string-escaping methods, resulting in possible SQL injection.|
|8.1||8.1.3||core server||C||A bug in the handling of SET ROLE allows escalation of privileges to any other database user, including superuser. A valid login is required to exploit this vulnerability.|
|8.0, 7.4, 7.3||8.0.7, 7.4.12, 7.3.14||core server||D||A bug in the handling of SET SESSION AUTHORIZATION can cause a backend crash in Assert enabled builds. This will cause the postmaster to restart all backend, resulting in a denial of service. A valid login is required to exploit this vulnerability.|
|8.1, 8.0||8.1.2, 8.0.6||core server, win32 only||B||On Windows only, the postmaster will exit if too many connection requests arrive simultaneously. This does not affect existing database connections, but will prevent new connections from being established until the postmaster is manually restarted.|
|Announcement||8.1, 8.0, 7.4, 7.3||8.1.2, 8.0.6, 7.4.11, 7.3.13||contrib module||There is a signedness bug in Openwall gen_salt code that pgcrypto uses. This makes the salt space for md5 and xdes algorithms a lot smaller than it should be. This only affects the gen_salt() function with md5 or xdes.|
|Release notes||8.0, 7.4||8.0.3, 7.4.8||core server||D||Calling COALESCE() with two NULL parameters would cause the current backend to crash, causing a denial of service. A valid login is required to exploit this vulnerability.|
|8.0, 7.4||8.0.3, 7.4.8||contrib module||D||The tsearch2 contrib module declares several functions as internal even though they don't take an internal argument. This allows attackers to cause a denial of service and may possibly have other impacts. A valid login is required to exploit this vulnerability.
Note! See the announcement for special upgrade instructions.
|8.0, 7.4, 7.3||8.0.3, 7.4.8, 7.3.10||core server||D||Public EXECUTE access is given to certain character conversion functions that are not designed to be safe against malicious arguments. This can cause at least a denial of service. A valid login is required to exploit this vulnerability.
Note! See the announcement for special upgrade instructions.
|CVE-2005-0247||8.0, 7.4||8.0.2, 7.4.8||core server||C||Multiple buffer overflows in the PL/PGSQL parser may allow attackers to execute arbitrary code. A valid login is required to exploit this vulnerability.|
|CVE-2005-0246||8.0, 7.4, 7.3||8.0.1, 7.4.7, 7.3.9||contrib module||D||The intagg contrib module allows attackers to cause a denial of service. A valid login is required to exploit this vulnerability.|
|CVE-2005-0245||8.0, 7.4, 7.3||8.0.1, 7.4.7, 7.3.10||core server||C||Multiple buffer overflows in the PL/PGSQL parser may allow attackers to execute arbitrary code. A valid login is required to exploit this vulnerability.|
|CVE-2005-0244||8.0, 7.4, 7.3||8.0.1, 7.4.7, 7.3.9||core server||C||EXECUTE permissions are not properly checked when creating aggregates. A valid login is required to exploit this vulnerability.|
|CVE-2005-0227||8.0, 7.4, 7.3||8.0.1, 7.4.7, 7.3.9||core server||C||Any database user is permitted to load arbitrary shared libraries using the LOAD command. A valid login is required to exploit this vulnerability.|
|CVE-2004-0977||7.4, 7.3||7.4.6, 7.3.8||client contrib module||Contrib script make_oidjoins_check uses unsafe temporary files. This script is not a user-facing script.|
|Release notes||7.4||7.4.3||core server||C||A buffer overrun vulnerability exists in the enlargeStringInfo function and can be triggered by injecting bogus data in the datastream of an existing connection. A valid login is required to exploit this vulnerability.|
The following vulnerability class references are used in the above table:
|A||A vulnerability that is exploitable for privilege escalation without requiring a prior login.|
|B||A vulnerability that is exploitable for denial-of-service without requiring a prior login.|
|C||A vulnerabilty that is exploitable for privilege escalation, but requiring a valid prior login.|
|D||A vulnerability that is exploitable for denial-of-service, but requiring a valid prior login.|
The following component references are used in the above table:
|core server||This vulnerability exists in the core server product.|
|client||This vulnerability exists in a client library or client application only.|
|contrib module||This vulnerability exists in a contrib modules. Contrib modules are not installed by default when PostgreSQL is installed from source. They may be installed by binary packages.|
|client contrib module||This vulnerability exists in a contrib module used on the client only.|
|packaging||This vulnerability exists in PostgreSQL binary packaging, e.g. an installer or RPM.|