Provided by: postgresql-doc-12_12.2-4_all bug


       dblink_connect_u - opens a persistent connection to a remote database, insecurely


       dblink_connect_u(text connstr) returns text
       dblink_connect_u(text connname, text connstr) returns text


       dblink_connect_u() is identical to dblink_connect(), except that it will allow
       non-superusers to connect using any authentication method.

       If the remote server selects an authentication method that does not involve a password,
       then impersonation and subsequent escalation of privileges can occur, because the session
       will appear to have originated from the user as which the local PostgreSQL server runs.
       Also, even if the remote server does demand a password, it is possible for the password to
       be supplied from the server environment, such as a ~/.pgpass file belonging to the
       server's user. This opens not only a risk of impersonation, but the possibility of
       exposing a password to an untrustworthy remote server. Therefore, dblink_connect_u() is
       initially installed with all privileges revoked from PUBLIC, making it un-callable except
       by superusers. In some situations it may be appropriate to grant EXECUTE permission for
       dblink_connect_u() to specific users who are considered trustworthy, but this should be
       done with care. It is also recommended that any ~/.pgpass file belonging to the server's
       user not contain any records specifying a wildcard host name.

       For further details see dblink_connect().