summaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-dbs/postgresql/files/CVE-2023-2455.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-oe/recipes-dbs/postgresql/files/CVE-2023-2455.patch')
-rw-r--r--meta-oe/recipes-dbs/postgresql/files/CVE-2023-2455.patch118
1 files changed, 0 insertions, 118 deletions
diff --git a/meta-oe/recipes-dbs/postgresql/files/CVE-2023-2455.patch b/meta-oe/recipes-dbs/postgresql/files/CVE-2023-2455.patch
deleted file mode 100644
index a94c65cc0c..0000000000
--- a/meta-oe/recipes-dbs/postgresql/files/CVE-2023-2455.patch
+++ /dev/null
@@ -1,118 +0,0 @@
1From 473626cf00babd829eb15c36b51dfb358d32bc95 Mon Sep 17 00:00:00 2001
2From: Tom Lane <tgl@sss.pgh.pa.us>
3Date: Mon, 8 May 2023 10:12:45 -0400
4Subject: [PATCH] Handle RLS dependencies in inlined set-returning functions
5 properly.
6
7If an SRF in the FROM clause references a table having row-level
8security policies, and we inline that SRF into the calling query,
9we neglected to mark the plan as potentially dependent on which
10role is executing it. This could lead to later executions in the
11same session returning or hiding rows that should have been hidden
12or returned instead.
13
14Our thanks to Wolfgang Walther for reporting this problem.
15
16Stephen Frost and Tom Lane
17
18Security: CVE-2023-2455
19
20Upstream-Status: Backport [https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=473626cf00babd829eb15c36b51dfb358d32bc95]
21CVE: CVE-2023-2455
22Signed-off-by: Vivek Kumbhar <vkumbhar@mvista.com>
23---
24 src/backend/optimizer/util/clauses.c | 7 ++++++
25 src/test/regress/expected/rowsecurity.out | 27 +++++++++++++++++++++++
26 src/test/regress/sql/rowsecurity.sql | 20 +++++++++++++++++
27 3 files changed, 54 insertions(+)
28
29diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c
30index 9d7aa8b..da50bef 100644
31--- a/src/backend/optimizer/util/clauses.c
32+++ b/src/backend/optimizer/util/clauses.c
33@@ -5095,6 +5095,13 @@ inline_set_returning_function(PlannerInfo *root, RangeTblEntry *rte)
34 */
35 record_plan_function_dependency(root, func_oid);
36
37+ /*
38+ * We must also notice if the inserted query adds a dependency on the
39+ * calling role due to RLS quals.
40+ */
41+ if (querytree->hasRowSecurity)
42+ root->glob->dependsOnRole = true;
43+
44 return querytree;
45
46 /* Here if func is not inlinable: release temp memory and return NULL */
47diff --git a/src/test/regress/expected/rowsecurity.out b/src/test/regress/expected/rowsecurity.out
48index 89397e4..379f988 100644
49--- a/src/test/regress/expected/rowsecurity.out
50+++ b/src/test/regress/expected/rowsecurity.out
51@@ -3982,6 +3982,33 @@ SELECT * FROM rls_tbl;
52
53 DROP TABLE rls_tbl;
54 RESET SESSION AUTHORIZATION;
55+-- CVE-2023-2455: inlining an SRF may introduce an RLS dependency
56+create table rls_t (c text);
57+insert into rls_t values ('invisible to bob');
58+alter table rls_t enable row level security;
59+grant select on rls_t to regress_rls_alice, regress_rls_bob;
60+create policy p1 on rls_t for select to regress_rls_alice using (true);
61+create policy p2 on rls_t for select to regress_rls_bob using (false);
62+create function rls_f () returns setof rls_t
63+ stable language sql
64+ as $$ select * from rls_t $$;
65+prepare q as select current_user, * from rls_f();
66+set role regress_rls_alice;
67+execute q;
68+ current_user | c
69+-------------------+------------------
70+ regress_rls_alice | invisible to bob
71+(1 row)
72+
73+set role regress_rls_bob;
74+execute q;
75+ current_user | c
76+--------------+---
77+(0 rows)
78+
79+RESET ROLE;
80+DROP FUNCTION rls_f();
81+DROP TABLE rls_t;
82 --
83 -- Clean up objects
84 --
85diff --git a/src/test/regress/sql/rowsecurity.sql b/src/test/regress/sql/rowsecurity.sql
86index 44deb42..3015d89 100644
87--- a/src/test/regress/sql/rowsecurity.sql
88+++ b/src/test/regress/sql/rowsecurity.sql
89@@ -1839,6 +1839,26 @@ SELECT * FROM rls_tbl;
90 DROP TABLE rls_tbl;
91 RESET SESSION AUTHORIZATION;
92
93+-- CVE-2023-2455: inlining an SRF may introduce an RLS dependency
94+create table rls_t (c text);
95+insert into rls_t values ('invisible to bob');
96+alter table rls_t enable row level security;
97+grant select on rls_t to regress_rls_alice, regress_rls_bob;
98+create policy p1 on rls_t for select to regress_rls_alice using (true);
99+create policy p2 on rls_t for select to regress_rls_bob using (false);
100+create function rls_f () returns setof rls_t
101+ stable language sql
102+ as $$ select * from rls_t $$;
103+prepare q as select current_user, * from rls_f();
104+set role regress_rls_alice;
105+execute q;
106+set role regress_rls_bob;
107+execute q;
108+
109+RESET ROLE;
110+DROP FUNCTION rls_f();
111+DROP TABLE rls_t;
112+
113 --
114 -- Clean up objects
115 --
116--
1172.25.1
118