From: Ilya Matveychikov <matvejchikov@gmail.com>
To: Al Viro <viro@ZenIV.linux.org.uk>
Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH] ksys_mount: check for permissions before resource allocation
Date: Tue, 5 Jun 2018 16:07:15 +0400 [thread overview]
Message-ID: <0F38EDA5-DEC3-48A1-9375-47949C26DAE8@gmail.com> (raw)
In-Reply-To: <20180605115340.GO30522@ZenIV.linux.org.uk>
> On Jun 5, 2018, at 3:53 PM, Al Viro <viro@ZenIV.linux.org.uk> wrote:
>
> On Tue, Jun 05, 2018 at 03:35:55PM +0400, Ilya Matveychikov wrote:
>>
>>> On Jun 5, 2018, at 3:26 PM, Al Viro <viro@ZenIV.linux.org.uk> wrote:
>>>>
>>>>> On Jun 5, 2018, at 6:00 AM, Ilya Matveychikov <matvejchikov@gmail.com> wrote:
>>>>>
>>>>> Early check for mount permissions prevents possible allocation of 3
>>>>> pages from kmalloc() pool by unpriveledged user which can be used for
>>>>> spraying the kernel heap.
>>>
>>> I'm sorry, but there are arseloads of unpriveleged syscalls that do the same,
>>> starting with read() from procfs files. So what the hell does it buy?
>>
>> Means that if all do the same shit no reason to fix it? Sounds weird...
>
> Fix *what*? You do realize that there's no permission checks to stop e.g.
> stat(2) from copying the pathname in, right? With user-supplied contents,
> even...
>
> If you depend upon preventing kmalloc'ed temporary allocations filled
> with user-supplied data, you are screwed, plain and simple. It really can't
> be prevented, in a lot of ways that are much less exotic than mount(2).
> Most of syscall arguments are copied in, before we get any permission
> checks. It does happen and it will happen - examining them while they are
> still in userland is a nightmare in a lot of respects, starting with
> security.
I agree that it’s impossible to completely avoid this kind of allocations
and examining data in user-land will be the bigger problem than copying
arguments to the kernel. But aside of that what’s wrong with the idea of
having the permission check before doing any kind of work?
BTW, sys_umount() has this check in the right place - before doing anything.
So, why not to have the same logic for mount/umount?
next prev parent reply other threads:[~2018-06-05 12:07 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-05 2:00 Ilya Matveychikov
2018-06-05 6:59 ` Ilya Matveychikov
2018-06-05 11:26 ` Al Viro
2018-06-05 11:35 ` Ilya Matveychikov
2018-06-05 11:53 ` Al Viro
2018-06-05 12:07 ` Ilya Matveychikov [this message]
2018-06-05 12:28 ` David Sterba
2018-06-05 12:42 ` Ilya Matveychikov
2018-06-05 12:34 ` Al Viro
2018-06-05 19:56 ` Eric W. Biederman
2018-06-06 9:32 ` Ilya Matveychikov
2018-06-06 14:22 ` Eric W. Biederman
2018-06-06 15:26 ` Ilya Matveychikov
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=0F38EDA5-DEC3-48A1-9375-47949C26DAE8@gmail.com \
--to=matvejchikov@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@ZenIV.linux.org.uk \
/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®