From: Vasiliy Kulikov <segoon@openwall.com>
To: kernel-hardening@lists.openwall.com
Subject: Re: [kernel-hardening] [RFC] x86, mm: start mmap allocation for libs from low addresses
Date: Mon, 5 Sep 2011 16:46:47 +0400 [thread overview]
Message-ID: <20110905124647.GA10247@albatros> (raw)
In-Reply-To: <20110903235728.GD29169@openwall.com>
Solar,
On Sun, Sep 04, 2011 at 03:57 +0400, Solar Designer wrote:
> On Sat, Sep 03, 2011 at 03:18:49PM +0400, Vasiliy Kulikov wrote:
> > On Fri, Sep 02, 2011 at 22:29 +0400, Solar Designer wrote:
> > > On Thu, Aug 25, 2011 at 09:19:34PM +0400, Vasiliy Kulikov wrote:
> > > > additionally overwrite function arguments, which are located after the
> > > > function address on the stack. The attacker's best bet may be to find
> > > > an entry point not at function boundary that sets registers and then
> > > > proceeds with or branches to the desired library code. The easiest way
> > > > to set registers and branch would be a function epilogue -
> > > > pop/pop/.../ret - but then there's the difficulty in passing the address
> > > > to ret to (we have just one NUL and we've already used it to get to this
> > > > code). Similarly, even via such pop's we can't pass an argument that
> > > > contains a NUL in it - e.g., the address of "/bin/sh" in libc (it
> > > > contains a NUL most significant byte too) or a zero value for root's
> > > > uid.
> > >
> > > The above was partially flawed logic on my part - as written above
> > > (without further detail), the pop/pop/.../ret thing doesn't apply
> > > because those pop's would read stack right after the just-used return
> > > address - that is, the same stack locations that we presumably could not
> > > write to in order to pass the arguments in a more straightforward
> > > fashion. So this trick would be of no help, and thus its other
> > > limitations would be of no relevance.
> >
> > Why not?
>
> I am not sure what exactly your "why not" applies to.
Hmm, yes, looks like I've lost the thread some time ago :( A good
description definitely needs much longer and scrupulous analysis.
Probably there is a public paper with a review/analysis/benefits of
ASCII-armor that we're able to refer in the patch description? I cannot
find any rigorous paper, unfortunately.
> > > > If CONFIG_VM86=y, the first megabyte is excluded from the potential
> > > > range for mmap allocations as it might be used by vm86 code. If
> > > > CONFIG_VM86=n, the allocation begins from the mmap_min_addr. Regardless
> > > > of CONFIG_VM86 the base address is randomized with the same entropy size
> > > > as mm->mmap_base.
> > >
> > > OK. Shouldn't CONFIG_VM86 be a sysctl, though?
> >
> > This is not a hardening setting that was present in -ow, but an existing
> > config to disable vm86/vm86_old at the compile time. It was added for
> > EMBEDDED.
>
> Oh, I was not aware of that.
>
> solar@host:~/kernel/mainline/linux-3.0.4 $ fgrep -rl CONFIG_VM86 .
> ./arch/x86/kernel/Makefile
> ./arch/x86/kernel/entry_32.S
> ./arch/x86/include/asm/vm86.h
> ./arch/x86/include/asm/processor-flags.h
>
> Looks like there's no Kconfig option for this - perhaps add it with a
> separate patch?
Since 2.6.x CONFIG_ prefix is not used in Kconfig files:
$ grep -w VM86 arch/x86/Kconfig
config VM86
bool "Enable VM86 support" if EXPERT
Thanks,
--
Vasiliy
next prev parent reply other threads:[~2011-09-05 12:46 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-12 10:29 [kernel-hardening] [RFC] x86, mm: start mmap allocation for libs from low addresses Vasiliy Kulikov
2011-08-12 10:29 ` Vasiliy Kulikov
2011-08-12 10:29 ` Vasiliy Kulikov
2011-08-12 10:58 ` [kernel-hardening] " Solar Designer
2011-08-12 11:05 ` Vasiliy Kulikov
2011-08-25 17:19 ` Vasiliy Kulikov
2011-08-25 17:39 ` Solar Designer
2011-09-02 18:29 ` Solar Designer
2011-09-03 11:18 ` Vasiliy Kulikov
2011-09-03 23:57 ` Solar Designer
2011-09-05 12:46 ` Vasiliy Kulikov [this message]
2011-09-06 5:05 ` Solar Designer
2011-09-07 9:09 ` Vasiliy Kulikov
2011-09-07 9:30 ` Solar Designer
2011-09-07 9:34 ` Vasiliy Kulikov
2011-09-07 9:43 ` Solar Designer
2011-09-07 9:55 ` Vasiliy Kulikov
2011-09-07 10:16 ` Solar Designer
2011-09-07 11:01 ` Vasiliy Kulikov
2011-09-02 23:34 ` Solar Designer
2011-09-03 12:12 ` Vasiliy Kulikov
2011-09-03 23:40 ` Solar Designer
2011-09-04 7:21 ` Vasiliy Kulikov
2011-08-12 23:19 ` [kernel-hardening] " H. Peter Anvin
2011-08-12 23:19 ` H. Peter Anvin
2011-08-12 23:19 ` H. Peter Anvin
2011-08-13 6:26 ` [kernel-hardening] " Vasiliy Kulikov
2011-08-13 6:26 ` Vasiliy Kulikov
2011-08-13 6:26 ` Vasiliy Kulikov
2011-08-16 9:05 ` [kernel-hardening] " Vasiliy Kulikov
2011-08-16 9:05 ` Vasiliy Kulikov
2011-08-16 9:05 ` Vasiliy Kulikov
2011-08-22 10:17 ` [kernel-hardening] " Vasiliy Kulikov
2011-08-22 10:17 ` Vasiliy Kulikov
2011-08-22 10:17 ` Vasiliy Kulikov
2011-08-22 17:24 ` [kernel-hardening] " H. Peter Anvin
2011-08-22 17:24 ` H. Peter Anvin
2011-08-22 17:24 ` H. Peter Anvin
2011-08-22 20:14 ` [kernel-hardening] " Vasiliy Kulikov
2011-08-22 20:14 ` Vasiliy Kulikov
2011-08-22 20:14 ` Vasiliy Kulikov
2011-08-22 20:17 ` [kernel-hardening] " H. Peter Anvin
2011-08-22 20:17 ` H. Peter Anvin
2011-08-22 20:17 ` H. Peter Anvin
2011-08-23 6:41 ` [kernel-hardening] " Vasiliy Kulikov
2011-08-23 6:41 ` Vasiliy Kulikov
2011-08-23 6:41 ` Vasiliy Kulikov
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=20110905124647.GA10247@albatros \
--to=segoon@openwall.com \
--cc=kernel-hardening@lists.openwall.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.