Переполнение буфера на системах с неисполняемым стеком

       

>>> BufferShield или PaX на NT


Пакет BufferShield это достойный конкурент штатному DEP'у, не требующий установки SP2, работающий без аппаратной поддержки со стороны процессора, использующий рандомизацию раскладки адресного пространства и задействующий NX/XD биты, если они есть. Он значительно превосходит DEP по защищенности и атаковать его очень сложно (тем не менее, некоторые лазейки все-таки есть, в частности из-за отсутствия GOT, рандомизация выполняется не полностью, оставляя в памяти значительное количество предсказуемых адресов).

Защищать можно как отдельные приложения (например, пресловутый Internet Explorer), так и установленный определенный диапазон памяти внутри конкретного приложения. Так же поддерживаются и многопроцессорные системы (правда, только для "однополых" процессоров, то есть если один процессор имеет поддержку NX/XD битов, а другой нет, NX/XD биты остаются незадействованными для всех процессоров).

Короче говоря, BufferShield реализует те же самые возможности, что и пакет PaX, фактически являясь его портом на NT. Однако, в отличии от бесплатного PaX'а, BufferShield распространяется на коммерческой основе, а для ознакомления предлагается только 30-дневная пробная версия: 30 days trail http://www.sys-manage.com/sites/D_BuffShld.html;

Рисунок 12 окно настойки BufferShiled'а

основные свойства продукта:

q       распознает выполнение кода на стеке, куче, виртуальной памяти и сегменте данных;

q       запрашивает подтверждение на завершение, если обнаружено переполнение буфера;

q       ведет отчет обнаруженных переполнение в протоколе событий (Windows event log);

q       позволяет включать защиту даже для отдельных частей выбранных приложений (!!!);

q       поддерживает NXбит и задействует его, если доступен (но может работает и без него);

q       поддерживает симметричные многопроцессорные системы (SMP) с однополыми ЦП;

q       рандомизует раскладку адресного пространства (технология ASLR);



Содержание раздела