From: ebiederm@xmission.com (Eric W. Biederman)
To: Andrew Morton <akpm@osdl.org>
Cc: efault@gmx.de, nickpiggin@yahoo.com.au, laurent.riffard@free.fr,
jesper.juhl@gmail.com, linux-kernel@vger.kernel.org, rjw@sisk.pl,
mbligh@mbligh.org, clameter@engr.sgi.com, pj@sgi.com
Subject: Re: [PATCH] proc: Use sane permission checks on the /proc/<pid>/fd/ symlinks.
Date: Fri, 03 Mar 2006 05:00:09 -0700 [thread overview]
Message-ID: <m1y7zrg2ly.fsf@ebiederm.dsl.xmission.com> (raw)
In-Reply-To: <20060303004942.3b96a8ae.akpm@osdl.org> (Andrew Morton's message of "Fri, 3 Mar 2006 00:49:42 -0800")
Andrew Morton <akpm@osdl.org> writes:
> With all your latest patches I get a big spew lateish in the boot:
>
> Reverting just this patch prevents the above.
>
> This is with basically unaltered FC5 as of a few days ago. The audit
> patches weren't applied.
>
> What is happening is that both `current' and get_proc_task(inode) are the
> same task_struct: `restorecon' is trying to read its own proc files. But
> ptrace_may_attach()->security_ptrace() is returning -EACCES.
>
> So I bodged it in the obvious manner:
Ugh. Unless I am misreading the code we have the exact same problem
with /proc/self/mem. Which uses a stricter form of the same test.
> btw, it's surprising (to me) that security_ptrace(t1, t2) fails when
> t1==t2?
Same here. ptrace_attach explicitly denies that case but that happens
outside of ptrace_may_attach to allow for the /proc usage.
> --- devel/fs/proc/base.c~proc-use-sane-permission-checks-on-the-proc-pid-fd-fix
> 2006-03-03 00:38:17.000000000 -0800
> +++ devel-akpm/fs/proc/base.c 2006-03-03 00:43:54.000000000 -0800
> @@ -521,8 +521,11 @@ static int proc_fd_access_allowed(struct
> * allow access if we have the proper capability.
> */
> task = get_proc_task(inode);
> - if (task) {
> + if (task == current)
> + allowed = 1;
> + if (task && !allowed) {
> int alive;
> +
> task_lock(task);
> alive = !!task->mm;
> task_unlock(task);
>
> And the messages went away.
Agreed. Examining your self should always be valid.
I suspect this check get put in ptrace_may_attach, so we can always
read /proc/self/mem.
> But I have a bad feeling about these /proc permission changes, Eric. I
> suspect we'll be chasing a gradually decreasing frequency of weird problems
> for a long time.
You may be right, but even if that is the case I think it is worth it.
The old checks were bizarre if not outright wrong. And cause their
own share of weird cases when you start using things like namespaces.
The checks unify the two cases where we allow violating a tasks
privacy. Which is an important case to get right, and unification
of permissions means it is easier to administer if you don't want
someone doing that.
/proc and ptrace have had a connection since at least 2.0 so this
is nothing new. So if by using this on more than just /proc/<pid>/mem
I increase the frequency of usage and thus increase the frequency
of problem detection I think it is a good thing.
I think it is actually surprising no one noticed how bogus the
permissions on /proc/<pid>/fd/<fd#> have been, especially the people
concerned with security.
> That task_lock() you have in proc_fd_access_allowed() looks very fishy,
> btw. As soon as the lock is dropped, local `alive' becomes meaningless.
> Either that, or the lock wasn't needed.
Agreed. That does look a fishy.
I also spotted an outright bug. put_task_struct does not work on a
NULL pointer. Duh.
Sorry I obviously didn't switch levels very well when auditing that
code.
I will send in a patch to clean up those bits.
Eric
next prev parent reply other threads:[~2006-03-03 12:03 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-28 12:24 2.6.16-rc5-mm1 Andrew Morton
2006-02-28 14:41 ` 2.6.16-rc5-mm1 Cornelia Huck
2006-02-28 14:55 ` 2.6.16-rc5-mm1 Martin Schwidefsky
2006-02-28 15:08 ` 2.6.16-rc5-mm1 gsmith
2006-02-28 15:01 ` 2.6.16-rc5-mm1 Michal Piotrowski
2006-02-28 16:20 ` 2.6.16-rc5-mm1 Michal Piotrowski
2006-03-01 2:16 ` 2.6.16-rc5-mm1 Nick Piggin
2006-03-01 2:44 ` 2.6.16-rc5-mm1 Andrew Morton
2006-03-01 3:10 ` 2.6.16-rc5-mm1 Nick Piggin
2006-03-01 3:21 ` 2.6.16-rc5-mm1 Andrew Morton
2006-03-01 3:30 ` 2.6.16-rc5-mm1 Nick Piggin
2006-03-01 3:42 ` 2.6.16-rc5-mm1 Andrew Morton
2006-02-28 19:40 ` usb usb5: Manufacturer: Linux 2.6.16-rc5-mm1 ehci_hcd Alexey Dobriyan
2006-02-28 20:48 ` [linux-usb-devel] " Alan Stern
2006-02-28 20:48 ` 2.6.16-rc5-mm1 Mattia Dongili
2006-02-28 23:49 ` 2.6.16-rc5-mm1 Alessandro Zummo
2006-02-28 21:13 ` 2.6.16-rc5-mm1 Jesper Juhl
2006-02-28 22:27 ` 2.6.16-rc5-mm1 Jiri Slaby
2006-02-28 22:30 ` 2.6.16-rc5-mm1 Jesper Juhl
2006-02-28 23:18 ` 2.6.16-rc5-mm1 Laurent Riffard
2006-02-28 23:57 ` 2.6.16-rc5-mm1 Jesper Juhl
2006-03-01 0:21 ` 2.6.16-rc5-mm1 Andrew Morton
2006-03-01 0:33 ` 2.6.16-rc5-mm1 Jesper Juhl
2006-03-01 3:05 ` 2.6.16-rc5-mm1 Paul Jackson
2006-03-01 3:20 ` 2.6.16-rc5-mm1 Paul Jackson
2006-03-01 4:15 ` 2.6.16-rc5-mm1 Eric W. Biederman
2006-03-01 4:26 ` 2.6.16-rc5-mm1 Paul Jackson
2006-03-01 4:57 ` 2.6.16-rc5-mm1 Eric W. Biederman
2006-03-01 10:06 ` 2.6.16-rc5-mm1 Laurent Riffard
2006-03-01 10:32 ` 2.6.16-rc5-mm1 Andrew Morton
2006-03-01 11:25 ` 2.6.16-rc5-mm1 Andrew Morton
2006-03-01 18:14 ` 2.6.16-rc5-mm1 Ashok Raj
2006-03-01 18:48 ` 2.6.16-rc5-mm1 Andrew Morton
2006-03-01 19:31 ` 2.6.16-rc5-mm1 Ashok Raj
2006-03-01 13:58 ` 2.6.16-rc5-mm1 Mike Galbraith
2006-03-01 14:50 ` 2.6.16-rc5-mm1 Laurent Riffard
2006-03-01 15:33 ` 2.6.16-rc5-mm1 Mike Galbraith
2006-03-01 20:12 ` 2.6.16-rc5-mm1 Andrew Morton
2006-03-01 20:19 ` 2.6.16-rc5-mm1 Andrew Morton
2006-03-01 20:35 ` 2.6.16-rc5-mm1 Peter Staubach
2006-03-01 20:43 ` 2.6.16-rc5-mm1 Eric W. Biederman
2006-03-02 4:52 ` 2.6.16-rc5-mm1 Nick Piggin
2006-03-02 16:37 ` [PATCH] proc: Use sane permission checks on the /proc/<pid>/fd/ symlinks Eric W. Biederman
2006-03-03 8:49 ` Andrew Morton
2006-03-03 12:00 ` Eric W. Biederman [this message]
2006-03-01 14:22 ` 2.6.16-rc5-mm1 J.A. Magallon
2006-03-02 4:51 ` 2.6.16-rc5-mm1 Andrew Morton
2006-03-02 21:11 ` 2.6.16-rc5-mm1 J.A. Magallon
2006-03-02 22:31 ` 2.6.16-rc5-mm1 Andrew Morton
2006-03-02 3:10 ` 2.6.16-rc5-mm1 Paul Jackson
2006-03-01 10:35 ` 2.6.16-rc5-mm1 Laurent Riffard
2006-03-01 10:47 ` 2.6.16-rc5-mm1 Andrew Morton
2006-03-02 1:41 ` 2.6.16-rc5-mm1 Jesper Juhl
2006-03-02 20:16 ` 2.6.16-rc5-mm1 Jesper Juhl
2006-03-02 22:34 ` 2.6.16-rc5-mm1 Eric W. Biederman
2006-03-06 0:05 ` 2.6.16-rc5-mm1 Jesper Juhl
2006-02-28 23:15 ` 2.6.16-rc5-mm1 Andrew Morton
2006-02-28 23:33 ` 2.6.16-rc5-mm1 Jesper Juhl
2006-02-28 22:34 ` 2.6.16-rc5-mm1 Rafael J. Wysocki
2006-02-28 23:48 ` 2.6.16-rc5-mm1 Andrew Morton
2006-03-01 0:52 ` 2.6.16-rc5-mm1 Eric W. Biederman
2006-03-01 11:42 ` 2.6.16-rc5-mm1 Rafael J. Wysocki
2006-02-28 23:56 ` 2.6.16-rc5-mm1 Martin Bligh
2006-03-01 16:45 ` [PATCH] Fix powerpc bad_page_fault output (Re: 2.6.16-rc5-mm1) Olof Johansson
2006-03-02 0:09 ` Paul E. McKenney
2006-03-02 0:35 ` Paul Mackerras
2006-03-02 1:14 ` Martin Bligh
2006-03-02 2:22 ` Olof Johansson
2006-03-02 5:24 ` Anton Blanchard
2006-03-02 5:16 ` Paul Mackerras
2006-03-02 10:27 ` 2.6.16-rc5-mm1 -- strange load balancing problems Peter Williams
2006-03-02 22:23 ` Peter Williams
2006-03-13 4:46 ` Peter Williams
2006-03-03 15:32 ` 2.6.16-rc5-mm1: USB compile errors Adrian Bunk
2006-03-02 21:38 [PATCH] proc: Use sane permission checks on the /proc/<pid>/fd/ symlinks Sam Vilain
2006-03-02 23:18 ` Eric W. Biederman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m1y7zrg2ly.fsf@ebiederm.dsl.xmission.com \
--to=ebiederm@xmission.com \
--cc=akpm@osdl.org \
--cc=clameter@engr.sgi.com \
--cc=efault@gmx.de \
--cc=jesper.juhl@gmail.com \
--cc=laurent.riffard@free.fr \
--cc=linux-kernel@vger.kernel.org \
--cc=mbligh@mbligh.org \
--cc=nickpiggin@yahoo.com.au \
--cc=pj@sgi.com \
--cc=rjw@sisk.pl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®