lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 9 Oct 2013 18:27:22 +0100
From:	Andy Lutomirski <luto@...capital.net>
To:	Djalal Harouni <tixxdz@...ndz.org>
Cc:	"Eric W. Biederman" <ebiederm@...ssion.com>,
	Kees Cook <keescook@...omium.org>,
	Al Viro <viro@...iv.linux.org.uk>,
	Andrew Morton <akpm@...ux-foundation.org>,
	Linus Torvalds <torvalds@...ux-foundation.org>,
	Ingo Molnar <mingo@...nel.org>,
	"Serge E. Hallyn" <serge.hallyn@...ntu.com>,
	Cyrill Gorcunov <gorcunov@...nvz.org>,
	David Rientjes <rientjes@...gle.com>,
	LKML <linux-kernel@...r.kernel.org>,
	Linux FS Devel <linux-fsdevel@...r.kernel.org>,
	"kernel-hardening@...ts.openwall.com" 
	<kernel-hardening@...ts.openwall.com>,
	Djalal Harouni <tixxdz@...il.com>
Subject: Re: [PATCH v2 2/9] procfs: add proc_allow_access() to check if file's
 opener may access task

On Wed, Oct 9, 2013 at 11:54 AM, Djalal Harouni <tixxdz@...ndz.org> wrote:
> On Mon, Oct 07, 2013 at 02:41:33PM -0700, Andy Lutomirski wrote:
>> On Sat, Oct 5, 2013 at 6:23 AM, Djalal Harouni <tixxdz@...ndz.org> wrote:
>> > On Fri, Oct 04, 2013 at 03:17:08PM -0700, Andy Lutomirski wrote:
>> >>
>> >> Exactly.  Hence the NAK.
>> > But Having two LSM Hooks there is really not practical!
>>
>> It'd doable *if* it turns out that it's the right solution.
>>
>> But revoke seems much more likely to be simple, comprehensible, and
>> obviously correct to me.
> Yes Andy, I agree, revoke is much better!
>
> But it will not handle or fix all the situations, as I've said what if
> revoke is not invloved here? there is no an execve from the target task!
>
>
> Remember:
> /proc/*/{stat,maps} and perhaps others have 0444 and don't have ptrace
> checks during ->open() to not break some userspace... especially
> /proc/*/stat file

For /proc/*/stat: check permissions when opening.  If the opener
passes the ptrace check, set a flag in file->private_data indicating
that this struct file has permission.

For /proc/*/maps: either fail the open if the check fails or set a
flag that causes the resulting struct file to be useless.

>
>
> So you will have an fd on these privileged files!
>
> Current will execve a privileged process, and pass ptrace_may_access()
> checks during ->read()...
>
> Here revoke is not involved at all! so it will not fix these files and
> they will continue to be vulnerable.
>
> IMO to fix them, we must have the correct ptrace_may_access() check and
> this involves: current doing an execve + current's cred
>
>
>
> BTW, Andy we already return 0 (end of file) for /proc/*/mem
>   ->read()
>     ->mem_read()
>       ->mem_rw()
>         if (!atomic_inc_not_zero(&mm->mm_users))
>                 return 0
>
> So can this be considered some sort of simple revoke?
>

Apparently not.  I haven't looked at the code, but I just tried it.
The fd from /proc/<pid>/maps survives an exec of the process it's
pointing at.  That means that either the mm changing has no effect on
the struct file or that an unshared mm survives exec.

--Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists