Prevent functions in indexes from executing with the privileges of
the user running VACUUM, ANALYZE, etc (Tom)
Functions used in index expressions and partial-index
predicates are evaluated whenever a new table entry is made. It has
long been understood that this poses a risk of trojan-horse code
execution if one modifies a table owned by an untrustworthy user.
(Note that triggers, defaults, check constraints, etc. pose the
same type of risk.) But functions in indexes pose extra danger
because they will be executed by routine maintenance operations
such as VACUUM FULL, which are commonly performed
automatically under a superuser account. For example, a nefarious user
can execute code with superuser privileges by setting up a
trojan-horse index definition and waiting for the next routine vacuum.
The fix arranges for standard maintenance operations
(including VACUUM, ANALYZE, REINDEX,
and CLUSTER) to execute as the table owner rather than
the calling user, using the same privilege-switching mechanism already
used for SECURITY DEFINER functions. To prevent bypassing
this security measure, execution of SET SESSION
AUTHORIZATION and SET ROLE is now forbidden within a
SECURITY DEFINER context. (CVE-2007-6600)
Require non-superusers who use /contrib/dblink to use only
password authentication, as a security measure (Joe)
The fix that appeared for this in 7.3.20 was incomplete, as it plugged
the hole for only some dblink functions. (CVE-2007-6601,
CVE-2007-3278)
Fix potential crash in translate()
when using a multibyte
database encoding (Tom)
Make contrib/tablefunc's crosstab()
handle
NULL rowid as a category in its own right, rather than crashing (Joe)
Require a specific version of Autoconf to be used
when re-generating the configure script (Peter)
This affects developers and packagers only. The change was made
to prevent accidental use of untested combinations of
Autoconf and PostgreSQL versions.
You can remove the version check if you really want to use a
different Autoconf version, but it's
your responsibility whether the result works or not.