• Noah Misch's avatar
    In security-restricted operations, block enqueue of at-commit user code. · 0c3185e9
    Noah Misch authored
    Specifically, this blocks DECLARE ... WITH HOLD and firing of deferred
    triggers within index expressions and materialized view queries.  An
    attacker having permission to create non-temp objects in at least one
    schema could execute arbitrary SQL functions under the identity of the
    bootstrap superuser.  One can work around the vulnerability by disabling
    autovacuum and not manually running ANALYZE, CLUSTER, REINDEX, CREATE
    INDEX, VACUUM FULL, or REFRESH MATERIALIZED VIEW.  (Don't restore from
    pg_dump, since it runs some of those commands.)  Plain VACUUM (without
    FULL) is safe, and all commands are fine when a trusted user owns the
    target object.  Performance may degrade quickly under this workaround,
    however.  Back-patch to 9.5 (all supported versions).
    
    Reviewed by Robert Haas.  Reported by Etienne Stalmans.
    
    Security: CVE-2020-25695
    0c3185e9
trigger.c 177 KB