From: Andrew Morton <akpm@linux-foundation.org>
To: Pavel Emelyanov <xemul@parallels.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Cyrill Gorcunov <gorcunov@openvz.org>,
Glauber Costa <glommer@parallels.com>,
Andi Kleen <andi@firstfloor.org>, Tejun Heo <tj@kernel.org>,
Matt Helsley <matthltc@us.ibm.com>,
Pekka Enberg <penberg@kernel.org>,
Eric Dumazet <eric.dumazet@gmail.com>
Subject: Re: [PATCH v2 0/4] Checkpoint/Restore: Show in proc IDs of objects that can be shared between tasks
Date: Thu, 17 Nov 2011 12:48:31 -0800 [thread overview]
Message-ID: <20111117124831.688adbeb.akpm@linux-foundation.org> (raw)
In-Reply-To: <4EC4DA15.7090106@parallels.com>
On Thu, 17 Nov 2011 13:55:33 +0400
Pavel Emelyanov <xemul@parallels.com> wrote:
> While doing the checkpoint-restore in the userspace one need to determine
> whether various kernel objects (like mm_struct-s of file_struct-s) are shared
> between tasks and restore this state.
>
> The 2nd step can for now be solved by using respective CLONE_XXX flags and
> the unshare syscall, while there's currently no ways for solving the 1st one.
>
> One of the ways for checking whether two tasks share e.g. an mm_struct is to
> provide some mm_struct ID of a task to its proc file. The best from the
> performance point of view ID is the object address in the kernel, but showing
> them to the userspace is not good for security reasons.
>
> Thus the object address is XOR-ed with a "random" value of the same size and
> then shown in proc. Providing this poison is not leaked into the userspace then
> ID seem to be safe. The objects for which the IDs are shown are:
>
> * all namespaces living in /proc/pid/ns/
> * open files (shown in /proc/pid/fdinfo/)
> * objects, that can be shared with CLONE_XXX flags (except for namespaces)
>
> Changes since
> v1: * Tejun worried about the single poison value was a weak side - leaking one
> makes all the IDs vulnerable. To address this several poison values - one
> per object type - are introduced. They are stored in a plain array. Tejun,
> is this enough from your POV, or you'd like to see them widely scattered
> over the memory?
> * Pekka proposed to initialized poison values in the late_initcall callback
> * ... and move the code to mm/util.c
>
> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
It doesn't *sound* terribly secure. There might be clever ways in
which userspace can determine the secret mask, dunno. We should ask
evil-minded security people to review this proposal.
Why not simply use a sequence number, increment it each time we create
an mm_struct? On could use an idr tree to prevent duplicates but it
would be simpler and sufficient to make it 64-bit and we never have to
worry about wraparound causing duplicates.
next prev parent reply other threads:[~2011-11-17 20:48 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-17 9:55 [PATCH v2 0/4] Checkpoint/Restore: Show in proc IDs of objects that can be shared between tasks Pavel Emelyanov
2011-11-17 9:56 ` [PATCH 1/4] Routine for generating a safe ID for kernel pointer Pavel Emelyanov
2011-11-17 9:56 ` [PATCH 2/4] proc: Show namespaces IDs in /proc/pid/ns/* files Pavel Emelyanov
2011-11-17 9:56 ` [PATCH 3/4] proc: Show open file ID in /proc/pid/fdinfo/* Pavel Emelyanov
2011-11-17 20:48 ` Andrew Morton [this message]
2011-11-18 9:24 ` [PATCH v2 0/4] Checkpoint/Restore: Show in proc IDs of objects that can be shared between tasks Pavel Emelyanov
2011-11-18 19:07 ` Andrew Morton
2011-11-18 20:03 ` Cyrill Gorcunov
2011-11-18 20:37 ` Andrew Morton
2011-11-18 21:03 ` Cyrill Gorcunov
2011-11-18 21:09 ` Pekka Enberg
2011-11-18 22:10 ` Kyle Moffett
2011-11-18 23:46 ` Tejun Heo
2011-11-19 1:09 ` Kyle Moffett
2011-11-19 5:30 ` Cyrill Gorcunov
2011-11-18 23:38 ` Matt Helsley
2011-11-19 5:35 ` Cyrill Gorcunov
2011-11-19 7:57 ` [kernel-hardening] " Vasiliy Kulikov
2011-11-19 7:57 ` Vasiliy Kulikov
2011-11-19 8:10 ` [kernel-hardening] " Vasiliy Kulikov
2011-11-19 8:10 ` Vasiliy Kulikov
2011-11-19 8:18 ` [kernel-hardening] " Vasiliy Kulikov
2011-11-19 8:18 ` Vasiliy Kulikov
2011-11-19 15:34 ` [kernel-hardening] " Cyrill Gorcunov
2011-11-19 15:34 ` Cyrill Gorcunov
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=20111117124831.688adbeb.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=eric.dumazet@gmail.com \
--cc=glommer@parallels.com \
--cc=gorcunov@openvz.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matthltc@us.ibm.com \
--cc=penberg@kernel.org \
--cc=tj@kernel.org \
--cc=xemul@parallels.com \
/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.