lkml.org 
[lkml]   [2009]   [Dec]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 0/3] vfs: plug some holes involving LAST_BIND symlinks and file bind mounts (try #5)
    On Wed 2009-12-16 12:31:43, Al Viro wrote:
    > On Mon, Nov 23, 2009 at 06:15:45PM -0500, Jeff Layton wrote:
    >
    > > The big question with all of this is: Should a task have the ability
    > > to follow a /proc/pid symlink to a path that it wouldn't ordinarily be
    > > able to resolve with a path lookup. The concensus that I got from the
    > > bugtraq discussion was that it should not, and this patch is an attempt
    > > to prevent that.
    > >
    > > I take it from you and Eric's comments that you disagree? If so, what's
    > > your rationale for allowing a task to resolve this symlink when it
    > > wouldn't ordinarily be able to do so if it were a "normal" symlink?
    >
    > WTF not? It's convenient and doesn't lose any real security. If your
    > code relies on inaccessibility of <path> since some component of that
    > path is inaccessible, you are *already* fscked. Consider e.g. fchdir()
    > and its implications - if you have an opened descriptor for parent,
    > having no exec permissions on grandparent won't stop you at all. Already.
    > On all Unices, regardless of openat(), etc.

    Consider FD passing over unix socket. Passing R/O file descriptor to
    the other task, then having the task write to the file is certainly bad.

    > I might buy the argument about restricting reopening with wider permissions,
    > but
    > a) we still are looking at possible userland breakage of the worst
    > kind - random scripts passing /dev/fd/42 as command line arguments to
    > random programs. Once in a while. With error checking being... not quite
    > sufficient.
    > b) it's not just open - we have at least chmod/chown/truncate to
    > deal with.

    That's indeed the sane way to solve that.

    > Prohibiting *all* access is a complete non-starter - things like
    > cmp foo /dev/stdin || ....
    > would bloody better work and nobody cares whether you have redirect
    > from something out of your reach at the moment.

    Ok.
    Pavel
    --
    (english) http://www.livejournal.com/~pavelmachek
    (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html


    \
     
     \ /
      Last update: 2009-12-20 21:01    [W:0.025 / U:0.068 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site