Re: git: b014e0f15bc7 - main - Enable ASLR by default for 64-bit executables

From: Ed Maste <emaste_at_freebsd.org>
Date: Thu, 18 Nov 2021 15:28:52 UTC
On Wed, 17 Nov 2021 at 00:40, Shawn Webb <shawn.webb@hardenedbsd.org> wrote:
>
> It also doesn't make much sense to toggle AS{L}R for the different
> parts of an executable image. AS{L}R is an "all or nothing" thing.

There's not toggles for different parts of an executable image.

The aslr_enable and pie_aslr_enable sysctls are for two different
types of ELF objects. As for aslr_honor_sbrk,  sbrk(2) is a legacy
memory management interface - from the man page:

     The brk() and sbrk() functions are legacy interfaces from before the
     advent of modern virtual memory management.  They are deprecated and not
     present on the arm64 or riscv architectures.  The mmap(2) interface
     should be used to allocate pages instead.

     The brk() and sbrk() functions are used to change the amount of memory
     allocated in a process's data segment.  They do this by moving the
     location of the “break”.  The break is the first address after the end of
     the process's uninitialized data segment (also known as the “BSS”).

aslr_honor_sbrk determines whether the kernel reserves a region for
brk/sbrk to grow into. If set to 1 the kernel reserves this area, and
randomly-addressed mappings will not be placed there.