On Thu, Jul 13, 2006 at 01:01:05PM +0400, Dmitry V. Levin wrote: > On Thu, Jul 13, 2006 at 10:14:20AM +0300, Michael Shigorin wrote: > > Здравствуйте. > > Есть маленький вопрос по поводу http://lwn.net/Articles/189546/ > > Предварительно следует ознакомиться с Дреперровской статьёй > (http://people.redhat.com/drepper/nonselsec.pdf "ELF Data Hardening"). Типа круто. Я только что понял, зачем нужны PIE. У разделяемых библиотек появляется ещё одно преимущество по сравнению со статическими библиотеками, по части security: если ядро поддерживает рандомизацию адресов загрузки разделяемых библиотек, то атаки типа return-to-libc осуществить гораздо сложнее. С другой стороны, Дреппер как бы немного лжот вот в каком отношении. Рандомизация на самом деле происходит не per-process, а per-exec. Это значит, что в схеме с privilege separation, когда главный процесс форкается и сбрасывает права, карта адресов у каждого детёныша будет одна и та же. Если хакер не угадывает нужного адреса с первого раза, то детёныш мрёт, но это является ненулевой информацией для последующих попыток. То есть если у детёныша нет прослойки из exec'а, тогда последовательность угадываний имеет смысл. От рандомизации в основном выигрывают "суперсерверы" типа inetd.