Re: binfmt_elf: use ELF_ET_DYN_BASE only for PIE breaks asan

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2017-08-07 at 11:39 -0700, Kees Cook wrote:
> On Mon, Aug 7, 2017 at 11:26 AM, Kostya Serebryany <kcc@xxxxxxxxxx>
> wrote:
> > +eugenis@ for msan
> > 
> > On Mon, Aug 7, 2017 at 10:33 AM, Kees Cook <keescook@xxxxxxxxxx>
> > wrote:
> > > 
> > > On Mon, Aug 7, 2017 at 10:24 AM, Dmitry Vyukov <dvyukov@xxxxxxxxxx
> > > > wrote:
> > > > The recent "binfmt_elf: use ELF_ET_DYN_BASE only for PIE" patch:
> > > > 
> > > > https://github.com/torvalds/linux/commit/eab09532d40090698b05a07
> > > > c1c87f39fdbc5fab5
> > > > breaks user-space AddressSanitizer. AddressSanitizer makes
> > > > assumptions
> > > > about address space layout for substantial performance gains.
> > > > There
> > > > are multiple people complaining about this already:
> > > > https://github.com/google/sanitizers/issues/837
> > > > https://twitter.com/kayseesee/status/894594085608013825
> > > > https://bugzilla.kernel.org/show_bug.cgi?id=196537
> > > > AddressSanitizer maps shadow memory at [0x00007fff7000-
> > > > 0x10007fff7fff]
> > > > expecting that non-pie binaries will be below 2GB and pie
> > > > binaries/modules will be at 0x55 or 0x7f. This is not the first
> > > > time
> > > > kernel address space shuffling breaks sanitizers. The last one
> > > > was the
> > > > move to 0x55.
> > > 
> > > What are the requirements for 32-bit and 64-bit memory layouts for
> > > ASan currently, so we can adjust the ET_DYN base to work with
> > > existing
> > > ASan?
> > 
> > 
> > 32-bit asan shadow is 0x20000000 - 0x40000000
> > 
> > % clang -fsanitize=address dummy.c -m32 && ASAN_OPTIONS=verbosity=1
> > ./a.out
> > 2>&1 | grep '||'
> > > > `[0x40000000, 0xffffffff]` || HighMem    ||
> > > > `[0x28000000, 0x3fffffff]` || HighShadow ||
> > > > `[0x24000000, 0x27ffffff]` || ShadowGap  ||
> > > > `[0x20000000, 0x23ffffff]` || LowShadow  ||
> > > > `[0x00000000, 0x1fffffff]` || LowMem     ||
> > 
> > %
> 
> For 32-bit, it looks like the new PIE base is fine, yes? 0x000400000UL

Need to consider the ASLR shift which is up to 1M with a default kernel
configuration but up to 256M with the maximum configurable entropy.

On 64-bit, it's a lot larger... and the goal is also tying the stack
base to that so that's a further significant change, increasing the
address space used when the maximum configurable entropy is used.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]
  Powered by Linux