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: 29+ 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:58 ` 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-13 6:26 ` Vasiliy Kulikov
2011-08-16 9:05 ` Vasiliy Kulikov
2011-08-22 10:17 ` Vasiliy Kulikov
2011-08-22 17:24 ` H. Peter Anvin
2011-08-22 20:14 ` Vasiliy Kulikov
2011-08-22 20:17 ` H. Peter Anvin
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox