I don't think Gentoo submitted it upstream yet, I can ask about it.

PIC fixes are there because they create tons of TEXTRELs.  Besides the
performance issue they have certain implications with certain hardened
systems; PaX will need to allow ELF Text Relocations, and SELinux won't
be able to apply the execmod restriction.

You're quite right that for Ubuntu this is basically just performance
(at this stage).  To that end here's the issues I'm aware of:

Performance:
 - TEXTRELs require memory to be mprotect()ed writable, then changed, then 
mprotect()ed executable again.  This takes time.
 - TEXTRELs are in memory that is normally shared; when the relocations occur, 
they're often in isolated memory pages, and cause copy-on-write to occur.  This 
takes  a lot of time.
 - Program memory is typically shared, minus the GOT which is a couple pages 
long and gets relocated (it's data, and it's all in one place, so it's low 
overhead); when we start applying TEXTRELs, other pages of program text wind up 
being private, so we start using more memory.

Security:
 - With a normal system, no security issues.
 - With SELinux, execmod can't be applied.
 - With PaX, you can configure the kernel to detect and allow TEXTRELs.  An 
attacker breaking ASLR can return to mmap(); map in a library with a TEXTREL 
(triggering the detection); and then have permission to mprotect() that 
library's text writable, then back to executable, exactly ONCE.  The sequence 
ret-to-mprotect(), ret-to-memcpy(), ret-to-mprotect(), ret-to-shellcode can be 
used then to inject code into the protected process.

-- 
PIC fix for libdv
https://launchpad.net/bugs/57314

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to