BugTraq #5

Xakep, номер #042, стр. 042-008-4


Локальный root'инг получается по следующему алгоритму: 1) Забиваем таблицу дескрипторов, как то было в случае обустройства DoS'a. 2)Заводим setuid программу с fd(file descriptor'ом), к примеру, равному 2. Execve функция ядра просто не откроет fd за номером 2 в dev/null из-за сбоя falloc'a. В итоге setuid'ная программа будет-таки запущена с упомянутым закрытым fd 2. 3)Быстренько закрываем fd в порядке того, чтобы позволить проге быть корректно запущенной. Параметр времени чрезвычайно критичен: закрыли fd слишком рано - /dev/null не припишется ко второму дескриптору. Слишком поздно - исполнение suid'ной проги оборвется. Хотя на практике не требуется множества попыток для подбора оптимального времени.

Эксплойт доступен для слива - http://www.dmpfrance.com/fd_openbsd.c, есть и другие вариации на тему, доступные с www.packetstormsecurity.org. С патчем также проблем не наблюдается, т.к. Open'цы подогнали заплату аккурат ко дню публичного релиза бага http://www.openbsd.org/errata.html.

Назад на стр. 042-008-3  Содержание