Re: Identifying user-created objects

From: Masahiko Sawada <masahiko(dot)sawada(at)2ndquadrant(dot)com>
To: Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Identifying user-created objects
Date: 2020-03-04 08:05:25
Message-ID: CA+fd4k5EiNbqWaBRxdKjdjUPAGU3cYh-khxYso1J3Fc9rJvfcQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, 4 Mar 2020 at 16:43, Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com> wrote:
>
>
>
> On 2020/02/05 20:26, Masahiko Sawada wrote:
> > Hi,
> >
> > User can create database objects such as functions into pg_catalog.
> > But if I'm not missing something, currently there is no
> > straightforward way to identify if the object is a user created object
> > or a system object which is created during initdb. If we can do that
> > user will be able to check if malicious functions are not created in
> > the database, which is important from the security perspective.
>
> The function that you are proposing is really enough for this use case?
> What if malicious users directly change the oid of function
> to < FirstNormalObjectId? Or you're assuming that malicious users will
> never log in as superuser and not be able to change the oid?

That's a good point! I'm surprised that user is allowed to update an
oid of database object. In addition, surprisingly we can update it to
0, which in turn leads the assertion failure:

TRAP: BadArgument("OidIsValid(relid)", File: "autovacuum.c", Line: 2990)

As you pointed out, it's not enough as long as users can manually
update oid to < FirstNormalObjectId. But I wonder if we should rather
forbid that.

Regards,

--
Masahiko Sawada http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Julien Rouhaud 2020-03-04 08:21:45 Re: reindex concurrently and two toast indexes
Previous Message Michael Paquier 2020-03-04 07:54:18 PG_COLOR not mentioned in docs of vacuumlo, oid2name and pgbench