BugTraq #5

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


sidex@katerina:ttyp3:~> ps -u12345

USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND

xakep 12345 0,0 0,0 1388 0 p6 IWsJ - 0:00,00 -tcsh (tcsh)

С не меньшим успехом обозреваются и принадлежащие root'у процессы. Пример аналогичен. Интереснее же то, что просмотр реализуется и прибавлением лишь классического axu, так что:

xakep@meat:ttyp3:~> ps axu

USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND

xakep 45853 0,0 0,1 428 272 p3 R+J 18:53 0:00,00 ps axu

root 515 0,0 0,3 1744 600 ?? SsJ 9:26 0:19,97 screen

xakep 1020 0,0 0,0 1404 0 p2 IWsJ - 0:00,00 /bin/tcsh

xakep 1025 0,0 0,9 3996 1672 p2 S+J 9:26 0:51,67

/usr/local/bin/irs

Итого, общая форма для натягивания: ps -<аргумент><PID>. Уже из первого примера понятно, что все получается и вовсе без указания аргумента. Патча замечено не было.

Локальный DoS и взятие root'a OpenBSD

BT id 4708

Класс - ошибка условий

Тип эксплойтинга - локальный

Дата - 09.05.02

Автор - FozZy fozzy@dmpfrance.com

Только редкий лентяй не пытался применить баг FreeBSD по теме файл-дескрипторов, случившийся в апреле, в проекции на другие BSD-клоны. Поддавшись стадному инстинкту, я сам безуспешно пытался взять OpenBSD и NetBSD-системы. Почему не удалось поroot'ить Net - было не совсем понятно (техническая неграмотность автора ;). Open же не поддался, т.к., начиная с 98 года, ядро системы успешно справляется с проблемой: в функции execve, когда файл-дескриптор 0,1 или 2 закрывается, стартует новый, позволяя уже в относительной безопасности запустить setuid'ную программу.

Но, как водится, свято место - пусто не бывает, и французские хакера-умельцы придумали "способ лучше", и теперь ты можешь заDoS'ить нелюбимый, но не пропатченный сервант или даже взять там r00t'a. Из пометки "баг локальный" понятно, что потребуется локальный юзерский доступ, можно без включения в wheel-группу. Обвал системы реализуется за счет отсутствия в системе лимита на число введенных дескрипторов. Т.е. просто нет параметра подобного ограничению на число запущенных процессов. В итоге, злодей может без особых проблем зафлудить таблицы дескрипторов: запущенный процесс создает канал в системе, а сам канал уже оборачивается двумя уникальными дескрипторами. Вполне понятно, что даже при установленном лимите на число процов, крякер сможет просто запускать процесс и сразу его убивать, заливая новую дозу в таблицу. На определенном этапе автоматизированного повторения операции даже root не сможет дать простейшую команду типа "ls", т.к. будет наблюдать надпись "Two many opened files in system" или "No ld.so". Также в потенциальной опасности находятся уже запущенные процессы. Не исключается возможность реализации DoS'a и удаленно, хотя к моменту написания сих строк успешного прецедента не получилось.

Назад на стр. 042-008-2  Содержание  Вперед на стр. 042-008-4