Переполнение стэка в Linux

Изображение пользователя volkodav.

Сегодня на лекции препод объяснял защиту от переполнения стэка в Windows. Параллельно рассказал про структура стэка Windows и заветный битик DEP, который по умолчанию выключен, и который не дает выполнять что-либо в стеке, равно как и писать в него. Сказал, что Windows использует flat-модель,когда на все процессы отводится один 32ухразрядный сегмент. Я спросил по поводу Линукс. На что он ответил, что Линь использует ту же flat-модель. Так как тема лекции была переполнение стэка, то он объяснил, что и в Линукс есть этот баг. Пошарил в инете, нашел эту статью, где автор наглядно показывает, что к чему. Статья старая, но вопрос актуальный: неужели до сих пор в безопасной ОС Linux не встроили защиту от переполнения стэка?

P.S. буду благодарен за грамотную, не старю статью по теме, чтобы был повод для беседы с преподавателем.

0
volkodav - 17 Ноябрь, 2009 - 10:28
Изображение пользователя volkodav.

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

Сама статья ссылка. Не понял только какого года.

0
Fatalist - 17 Ноябрь, 2009 - 11:58
Изображение пользователя Fatalist.

Цитата из Википедии:
Существуют две системы: StackGuard и Stack-Smashing Protector (старое название — ProPolice), обе являются расширениями компилятора gcc. Начиная с gcc-4.1-stage2, SSP был интегрирован в основной дистрибутив компилятора. Gentoo Linux и OpenBSD включают SSP в состав распространяемого с ними gcc.
Размещение адреса возврата в стеке данных облегчает задачу осуществления переполнения буфера, которое ведёт к выполнению произвольного кода. Теоретически, в gcc могут быть внесены изменения, которые позволят помещать адрес в специальном стеке возврата, который полностью отделён от стека данных, аналогично тому, как это реализовано в языке Forth. Однако это не является полным решением проблемы переполнения буфера, так как другие данные стека тоже нуждаются в защите.

А вообще вопрос интересный, попробую нашарить инфы побольше. А можно и программку накидать, да и отследить, как себя система вести будет)
З.Ы. Только не "Криса Касперского", а Криса Касперски. Не сочтите занудой) Статья где-то 2006г, вроде. Может и позже, но точно не раньше.

+2
Fatalist - 17 Ноябрь, 2009 - 11:53
Изображение пользователя Fatalist.

Нравится мне отношение Криса к Мелкомягким:
Заключение
DEP - это не защита! Это рекламный трюк! Если только Microsoft не создаст свой собственный клон PaX, реализованный по всем правилам (что очень навряд ли) черви и хакеры продолжат свое существование. Так что, слухи об их кончине в очередной раз оказались преждевременными и сильно преувеличенными. По этому поводу вспоминается один анекдот "Недостаток у танка ровно один: через триплексы ни хрена не видно, куда едешь. Но когда ты едешь на танке, это не очень большой недостаток". Так вот, Microsoft едет в танке, прикрываясь толстой броней монополизма и ее совершенно не волнует, куда она едет и что творит.
Не полагайтесь на Microsoft! Для надежной обороны своего компьютера (рабочей станции, сервера) используйте BufferShield или StackDefender, "пробить" который смогут только гуру, да и то с кучей ограничений, делающих червей практически нежизнеспособными.

Это после нескольких абзацев о nix'овом пакете PaX, который, в целом, справляется с задачей. При этом бесплатный и с открытыми исходниками.
=)

0
volkodav - 18 Ноябрь, 2009 - 14:41
Изображение пользователя volkodav.

З.Ы. Только не "Криса Касперского", а Криса Касперски
да ничего:). Про DEB-бит правда. Вчера с группой тестили, ничего он не предотвращает. Сделали эксплоит, который выводил текст

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры