* New upstream security/bug fix release: (LP: #655293)
- Use a separate interpreter for each calling SQL userid in PL/Perl
and PL/Tcl.
This change prevents security problems that can be caused by
subverting Perl or Tcl code that will be executed later in the same
session under another SQL user identity (for example, within a
SECURITY DEFINER function). Most scripting languages offer numerous
ways that that might be done, such as redefining standard functions
or operators called by the target function. Without this change,
any SQL user with Perl or Tcl language usage rights can do
essentially anything with the SQL privileges of the target
function's owner.
The cost of this change is that intentional communication among
Perl and Tcl functions becomes more difficult. To provide an escape
hatch, PL/PerlU and PL/TclU functions continue to use only one
interpreter per session. This is not considered a security issue
since all such functions execute at the trust level of a database
superuser already.
It is likely that third-party procedural languages that claim to
offer trusted execution have similar security issues. We advise
contacting the authors of any PL you are depending on for
security-critical purposes.
Our thanks to Tim Bunce for pointing out this issue
(CVE-2010-3433).
- Prevent possible crashes in pg_get_expr() by disallowing it from
being called with an argument that is not one of the system catalog
columns it's intended to be used with.
- Fix incorrect usage of non-strict OR joinclauses in Append
indexscans.
This is a back-patch of an 8.4 fix that was missed in the 8.3
branch. This corrects an error introduced in 8.3.8 that could cause
incorrect results for outer joins when the inner relation is an
inheritance tree or UNION ALL subquery.
- Fix possible duplicate scans of UNION ALL member relations.
- Fix "cannot handle unplanned sub-select" error.
This occurred when a sub-select contains a join alias reference
that expands into an expression containing another sub-select.
- Fix failure to mark cached plans as transient.
If a plan is prepared while "CREATE INDEX CONCURRENTLY" is in
progress for one of the referenced tables, it is supposed to be
re-planned once the index is ready for use. This was not happening
reliably.
- Reduce PANIC to ERROR in some occasionally-reported btree failure
cases, and provide additional detail in the resulting error
messages.
This should improve the system's robustness with corrupted indexes.
- Prevent show_session_authorization() from crashing within
autovacuum processes.
- Defend against functions returning setof record where not all the
returned rows are actually of the same rowtype.
- Fix possible failure when hashing a pass-by-reference function
result.
- Improve merge join's handling of NULLs in the join columns.
A merge join can now stop entirely upon reaching the first NULL, if
the sort order is such that NULLs sort high.
- Take care to fsync the contents of lockfiles (both "postmaster.pid"
and the socket lockfile) while writing them.
This omission could result in corrupted lockfile contents if the
machine crashes shortly after postmaster start. That could in turn
prevent subsequent attempts to start the postmaster from
succeeding, until the lockfile is manually removed.
- Avoid recursion while assigning XIDs to heavily-nested
subtransactions.
The original coding could result in a crash if there was limited
stack space.
- Avoid holding open old WAL segments in the walwriter process.
The previous coding would prevent removal of no-longer-needed
segments.
- Fix log_line_prefix's %i escape, which could produce junk early in
backend startup.
- Fix possible data corruption in "ALTER TABLE ... SET TABLESPACE"
when archiving is enabled.
- Allow "CREATE DATABASE" and "ALTER DATABASE ... SET TABLESPACE" to
be interrupted by query-cancel.
- Fix "REASSIGN OWNED" to handle operator classes and families.
- Fix possible core dump when comparing two empty tsquery values.
- Fix LIKE's handling of patterns containing % followed by _.
We've fixed this before, but there were still some
incorrectly-handled cases.
- In PL/Python, defend against null pointer results from
PyCObject_AsVoidPtr and PyCObject_FromVoidPtr.
- Make psql recognize "DISCARD ALL" as a command that should not be
encased in a transaction block in autocommit-off mode.
- Fix ecpg to process data from RETURNING clauses correctly.
- Improve "contrib/dblink"'s handling of tables containing dropped
columns.
- Fix connection leak after "duplicate connection name" errors in
"contrib/dblink".
- Fix "contrib/dblink" to handle connection names longer than 62
bytes correctly.
- Add hstore(text, text) function to "contrib/hstore".
This function is the recommended substitute for the now-deprecated
=> operator. It was back-patched so that future-proofed code can be
used with older server versions. Note that the patch will be
effective only after "contrib/hstore" is installed or reinstalled
in a particular database. Users might prefer to execute the "CREATE
FUNCTION" command by hand, instead.
- Update build infrastructure and documentation to reflect the source
code repository's move from CVS to Git.
-- Martin Pitt <email address hidden> Wed, 06 Oct 2010 09:56:37 +0200
This bug was fixed in the package postgresql-8.3 - 8.3.12-0ubuntu8.04
--------------- 0ubuntu8. 04) hardy-security; urgency=low
postgresql-8.3 (8.3.12-
* New upstream security/bug fix release: (LP: #655293) critical purposes. CVE-2010- 3433). reported btree failure authorization( ) from crashing within ctions. ly-handled cases. _AsVoidPtr and PyCObject_ FromVoidPtr. contrib/ dblink" .
- Use a separate interpreter for each calling SQL userid in PL/Perl
and PL/Tcl.
This change prevents security problems that can be caused by
subverting Perl or Tcl code that will be executed later in the same
session under another SQL user identity (for example, within a
SECURITY DEFINER function). Most scripting languages offer numerous
ways that that might be done, such as redefining standard functions
or operators called by the target function. Without this change,
any SQL user with Perl or Tcl language usage rights can do
essentially anything with the SQL privileges of the target
function's owner.
The cost of this change is that intentional communication among
Perl and Tcl functions becomes more difficult. To provide an escape
hatch, PL/PerlU and PL/TclU functions continue to use only one
interpreter per session. This is not considered a security issue
since all such functions execute at the trust level of a database
superuser already.
It is likely that third-party procedural languages that claim to
offer trusted execution have similar security issues. We advise
contacting the authors of any PL you are depending on for
security-
Our thanks to Tim Bunce for pointing out this issue
(
- Prevent possible crashes in pg_get_expr() by disallowing it from
being called with an argument that is not one of the system catalog
columns it's intended to be used with.
- Fix incorrect usage of non-strict OR joinclauses in Append
indexscans.
This is a back-patch of an 8.4 fix that was missed in the 8.3
branch. This corrects an error introduced in 8.3.8 that could cause
incorrect results for outer joins when the inner relation is an
inheritance tree or UNION ALL subquery.
- Fix possible duplicate scans of UNION ALL member relations.
- Fix "cannot handle unplanned sub-select" error.
This occurred when a sub-select contains a join alias reference
that expands into an expression containing another sub-select.
- Fix failure to mark cached plans as transient.
If a plan is prepared while "CREATE INDEX CONCURRENTLY" is in
progress for one of the referenced tables, it is supposed to be
re-planned once the index is ready for use. This was not happening
reliably.
- Reduce PANIC to ERROR in some occasionally-
cases, and provide additional detail in the resulting error
messages.
This should improve the system's robustness with corrupted indexes.
- Prevent show_session_
autovacuum processes.
- Defend against functions returning setof record where not all the
returned rows are actually of the same rowtype.
- Fix possible failure when hashing a pass-by-reference function
result.
- Improve merge join's handling of NULLs in the join columns.
A merge join can now stop entirely upon reaching the first NULL, if
the sort order is such that NULLs sort high.
- Take care to fsync the contents of lockfiles (both "postmaster.pid"
and the socket lockfile) while writing them.
This omission could result in corrupted lockfile contents if the
machine crashes shortly after postmaster start. That could in turn
prevent subsequent attempts to start the postmaster from
succeeding, until the lockfile is manually removed.
- Avoid recursion while assigning XIDs to heavily-nested
subtransa
The original coding could result in a crash if there was limited
stack space.
- Avoid holding open old WAL segments in the walwriter process.
The previous coding would prevent removal of no-longer-needed
segments.
- Fix log_line_prefix's %i escape, which could produce junk early in
backend startup.
- Fix possible data corruption in "ALTER TABLE ... SET TABLESPACE"
when archiving is enabled.
- Allow "CREATE DATABASE" and "ALTER DATABASE ... SET TABLESPACE" to
be interrupted by query-cancel.
- Fix "REASSIGN OWNED" to handle operator classes and families.
- Fix possible core dump when comparing two empty tsquery values.
- Fix LIKE's handling of patterns containing % followed by _.
We've fixed this before, but there were still some
incorrect
- In PL/Python, defend against null pointer results from
PyCObject
- Make psql recognize "DISCARD ALL" as a command that should not be
encased in a transaction block in autocommit-off mode.
- Fix ecpg to process data from RETURNING clauses correctly.
- Improve "contrib/dblink"'s handling of tables containing dropped
columns.
- Fix connection leak after "duplicate connection name" errors in
"
- Fix "contrib/dblink" to handle connection names longer than 62
bytes correctly.
- Add hstore(text, text) function to "contrib/hstore".
This function is the recommended substitute for the now-deprecated
=> operator. It was back-patched so that future-proofed code can be
used with older server versions. Note that the patch will be
effective only after "contrib/hstore" is installed or reinstalled
in a particular database. Users might prefer to execute the "CREATE
FUNCTION" command by hand, instead.
- Update build infrastructure and documentation to reflect the source
code repository's move from CVS to Git.
-- Martin Pitt <email address hidden> Wed, 06 Oct 2010 09:56:37 +0200