27.02.2011 22:32, "Tóth Attila" пишет: > More reliable? Interesting. Do you have a link about this? > Apart from older systems 32bit will be with us at least because of the ARM > architecture.
http://grsecurity.net/pipermail/grsecurity/2010-April/001024.html - from here: > this is also where the similarities end :), so let's look at the bad stuff > now. UDEREF/amd64 doesn't ensure that the (legitimate) userland accessor > functions cannot actually access kernel memory when only userland is allowed > (some in-kernel users of certain syscalls can temporarily access kernel memory > as userland, and that is enforced on UDEREF/i386 but not on amd64). so if > there's a bug where userland can trick the kernel into accessing a userland > pointer that actually points to kernel space, it'll succeed, unlike on i386. > > the other bad thing is the presence of the userland shadow area. this has > two consequences: 1. the userland address space size is smaller under UDEREF > (42 vs. 47 bits, with corresponding reduction of ASLR of course), 2. this > shadow area is always mapped so kernel code accidentally accessing its range > may not oops on it and can be exploited (such accesses can usually happen only > if an exploit can make the kernel dereference arbitrary addresses in which > case the presence of this area is the least of your concerns though). > > what about performance? well, 'it depends', in particular it depends on the > amount of user/kernel transitions of your workload as that's where the extra > code really hits (it's basically a TLB flush and two CR0 writes if you have > KERNEXEC as well, say 600 cycles + TLB repopulation time). on a simple > compilation test i get these times: