Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

Безопасность

Подписаться на эту рубрику по RSS

     Функции ASLR очень полезны, но они не гарантируют 100% защиты - не­смотря на то, что применяется рандомизация, теоретически существует вероятность переполнения буфера.

     Так как некорректное изменение памяти, сделанное хакером, приводит к краху приложения, сведения о частых перезапусках сервисов (которые после краха автоматически перезапускаются) говорят о том, что хакер пытается переполнить буфер.

     Для предотвращения возможности изменения хакером размеще­ния памяти в ASLR-защищенном процессе надо задать ограничение на количество перезапусков демона за определенный период времени.

     Для данного может употребляться утилита Segvguard, доступная по адресу: ftp://ftp.pl.openwall.com/misc/segvguard/. Segvguard состоит из двух частей:

Далее...

Установка.

     РаХ не требует пересборки приложений, но, так как реализован в виде патча ядра, требует пересборки самого ядра. РаХ-патч мож­но загрузить с сайта: http://pax.grsecurity.net/, на этом сайте до­ступны версии для ядер 2.4 и 2.6. Загрузите соответствующее ядро с сайта kernel.org, распакуйте его, перейдите в только что созданный каталог и примените РаХ-патч:

# cd /usr/src

# wget http://www.kernel.org/pub/linux/kernel/v.26/linux-2.6.7.bz2

# tar -jxvf linux-2.6.7.bz2

# cd linux-2.6.7

# wget http://pax.grsecurity.net/pax-linux-2.6.7-200406252135.patch

# patch -p0 < pax-linux-2.6.7-200406252135.patch

Далее...

Рандомизация адресного пространства применяется для усложнения про­цесса вычисления расположения в памяти стека и DLL. Вычислить адрес стека и DLL хакеру стало значительно сложнее, чем без рандомизации.

     Если хакер неправильно «угадает» адрес памяти, то приложение будет аварийно завершено - как и без рандомизации. Но когда хакер вторично запустит приложение, адресное пространство будет вторично изменено.

Далее...

Проект РаХ представляется частью большого проекта Grsecurity. РаХ предоставляет защиту памяти, делая стек неисполнимым. В дополнение к этому РаХ предоставляет несколько других важных функций: например рандомизацию размещения адресного про­странства.

Далее...

Libsafe.

Рубрика: Безопасность | Укрепляем Linux
Метки:
Дата: 03/06/2009 14:32:24

Libsafe от Avaya Labs решает проблему переполнения буфера совершенно другим способом. Libsafe предоставляет абсолютно прозрачный метод, не требующий пересборки существующих программ, что представляется ог­ромным преимуществом этого метода.

     Кроме удобства (ведь можно не пересобирать всю систему), до­полнительным преимуществом представляется то, что не обязательны исходные коды программы - ведь исходные коды некоторых программ просто невоз­можно достать, следовательно, их нельзя защитить предыдущим методом.

     Libsafe - это, как понятно из названия, специальная динамически загру­жаемая библиотека, состоящая из двух частей: libsafe и libverify. Обе части могут употребляться независимо друг от друга или же одновременно друг с другом.

Далее...

Проверка границ.

Рубрика: Безопасность | Укрепляем Linux
Метки:
Дата: 01/06/2009 09:13:59

Проверка границ - это процесс проверки индекса массива: выходит ли ин­декс за пределы допустимого диапазона или нет. Например, массив может содержать всего десять значений - с номерами от 0 до 9, а индекс может быть равен 10 - тогда он выходит за пределы диапазона. Проверка границ позволяет определить возможные попытки переполнения буфера.

Далее...

Защита стека.

Рубрика: Безопасность | Укрепляем Linux
Метки:
Дата: 01/06/2009 08:54:12

Stack-Smashing Protector (известный как ProPolice) - это GCC-патч, сделанный компанией IBM. SPP использует технику проверочных значений, как и StackGuard. SPP дает ряд существенных улучшений этой техники по сравнению со StackGuard.

     Во-первых, изменилось месторасположение проверочного значения. Теперь оно находится не после адреса возврата, как в случае с StackGuard, а после указателя кадра (Frame Pointer, FP). Если проверочное значение помещается сразу после RET, указатель FP и локальные переменные функции могут быть перезаписаны без изменения проверочного зна­чения (оно применяется только для защиты RET). SPP помещает проверочное значение после FP, чем обеспечивает его защиту, а также изме­няет порядок буфера и локальных переменных

Далее...