From mboxrd@z Thu Jan 1 00:00:00 1970 From: Markus Trippelsdorf Subject: Re: x86: PIE support and option to extend KASLR randomization Date: Fri, 22 Sep 2017 06:24:44 +0200 Message-ID: <20170922042444.GA235@x4> References: <20170817080920.5ljlkktngw2cisfg@gmail.com> <20170825080443.tvvr6wzs362cjcuu@gmail.com> <20170921155919.skpyt7dutod5ul4t@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: Nicolas Pitre , Peter Zijlstra , Michal Hocko , Len Brown , Radim =?utf-8?B?S3LEjW3DocWZ?= , Peter Zijlstra , Catalin Marinas , Christopher Li , Alexei Starovoitov , David Howells , Paul Gortmaker , Pavel Machek , "H . Peter Anvin" , Kernel Hardening , Christoph Lameter , Ingo Molnar , Kees Cook , the arch/x86 maintainers , Herbert Xu , Daniel Borkmann , Matthew Wilcox , Peter Foley , Joerg Roedel Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" List-Id: linux-crypto.vger.kernel.org T24gMjAxNy4wOS4yMSBhdCAxNDoyMSAtMDcwMCwgVGhvbWFzIEdhcm5pZXIgd3JvdGU6Cj4gT24g VGh1LCBTZXAgMjEsIDIwMTcgYXQgOToxMCBBTSwgQXJkIEJpZXNoZXV2ZWwKPiA8YXJkLmJpZXNo ZXV2ZWxAbGluYXJvLm9yZz4gd3JvdGU6Cj4gPgo+ID4gT24gMjEgU2VwdGVtYmVyIDIwMTcgYXQg MDg6NTksIEluZ28gTW9sbmFyIDxtaW5nb0BrZXJuZWwub3JnPiB3cm90ZToKPiA+ID4KPiA+ID4g KCBTb3JyeSBhYm91dCB0aGUgZGVsYXkgaW4gYW5zd2VyaW5nIHRoaXMuIEkgY291bGQgYmxhbWUg dGhlIGRlbGF5IG9uIHRoZSBtZXJnZQo+ID4gPiAgIHdpbmRvdywgYnV0IGluIHJlYWxpdHkgSSd2 ZSBiZWVuIHByb2NyYXN0aW5hdGluZyB0aGlzIGlzIGR1ZSB0byB0aGUgcGVybWFuZW50LAo+ID4g PiAgIG5vbi10cml2aWFsIGltcGFjdCBQSUUgaGFzIG9uIGdlbmVyYXRlZCBDIGNvZGUuICkKPiA+ ID4KPiA+ID4gKiBUaG9tYXMgR2FybmllciA8dGhnYXJuaWVAZ29vZ2xlLmNvbT4gd3JvdGU6Cj4g PiA+Cj4gPiA+PiAxKSBQSUUgc29tZXRpbWUgbmVlZHMgdHdvIGluc3RydWN0aW9ucyB0byByZXBy ZXNlbnQgYSBzaW5nbGUKPiA+ID4+IGluc3RydWN0aW9uIG9uIG1jbW9kZWw9a2VybmVsLgo+ID4g Pgo+ID4gPiBXaGF0IGFnYWluIGlzIHRoZSB0eXBpY2FsIGZyZXF1ZW5jeSBvZiB0aGlzIG9jY3Vy cmluZyBpbiBhbiB4ODYtNjQgZGVmY29uZmlnCj4gPiA+IGtlcm5lbCwgd2l0aCB0aGUgdmVyeSBs YXRlc3QgR0NDPwo+ID4gPgo+ID4gPiBBbHNvLCB0byBtYWtlIHN1cmU6IHdoaWNoIHVud2luZGVy IGRpZCB5b3UgdXNlIGZvciB5b3VyIG1lYXN1cmVtZW50cywKPiA+ID4gZnJhbWUtcG9pbnRlcnMg b3IgT1JDPyBQbGVhc2UgdXNlIE9SQyBvbmx5IGZvciBmdXR1cmUgbnVtYmVycywgYXMKPiA+ID4g ZnJhbWUtcG9pbnRlcnMgaXMgb2Jzb2xldGUgZnJvbSBhIHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50 IFBPVi4KPiA+ID4KPiA+ID4+IDIpIEdDQyBkb2VzIG5vdCBvcHRpbWl6ZSBzd2l0Y2hlcyBpbiBQ SUUgaW4gb3JkZXIgdG8gcmVkdWNlIHJlbG9jYXRpb25zOgo+ID4gPgo+ID4gPiBIb3BlZnVsbHkg dGhpcyBjYW4gZWl0aGVyIGJlIGZpeGVkIGluIEdDQyBvciBhdCBsZWFzdCBpbmZsdWVuY2VkIHZp YSBhIGNvbXBpbGVyCj4gPiA+IHN3aXRjaCBpbiB0aGUgZnV0dXJlLgo+ID4gPgo+ID4KPiA+IFRo ZXJlIGFyZSBzb21ld2hhdCByZWxhdGVkIGNvbmNlcm5zIGluIHRoZSBBUk0gd29ybGQsIHNvIGl0 IHdvdWxkIGJlCj4gPiBnb29kIGlmIHdlIGNvdWxkIHdvcmsgd2l0aCB0aGUgR0NDIGRldmVsb3Bl cnMgdG8gZ2V0IGEgbW9yZSBoaWdoIGxldmVsCj4gPiBhbmQgYXJjaCBuZXV0cmFsIGNvbW1hbmQg bGluZSBvcHRpb24gKC1ta2VybmVsLXBpZT8gc291bmRzIHl1bW15ISkKPiA+IHRoYXQgc3RvcHMg dGhlIGNvbXBpbGVyIGZyb20gbWFraW5nIGluZmVyZW5jZXMgdGhhdCBvbmx5IGhvbGQgZm9yCj4g PiBzaGFyZWQgbGlicmFyaWVzIGFuZC9vciBvdGhlciBob3N0ZWQgZXhlY3V0YWJsZXMgKEdPVCBp bmRpcmVjdGlvbnMsCj4gPiBhdm9pZGluZyB0ZXh0IHJlbG9jYXRpb25zIGV0YykuIFRoYXQgd2F5 LCB3ZSB3aWxsIGFsc28gYmUgYWJsZSB0byBkcm9wCj4gPiB0aGUgJ2hpZGRlbicgdmlzaWJpbGl0 eSBvdmVycmlkZSBhdCBzb21lIHBvaW50LCB3aGljaCB3ZSBjdXJyZW50bHkKPiA+IG5lZWQgdG8g cHJldmVudCB0aGUgY29tcGlsZXIgZnJvbSByZWRpcmVjdGluZyBhbGwgZ2xvYmFsIHN5bWJvbAo+ ID4gcmVmZXJlbmNlcyB2aWEgZW50cmllcyBpbiB0aGUgR09ULgo+IAo+IE15IHBsYW4gd2FzIHRv IGFkZCBhIC1tdGxzLXJlZz08ZnN8Z3M+IHRvIHN3aXRjaCB0aGUgZGVmYXVsdCBzZWdtZW50Cj4g cmVnaXN0ZXIgZm9yIHN0YWNrIGNvb2tpZXMgYnV0IEkgY2FuIHNlZSBncmVhdCBiZW5lZml0cyBp biBoYXZpbmcgYQo+IG1vcmUgZ2VuZXJhbCBrZXJuZWwgZmxhZyB0aGF0IHdvdWxkIGFsbG93IHRv IGdldCByaWQgb2YgdGhlIEdPVCBhbmQKPiBQTFQgd2hlbiB5b3UgYXJlIGJ1aWxkaW5nIHBvc2l0 aW9uIGluZGVwZW5kZW50IGNvZGUgZm9yIHRoZSBrZXJuZWwuIEl0Cj4gY291bGQgYWxzbyBpbmNs dWRlIG9wdGltaXphdGlvbnMgbGlrZSBmb2xkaW5nIHN3aXRjaCB0YWJsZXMgZXRjLi4uCj4gCj4g U2hvdWxkIHdlIHN0YXJ0IGEgc2VwYXJhdGUgZGlzY3Vzc2lvbiBvbiB0aGF0PyBBbnlvbmUgdGhh dCB3b3VsZCBiZQo+IG1vcmUgZXhwZXJpZW5jZWQgdGhhbiBJIHRvIHB1c2ggdGhhdCB0byBnY2Mg JiBjbGFuZyB1cHN0cmVhbT8KCkp1c3Qgb3BlbiBhIGdjYyBidWcuIFNlZQpodHRwczovL2djYy5n bnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD04MTcwOCBhcyBhbiBleGFtcGxlLgoKLS0g Ck1hcmt1cwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Fri, 22 Sep 2017 06:24:44 +0200 From: Markus Trippelsdorf Message-ID: <20170922042444.GA235@x4> References: <20170817080920.5ljlkktngw2cisfg@gmail.com> <20170825080443.tvvr6wzs362cjcuu@gmail.com> <20170921155919.skpyt7dutod5ul4t@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: [kernel-hardening] Re: x86: PIE support and option to extend KASLR randomization To: Thomas Garnier Cc: Ard Biesheuvel , Ingo Molnar , Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Arnd Bergmann , Matthias Kaehlcke , Boris Ostrovsky , Juergen Gross , Paolo Bonzini , Radim =?utf-8?B?S3LEjW3DocWZ?= , Joerg Roedel , Tom Lendacky , Andy Lutomirski , Borislav Petkov , Brian Gerst , "Kirill A . Shutemov" , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Tejun Heo , Christoph Lameter , Paul Gortmaker , Chris Metcalf , Andrew Morton , "Paul E . McKenney" , Nicolas Pitre , Christopher Li , "Rafael J . Wysocki" , Lukas Wunner , Mika Westerberg , Dou Liyang , Daniel Borkmann , Alexei Starovoitov , Masahiro Yamada , Steven Rostedt , Kees Cook , Rik van Riel , David Howells , Waiman Long , Kyle Huey , Peter Foley , Tim Chen , Catalin Marinas , Michal Hocko , Matthew Wilcox , "H . J . Lu" , Paul Bolle , Rob Landley , Baoquan He , Daniel Micay , the arch/x86 maintainers , Linux Crypto Mailing List , LKML , xen-devel , kvm list , Linux PM list , linux-arch , Sparse Mailing-list , Kernel Hardening , Linus Torvalds , Peter Zijlstra , Borislav Petkov List-ID: On 2017.09.21 at 14:21 -0700, Thomas Garnier wrote: > On Thu, Sep 21, 2017 at 9:10 AM, Ard Biesheuvel > wrote: > > > > On 21 September 2017 at 08:59, Ingo Molnar wrote: > > > > > > ( Sorry about the delay in answering this. I could blame the delay on the merge > > > window, but in reality I've been procrastinating this is due to the permanent, > > > non-trivial impact PIE has on generated C code. ) > > > > > > * Thomas Garnier wrote: > > > > > >> 1) PIE sometime needs two instructions to represent a single > > >> instruction on mcmodel=kernel. > > > > > > What again is the typical frequency of this occurring in an x86-64 defconfig > > > kernel, with the very latest GCC? > > > > > > Also, to make sure: which unwinder did you use for your measurements, > > > frame-pointers or ORC? Please use ORC only for future numbers, as > > > frame-pointers is obsolete from a performance measurement POV. > > > > > >> 2) GCC does not optimize switches in PIE in order to reduce relocations: > > > > > > Hopefully this can either be fixed in GCC or at least influenced via a compiler > > > switch in the future. > > > > > > > There are somewhat related concerns in the ARM world, so it would be > > good if we could work with the GCC developers to get a more high level > > and arch neutral command line option (-mkernel-pie? sounds yummy!) > > that stops the compiler from making inferences that only hold for > > shared libraries and/or other hosted executables (GOT indirections, > > avoiding text relocations etc). That way, we will also be able to drop > > the 'hidden' visibility override at some point, which we currently > > need to prevent the compiler from redirecting all global symbol > > references via entries in the GOT. > > My plan was to add a -mtls-reg= to switch the default segment > register for stack cookies but I can see great benefits in having a > more general kernel flag that would allow to get rid of the GOT and > PLT when you are building position independent code for the kernel. It > could also include optimizations like folding switch tables etc... > > Should we start a separate discussion on that? Anyone that would be > more experienced than I to push that to gcc & clang upstream? Just open a gcc bug. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81708 as an example. -- Markus