On Sat, Sep 8, 2018 at 4:31 PM, Shawn Webb <shawn.w...@hardenedbsd.org> wrote:
>
> I've read through a previous discussion in 2012 about golang's use of
> deterministic memory allocations here:
> https://groups.google.com/forum/#!msg/golang-nuts/Jd9tlNc6jUE/qp2oyfEEfjQJ
>
> Back then, -buildmode=pie didn't exist back then, so I figured a
> revisit of the topic might be warranted.
>
> Go 1.11 introduced -buildmode=pie for FreeBSD, which HardenedBSD is
> able to take advantage of, given HBSD's PaX ASLR implementation.
> HardenedBSD is a hardened derivative of FreeBSD.
>
> When applying -buildmode=pie with gitea, I wanted to verify that
> golang was able to take full advantage of HardenedBSD's robust ASLR
> implementation. I noticed a fixed mapping at 0xc000000000. I restarted
> the process, looked at the memory mappings again (`procstat -v $PID`)
> and saw 0xc000000000 again. Grepping through the golang 1.11 codebase
> revealed that Go allocates its heap at a fixed address, starting at
> 0xc000000000.
>
> With the heap being allocated at a fixed mapping, golang applications
> are still not able to really utilize ASLR. Thus, -buildmode=pie is
> ineffectual.
>
> Given that the reason to implement PIE support is to take advantage of
> ASLR, I'm curious if perhaps updating the heap management code for
> ASLR support was overlooked. Or perhaps it wasn't, and this is
> deliberate. Or perhaps a totally different reason. Either way, could
> someone shed some light on this?

[ My apologies for the double reply; mail header was wrong somehow. ]

Well, -buildmode=pie does what it says and what is documented: it
gives you a position independent executable.  But it's a fair point
that the current runtime always asks the kernel to place the heap at
the same address.  I encourage you to open an issue rat
https://golang.org/issue equesting the runtime to add some randomness
to the heap location.  Thanks.

Ian

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to