Make standard maintenance operations (including VACUUM, ANALYZE, REINDEX,
and CLUSTER) execute as the table owner rather than the calling user, using the same privilege-switching mechanism already used for SECURITY DEFINER functions. The purpose of this change is to ensure that user-defined functions used in index definitions cannot acquire the privileges of a superuser account that is performing routine maintenance. While a function used in an index is supposed to be IMMUTABLE and thus not able to do anything very interesting, there are several easy ways around that restriction; and even if we could plug them all, there would remain a risk of reading sensitive information and broadcasting it through a covert channel such as CPU usage. To prevent bypassing this security measure, execution of SET SESSION AUTHORIZATION and SET ROLE is now forbidden within a SECURITY DEFINER context. Thanks to Itagaki Takahiro for reporting this vulnerability. Security: CVE-2007-6600
Showing
- doc/src/sgml/ref/set_role.sgml 7 additions, 2 deletionsdoc/src/sgml/ref/set_role.sgml
- doc/src/sgml/ref/set_session_auth.sgml 12 additions, 3 deletionsdoc/src/sgml/ref/set_session_auth.sgml
- doc/src/sgml/ref/show.sgml 2 additions, 3 deletionsdoc/src/sgml/ref/show.sgml
- src/backend/access/transam/xact.c 25 additions, 43 deletionssrc/backend/access/transam/xact.c
- src/backend/catalog/index.c 25 additions, 1 deletionsrc/backend/catalog/index.c
- src/backend/commands/analyze.c 22 additions, 9 deletionssrc/backend/commands/analyze.c
- src/backend/commands/schemacmds.c 7 additions, 6 deletionssrc/backend/commands/schemacmds.c
- src/backend/commands/vacuum.c 14 additions, 1 deletionsrc/backend/commands/vacuum.c
- src/backend/commands/variable.c 34 additions, 1 deletionsrc/backend/commands/variable.c
- src/backend/utils/adt/ri_triggers.c 11 additions, 9 deletionssrc/backend/utils/adt/ri_triggers.c
- src/backend/utils/fmgr/fmgr.c 24 additions, 19 deletionssrc/backend/utils/fmgr/fmgr.c
- src/backend/utils/init/miscinit.c 50 additions, 27 deletionssrc/backend/utils/init/miscinit.c
- src/include/miscadmin.h 4 additions, 3 deletionssrc/include/miscadmin.h
Loading
Please register or sign in to comment