From: | Noah Misch <noah(at)leadboat(dot)com> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Bruce Momjian <bruce(at)momjian(dot)us> |
Subject: | Re: Securing "make check" (CVE-2014-0067) |
Date: | 2014-06-08 13:57:13 |
Message-ID: | 20140608135713.GA525142@tornado.leadboat.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sun, Mar 23, 2014 at 07:04:20PM -0400, Noah Misch wrote:
> On Thu, Mar 06, 2014 at 11:52:22PM -0500, Noah Misch wrote:
> > On Thu, Mar 06, 2014 at 12:44:34PM -0500, Tom Lane wrote:
> > > I'm inclined to suggest that we should put the socket under $CWD by
> > > default, but provide some way for the user to override that choice.
> > > If they want to put it in /tmp, it's on their head as to how secure
> > > that is. On most modern platforms it'd be fine.
> >
> > I am skeptical about the value of protecting systems with non-sticky /tmp, but
> > long $CWD isn't of great importance, either. I'm fine with your suggestion.
> > Though the $CWD or one of its parents could be world-writable, that would
> > typically mean an attacker could just replace the test cases directly.
>
> Here's the patch. The temporary data directory makes for a convenient socket
> directory; initdb already gives it mode 0700, and we have existing
> arrangements to purge it when finished. One can override the socket directory
> by defining PG_REGRESS_SOCK_DIR in the environment.
Socket path length limitations thwarted that patch:
http://www.postgresql.org/message-id/flat/E1WTnV2-00047S-NM(at)gemulon(dot)postgresql(dot)org
Here's an update that places the socket in a temporary subdirectory of /tmp.
The first attached patch adds NetBSD mkdtemp() to libpgport. The second,
principal, patch uses mkdtemp() to implement this design in pg_regress. The
corresponding change to contrib/pg_upgrade/test.sh is based on the "configure"
script's arrangements for its temporary directory.
NetBSD's mkdtemp() has assertions, and I initially mapped its assertion macro
to our Assert(). However, a bug in our MinGW build process causes build
failures if an Assert() call appears in libpgport. I will post about that in
a new thread. The affected assertions were uncompelling, so I dropped them.
--
Noah Misch
EnterpriseDB http://www.enterprisedb.com
Attachment | Content-Type | Size |
---|---|---|
mkdtemp-port-v1.patch | text/plain | 10.9 KB |
makecheck-socket-secure-v2.patch | text/plain | 8.6 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Eric L | 2014-06-08 14:40:21 | configure does not check for bison or flex |
Previous Message | Kevin Grittner | 2014-06-08 13:51:45 | Re: Scaling shared buffer eviction |