On Fri, Jul 14, 2006 at 12:26:29AM +0400, Dmitry V. Levin wrote: > > Рандомизация на самом деле происходит не per-process, а per-exec. > > Это значит, что в схеме с privilege separation, когда главный процесс > > форкается и сбрасывает права, карта адресов у каждого детёныша будет > > одна и та же. Если хакер не угадывает нужного адреса с первого раза, > > то детёныш мрёт, но это является ненулевой информацией для последующих > > попыток. > > > > То есть если у детёныша нет прослойки из exec'а, тогда > > последовательность угадываний имеет смысл. От рандомизации в основном > > выигрывают "суперсерверы" типа inetd. > > По этой причине, кстати, в новом openssh сделан reexec - детёныш > перезапускает себя (/proc/self/exe) перед началом работы. Зачем тогда reexec? Можно вынести клиентский код в отдельный бинарь и сделать exec. Впрочем, я не знаю, насколько архитектура openssh это допускает. Мне нравится как qmail сделан, там всё построено на "маленьких exec'ах". Кстати, это наводит на мысль, что подобные вещи нужно писать на некоем подобии шелла, а не на Си. :)