Страница 1 из 1

Аналог Pax под Фрю

Добавлено: 2007-09-17 9:44:46
Dfg
Есть ли подобный механизм защиты под фряху?

Re: Аналог Pax под Фрю

Добавлено: 2007-09-17 18:56:06
Alex Keda
а чё это?

Re: Аналог Pax под Фрю

Добавлено: 2007-09-17 22:33:04
Scriptkiller
Тоже не слышал. Тут написано про PaX этот

Re: Аналог Pax под Фрю

Добавлено: 2007-09-20 9:20:36
Dfg
Превентивная защита от атак на переполнение буфера. Очень эффективная. Позволяет отсекать создание бэкдоров и прочего, при ошибках в сетевых сервисах.

Вот кусочек статьи от Криса Касперски для общего образования
В лагере UNIX

Ошибки переполнения не являются «собственностью» Windows. Это общая проблема для всех программ С/С++, родиной которых был и остается UNIX. Уязвимые приложения в изобилии встречаются и там. С ними активно борются путем хитроумных извращений и оригинальных технических решений, о которых мы и собираемся сейчас рассказать.

Начнем с того, что существуют процессорные архитектуры (SPARC, SPARC64, Alpha, HPPA), на которых UNIX имеет неисполняемый стек еще от рождения. Существуют архитектуры, использующие раздельные стеки для хранения адресов возврата и локальных переменных. Подменить адрес возврата на них невозможно, но легко затереть указатель на функцию, при вызове которой управление получит shell-код (правда, передача аргументов представляет собой большую проблему, особенно если они передаются через регистры, тем не менее атаковать такую систему все-таки возможно, пусть и на концептуальном уровне).

На IBM-совместимых машинах LINUX/BSD по умолчанию ведут себя точно так же, как XP без SP2. То есть трактуют r-атрибут как -x-, позволяя исполнять код там, где вздумается. Первой ласточкой, ринувшейся на встречу буре, стал патч от Solar Designer, делающий стек неисполняемым. Хакеров это ничуть не смутило (ведь осталась возможность вызова функций через адрес возврата return-to-libc), но зато помешало многим «честным» программам. В общем, большой популярности это решение не получило.

Неисполняемый стек – это всего лишь одна из защитных мер, которая оправдывает себя только в совокупности с целым комплексом остальных. Так, например, бессмысленно ставить бронированную дверь, если можно залезть через окно. Рассмотрим возможности, которые предоставляет популярный пакет PaX, распространяемый на бесплатной основе вместе с исходными текстами и подробной технической документацией, из которой можно почерпнуть массу интересного.

Первое и главное – PaX не требует специальной поддержи со стороны оборудования и не нуждается в битах NX/XD.
Вместо этого он группирует сегменты, как показано на рис. 2, и устанавливает лимиты так, чтобы они не пересекались. Несомненный плюс такого решения в том, что для защиты от хакеров нам не нужно приобретать новый процессор – это раз.

Shell-код не сможет выделить исполняемый регион в области кучи или стека – это два.

Тоже самое, впрочем, относится и к just-in-time компиляторам, поэтому с совместимостью будут проблемы, которые PaX обходит довольно элегантным путем. При аппаратной поддержке со стороны ЦП (биты NX/XD) он может защищать не только весь процесс целиком, но и его отдельную часть. Допустим, мы имеем приложение, нуждающееся в исполняемом стеке, но не присваивающее x-атрибут явно.

Под Windows мы будем вынуждены занести его в список программ, на которые механизм DEP не распространяется, со всеми вытекающими отсюда последствиями. А PaX позволяет отключить защиту лишь для части стека! Конечно, это снижает иммунитет системы, но не так радикально, как полное отключение DEP. К тому же рандомизация адресов не позволяет shell-коду добраться до этой исполняемой области и использовать ее в своих целях.

Вторым китом является технология рандомизации адресного пространства – Address Space Layout Randomization или сокращенно ASLR. Если при каждом запуске программы непредсказуемым образом менять положение всех сегментов, хакер не сможет определить ни расположение shell-кода, ни адреса API-функций (это утверждение справедливо даже для тех клонах UNIX, в которых вызов APIфункций происходит через прерывание, например в Linux/i386, поскольку прикладные процессы общаются с ядром не напрямую, а через разделяемые библиотеки, придерживающиеся соглашения stdcall, и являющиеся своеобразным аналогом KERNEL32.DLL), следовательно, подмена адреса возврата не дает ничего кроме DoS.

Пакет PaX позволяет рандомизовать основные сегменты ELF-файла (code, data, bss), кучу, библиотечные функции, стек потока, разделяемую память и стек ядра, короче устраивает настоящий хаос, в котором не остается ничего постоянного, за что можно было бы уцепиться. Ну или практически ничего.

Третий кит – PaX «дорабатывает» функцию mprotect так, чтобы назначать x-атрибут могла только система. Никакой прикладной процесс не может изменить атрибуты региона памяти с -x на +x. Также никакой регион памяти не может иметь -x- и -w- атрибуты одновременно.

Пакет PaX портирован на множество систем, в том числе и… под Windows. Существует по меньшей мере два приличных порта для NT – BufferShield (см. одноименную врезку) и StackDefender (http://www.ngsec.com/ngproducts/stackdefender), которые в отличие от штатного DEP действительно защищают компьютер от вторжения, и преодолеть их ну очень трудно.

Другой популярный пакет – Exec Shield (http://people.redhat.com/mingo/exec-shield), входящий в состав Red Hat Enterprise Linux v.3, update 3, также использует неисполняемую кучу/стек, замечательно работая на всем семействе x86 процессоров без NX/XD-битов, и частично рандомизует адресное пространство, произвольным образом изменяя базовый адрес стека, расположение разделяемых библиотек и начало области кучи. Остальная память остается нетронутой, однако для отражения большинства атак и этого оказывается вполне достаточно. Фактически, Exec Shield представляет урезанный вариант PaX и не несет в себе ничего нового.

Еще хуже дела обстоят в OpenBSD. Начиная с версии 3.3 ядро поддерживает механизм W^X (произносится как «W xor X»), который по своему названию предотвращает одновременную установку атрибутов -x- и -w- на любую область памяти, что по замыслу разработчиков должно серьезно озадачить хакеров (http://marc.theaimsgroup.com/?l=openbsd ... 006905&w=2).

На самом деле эта защита элементарно обходится множественным вызовом функции mprotect. Сначала shell-код вызывает mprotect, устанавливая один лишь атрибут записи (если он не был установлен ранее), затем копирует shell-код через memcpy и вызывает mprotect еще раз, сбрасывая атрибут записи и присваивая себе права исполнения. Кстати говоря, в версии 3.3 W^X не работал на x86, поскольку у того отсутствует возможность задания x-атрибута на уровне страниц, однако, начиная с версии 3.4, этот недостаток был исправлен.

Короче говоря, в штатной конфигурации, без установки пакета PaX, все UNIX-подобные системы потенциально уязвимы и допускают выполнение shell-кода по сценарию, описанному в разделе «атаки на DEP».

осторожно, крыс каспэрскы

Добавлено: 2008-11-20 17:00:55
gvy
DfgВот кусочек статьи от Криса Касперски для общего образования
что по замыслу разработчиков должно серьезно озадачить хакеров
Тут такое дело... в другом обсуждении ссылались на этого деятеля как на авторитета, причём в вопросе файловых систем. А вчера в community@altlinux разобрали ссылку на ещё какую-то его же писанину с понтами.

Это всё к чему: есть мнение, что некто пишущий "всерьёз озадачить хакеров" в таком контексте -- не стоит времени на чтение и уж тем более цитирования "для образования".

Re: осторожно, крыс каспэрскы

Добавлено: 2008-11-20 23:20:48
iZEN
gvy писал(а):DfgВот кусочек статьи от Криса Касперски для общего образования
что по замыслу разработчиков должно серьезно озадачить хакеров
Тут такое дело... в другом обсуждении ссылались на этого деятеля как на авторитета, причём в вопросе файловых систем. А вчера в community@altlinux разобрали ссылку на ещё какую-то его же писанину с понтами.

Это всё к чему: есть мнение, что некто пишущий "всерьёз озадачить хакеров" в таком контексте -- не стоит времени на чтение и уж тем более цитирования "для образования".
Крис — прекрасный популяризатор IT-технологий, "выворачивающий код наизнанку".

Советую почитать его статьи в журнале "Системный администратор". :roll:

Re: осторожно, крыс каспэрскы

Добавлено: 2008-11-21 8:42:08
Гость
iZEN писал(а):Советую почитать его статьи в журнале "Системный администратор".
"не читайте советских газет"

Re: Аналог Pax под Фрю

Добавлено: 2008-11-21 13:15:54
zg
Гость писал(а):"не читайте советских газет"
информация бывает лишней только тогда, когда её неверно воспринимаешь, имхо