From: Ingo Molnar <mingo@elte.hu>
To: Paul Jackson <pj@sgi.com>
Cc: Daniel Walker <dwalker@mvista.com>,
linux-kernel@vger.kernel.org, drepper@redhat.com,
tglx@linutronix.de, arjan@infradead.org, akpm@osdl.org
Subject: Re: [patch 0/6] lightweight robust futexes: -V3
Date: Thu, 16 Feb 2006 22:35:31 +0100 [thread overview]
Message-ID: <20060216213531.GC25738@elte.hu> (raw)
In-Reply-To: <20060216124758.d51befd5.pj@sgi.com>
* Paul Jackson <pj@sgi.com> wrote:
> That malicious code would have no need to have the kernel futext
> handling code do its dirty work indirectly via manipulations of this
> list. It can just do the dirty work directly.
>
> All Ingo needs to insure is that the kernel will assume no more
> priviledge when reading/writing this list than the current task had,
> from user space, reading/writing this list.
Correct, this is precisely what happens.
Furthermore, the new exit-time futex code within the kernel will do only
one, very limited thing with userspace memory: it will atomically set
bit 30 of a word at a userspace address (if the word is accessible to
and writable by userspace), if and only if that word is equal to
current->pid. This is really not the sort of memory writing capability
attackers are looking for :-)
Btw., we already have a similar mechanism in the kernel (and had for
years): the current->clear_child_tid pointer will be overwritten with 0
by the kernel at do_exit() time, and causes a futex wakeup. See
kernel/fork.c:mm_release():
if (tsk->clear_child_tid && atomic_read(&mm->mm_users) > 1) {
u32 __user * tidptr = tsk->clear_child_tid;
tsk->clear_child_tid = NULL;
/*
* We don't check the error code - if userspace has
* not set up a proper pointer then tough luck.
*/
put_user(0, tidptr);
sys_futex(tidptr, FUTEX_WAKE, 1, NULL, NULL, 0);
So the concept is not unprecedented at all, nor did it ever cause any
security problems [and i think i'd know - i wrote the above code too].
And 'write 0' is slightly more interesting to attackers than 'set bit 30
if word equals to TID'.
Ingo
next prev parent reply other threads:[~2006-02-16 21:37 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-16 9:41 [patch 0/6] lightweight robust futexes: -V3 Ingo Molnar
2006-02-16 16:33 ` Daniel Walker
2006-02-16 17:24 ` Ingo Molnar
2006-02-16 17:34 ` Daniel Walker
2006-02-16 19:06 ` [patch 0/6] lightweight robust futexes: -V3 - Why in userspace? Esben Nielsen
2006-02-16 19:34 ` Arjan van de Ven
2006-02-16 20:04 ` Esben Nielsen
2006-02-16 20:17 ` Esben Nielsen
2006-02-16 20:23 ` Christopher Friesen
2006-02-16 20:36 ` Ingo Molnar
2006-02-16 22:32 ` Esben Nielsen
2006-02-16 22:36 ` Ingo Molnar
2006-02-16 23:20 ` Esben Nielsen
2006-02-16 23:39 ` Ingo Molnar
2006-02-17 0:20 ` Esben Nielsen
2006-02-17 0:42 ` Ingo Molnar
2006-02-17 23:47 ` Andrew James Wade
2006-02-16 20:23 ` [patch 0/6] lightweight robust futexes: -V3 Ingo Molnar
2006-02-16 20:54 ` Daniel Walker
2006-02-16 21:26 ` Ingo Molnar
2006-02-16 21:50 ` Christopher Friesen
2006-02-16 21:55 ` Ingo Molnar
2006-02-16 20:47 ` Paul Jackson
2006-02-16 21:35 ` Ingo Molnar [this message]
2006-02-16 21:23 ` Paul Jackson
2006-02-16 21:50 ` Ingo Molnar
2006-02-17 4:56 ` Paul Jackson
2006-02-17 9:41 ` Ingo Molnar
2006-02-17 11:59 ` Ingo Molnar
2006-02-17 20:50 ` Paul Jackson
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=20060216213531.GC25738@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@osdl.org \
--cc=arjan@infradead.org \
--cc=drepper@redhat.com \
--cc=dwalker@mvista.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pj@sgi.com \
--cc=tglx@linutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.