aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2020-02-10 11:47:09 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2020-02-10 12:06:25 -0300
commite8b8eb937642f56725d4bc025ea7fa57caf6992c (patch)
tree2280dc153995b0b930640eeab4ac9441c417a8b1
parent384ecd6efed809fecce08224c7cd37241cc0c602 (diff)
downloadpostgresql-e8b8eb937642f56725d4bc025ea7fa57caf6992c.tar.gz
postgresql-e8b8eb937642f56725d4bc025ea7fa57caf6992c.zip
Fix priv checks for ALTER <object> DEPENDS ON EXTENSION
Marking an object as dependant on an extension did not have any privilege check whatsoever; this allowed any user to mark objects as droppable by anyone able to DROP EXTENSION, which could be used to cause system-wide havoc. Disallow by checking that the calling user owns the mentioned object. (No constraints are placed on the extension.) Security: CVE-2020-1720 Reported-by: Tom Lane Discussion: 31605.1566429043@sss.pgh.pa.us
-rw-r--r--src/backend/commands/alter.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c
index 1301bcb5e82..3ef3bd4b067 100644
--- a/src/backend/commands/alter.c
+++ b/src/backend/commands/alter.c
@@ -409,6 +409,19 @@ ExecAlterObjectDependsStmt(AlterObjectDependsStmt *stmt, ObjectAddress *refAddre
stmt->objargs, &rel, AccessExclusiveLock, false);
/*
+ * Verify that the user is entitled to run the command.
+ *
+ * We don't check any privileges on the extension, because that's not
+ * needed. The object owner is stipulating, by running this command, that
+ * the extension owner can drop the object whenever they feel like it,
+ * which is not considered a problem.
+ */
+ check_object_ownership(GetUserId(),
+ stmt->objectType, address,
+ stmt->objname, stmt->objargs,
+ rel);
+
+ /*
* If a relation was involved, it would have been opened and locked. We
* don't need the relation here, but we'll retain the lock until commit.
*/