Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #62, ФЕВРАЛЬ 2004 г.

Обзор эксплойтов

Докучаев Дмитрий aka Forb

Xakep, номер #062, стр. 062-053-1


(forb@real.xakep.ru)

Linux kernel do_brk() exploit

Описание:

В конце ноября была обнаружена ошибка в ядре, через которую был произведен взлом нескольких крупных Debian-серверов. Как оказалось, параметры внутренней функции do_brk() не проверялись на размер. Из-за этого и возникла возможность переполнения буфера. Функция do_brk() используется для управления памятью процесса. Таким образом, выполнив переполнение буфера, злоумышленник может выполнить любой код с root-правами. Это происходит благодаря тому, что код выполняется в ядерном уровне памяти. Для полного представления о работе ядра (и функции do_brk() в частности) рекомендую почитать соответствующую литературу. При компиляции эксплойта необходимо указывать флаг –static. В противном случае бинарник будет убиваться по 11 сигналу.

Защита:

Эта уязвимость актуальна для всех версий ядра ветки 2.4 (исключая 2.4.23), а также ветки 2.6 (кроме 2.6.0-test6). Изначально багу обнаружили в дебиановском ядре. Она была устранена в версии 2.4.18-14. Из всего вышесказанного можно сделать вывод: переустановка ядра на более свежую версию спасет мир от переполнения буфера. Впрочем, если есть желание, можешь поискать патч на ядрышко. Остальным – welcome на ftp.kernel.org ;).

Ссылки:

На сайте isec.pl эксплойт упакован в трудночитаемый pdf-файл. Сам сишник можно взять по ссылке www.xakep.ru/post/20623/dobrk.txt. Если интересует техническая сторона уязвимости, читай документ security.nnov.ru/search/document.asp?docid=5475.

Злоключение:

Эта уязвимость еще долго будет актуальной. Это связано с инертностью администраторов, ленящихся обновлять свои ядра. Впрочем, если на машине не установлен пакет glibc-devel-static, то получить рутшелл не удастся (причину читай выше).

Greets:

Багу в функции нашел Paul Starzetz <ihaquer@isec.pl>. После этого события был написан файл, эксплуатирующий уязвимость. Его автором является лицо польской национальности Wojciech Purczynski <cliph@isec.pl>.

Linux kernel mremap() exploit

Описание:

После выхода нашумевшего эксплойта функции do_brk(), Paul Starzetz обнаружил еще одну брешь. На этот раз в функции mremap(), позволяющей изменять адресное пространство приложения. Проблема возникает при создании дескриптора памяти нулевого размера, что приводит к повреждению участка. При этом становится возможным запустить любое приложение под root-правами. После эксплуатирования будет запущен желанный /bin/bash ;).

Защита:

В отличие от эксплойта do_brk(), эта уязвимость существует во всех ядрах и лечится только специальным патчем (securitylab.ru/42031.html). Другой защиты от баги не существует.

Ссылки:

Берем эксплойт по адресу www.xakep.ru/post/20864/exploit.txt. Подробно ознакомиться с работой функции mremap можно тут: security.nnov.ru/search/document.asp?docid=5593.

Злоключение:

Эксплойт ломает все версии ядер. Выводы делай сам. От себя могу добавить следующее: время эксплуатирования системы занимает около 10 часов, поэтому только терпеливые хакеры получат заветный рутшелл.

Greets:

Ошибка была найдена известным багоискателем Paul Starzetz. Им же был написан эксплойт, работающий под все версии ядер.

Содержание  Вперед на стр. 062-053-2