From 9cc2b62894de6a8b3d78d20bcd1a6647a7553a6c Mon Sep 17 00:00:00 2001
From: Nathan Bossart
Date: Mon, 6 May 2024 09:00:13 -0500
Subject: Fix privilege checks in pg_stats_ext and pg_stats_ext_exprs.
The catalog view pg_stats_ext fails to consider privileges for
expression statistics. The catalog view pg_stats_ext_exprs fails
to consider privileges and row-level security policies. To fix,
restrict the data in these views to table owners or roles that
inherit privileges of the table owner. It may be possible to apply
less restrictive privilege checks in some cases, but that is left
as a future exercise. Furthermore, for pg_stats_ext_exprs, do not
return data for tables with row-level security enabled, as is
already done for pg_stats_ext.
On the back-branches, a fix-CVE-2024-4317.sql script is provided
that will install into the "share" directory. This file can be
used to apply the fix to existing clusters.
Bumps catversion on 'master' branch only.
Reported-by: Lukas Fittl
Reviewed-by: Noah Misch, Tomas Vondra, Tom Lane
Security: CVE-2024-4317
Backpatch-through: 14
---
doc/src/sgml/catalogs.sgml | 3 +--
doc/src/sgml/system-views.sgml | 4 ++--
2 files changed, 3 insertions(+), 4 deletions(-)
(limited to 'doc/src')
diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml
index 5dc6a0a289d..88328ebb34b 100644
--- a/doc/src/sgml/catalogs.sgml
+++ b/doc/src/sgml/catalogs.sgml
@@ -7685,8 +7685,7 @@ SCRAM-SHA-256$<iteration count>:&l
is a publicly readable view
on pg_statistic_ext_data (after joining
with pg_statistic_ext) that only exposes
- information about those tables and columns that are readable by the
- current user.
+ information about tables the current user owns.
diff --git a/doc/src/sgml/system-views.sgml b/doc/src/sgml/system-views.sgml
index 44733f59738..5f8b99bf697 100644
--- a/doc/src/sgml/system-views.sgml
+++ b/doc/src/sgml/system-views.sgml
@@ -3741,7 +3741,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
and pg_statistic_ext_data
catalogs. This view allows access only to rows of
pg_statistic_ext and pg_statistic_ext_data
- that correspond to tables the user has permission to read, and therefore
+ that correspond to tables the user owns, and therefore
it is safe to allow public read access to this view.
@@ -3952,7 +3952,7 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
and pg_statistic_ext_data
catalogs. This view allows access only to rows of
pg_statistic_ext and pg_statistic_ext_data
- that correspond to tables the user has permission to read, and therefore
+ that correspond to tables the user owns, and therefore
it is safe to allow public read access to this view.
--
cgit v1.2.3