Re: import/export of large objects on server-side

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: K(dot)Reger(at)twc(dot)de
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: import/export of large objects on server-side
Date: 2001-11-16 15:29:27
Message-ID: 26022.1005924567@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

"Klaus Reger" <K(dot)Reger(at)twc(dot)de> writes:
> I've made a patch, that introduces an entry in the PostgreSQL-config file.
> You can set a drirectory, where all imports/exports can happen. If nothing
> is set (the default), no imports/exports on the server-side are allowed.
> To enhance the security, no reading/writung is allowed from/to non-regular
> files (block-devs, symlinks, etc.)

This is trivially defeatable, assuming that the "import/export"
directory is world writable (if it isn't, importing will be tough).
Example: say imp/exp directory is

/var/spool/impexp

Bad guy wants to read/write Postgres-owned file, say

/usr/local/pgsql/data/pg_hba.conf

All he need do is

ln -s /usr/local/pgsql/data /var/spool/impexp/link

and then ask to lo_read or lo_write

/var/spool/impexp/link/pg_hba.conf

which will be allowed since it's a regular file.

Or, even simpler, ask to read/write

/var/spool/impexp/../../../usr/local/pgsql/data/pg_hba.conf

While you could patch around these particular attacks by further
restricting the filenames, the bottom line is that server-side LO
operations are just inherently insecure.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Klaus Reger 2001-11-16 16:02:13 Re: import/export of large objects on server-side
Previous Message Ross J. Reedstrom 2001-11-16 15:24:24 Re: bug or change in functionality in 7.2?