On Wed, 18 Dec 2019 at 18:37, Tom Lane <t...@sss.pgh.pa.us> wrote:

> Simon Riggs <si...@2ndquadrant.com> writes:
> > So this is the same discussion as elsewhere about potentially aborted
> > transactions...
> > AFAIK, the worst that happens in that case is that the reading
> transaction
> > will end with an ERROR, similar to a serializable error.
>
> No, the worst case is transactions trying to read invalid data, resulting
> in either crashes or exploitable security breaches (in the usual vein of
> what can go wrong if you can get the C code to follow an invalid pointer).
>

Yes, but we're not following any pointers as a result of this. The output
is just rows.


> This seems possible, for example, if you can get a transaction to read
> uncommitted data that was written according to some other rowtype than
> what the reading transaction thinks the table rowtype is.  Casting my eyes
> through AlterTableGetLockLevel(), it looks like all the easy ways to break
> it like that are safe (for now) because they require AccessExclusiveLock.
> But I am quite afraid that we'd introduce security holes by future
> reductions of required lock levels --- or else that this feature would be
> the sole reason why we couldn't reduce the lock level for some DDL
> operation.  I'm doubtful that its use-case is worth that.
>

I think we can limit it to Read Only transactions without any limitation on
the proposed use cases.

But I'll think some more about that, just in case.


> > And that won't happen in the use cases I've explicitly described this as
> > being useful for, which is where the writing transactions have completed
> > executing.
>
> My concerns, at least, are not about whether this has any interesting
> use-cases.  They're about whether the feature can be abused to cause
> security problems.  I think the odds are fair that that'd be true
> even today, and higher that it'd become true sometime in the future.
>

I share your concerns. We have no need or reason to make a quick decision
on this patch.

I submit this patch only as a useful tool for recovering data.

-- 
Simon Riggs                http://www.2ndQuadrant.com/
<http://www.2ndquadrant.com/>
PostgreSQL Solutions for the Enterprise

Reply via email to