• Dean Rasheed's avatar
    Fix security checks for selectivity estimation functions with RLS. · 1aebfbea
    Dean Rasheed authored
    In commit e2d4ef8d, security checks were added to prevent
    user-supplied operators from running over data from pg_statistic
    unless the user has table or column privileges on the table, or the
    operator is leakproof. For a table with RLS, however, checking for
    table or column privileges is insufficient, since that does not
    guarantee that the user has permission to view all of the column's
    data.
    
    Fix this by also checking for securityQuals on the RTE, and insisting
    that the operator be leakproof if there are any. Thus the
    leakproofness check will only be skipped if there are no securityQuals
    and the user has table or column privileges on the table -- i.e., only
    if we know that the user has access to all the data in the column.
    
    Back-patch to 9.5 where RLS was added.
    
    Dean Rasheed, reviewed by Jonathan Katz and Stephen Frost.
    
    Security: CVE-2019-10130
    1aebfbea
selfuncs.c 209 KB