Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #45, АВГУСТ 2004 г.

Отравляем приложения

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

Спецвыпуск Xakep, номер #045, стр. 045-052-4


Опасные архивы

Если рассматривать тему переполнения данными в полном объеме, то грех обойти архиваторы. Ты, наверно, думал, что твой WinZip и /bin/tar работают правильно? В мире нет ни одной правильной программы (возможно, за исключением Hello World :). Позволь рассказать тебе об интересных глюках популярных запаковщиков. Все она основаны на общем принципе: хакер создает специальный архив, затем архиватор обрабатывает этот пакет и отдает концы. Так, например, WinZip 9.0 может умереть после прочтения спецархивов MIME-типа (с расширением .mim, .uue, .uu, .b64, .bhx, .hqx, и .xxe). Как утверждает элитная команда iDEFENSE, любой желающий может убить WinZip бажным архивчиком, вызвав переполнение в компоненте UUDeview. Я счел нужным не указывать детали переполнения, так как это сложно и не особенно интересно. Если хочешь – ознакомься сам: http://www.securitylab.ru/43189.html. В любом случае, установка WinZip 9.0 Final избавит от всех напастей.

Еще одна ошибка, о которой хотелось бы рассказать, таится в известном менеджере Midnight Commander. Последний криво обрабатывает tar-архивы. Несмотря на то что баг довольно старый (сентябрь 2003 года), последний MC – 4.6.0 – убивается наповал. Проверено мной лично ;).

В чем же суть уязвимости? По утверждениям автора, можно понять, что в коде MC не проверяется длина символического линка, вытянутого из архива. Это навевает некоторые мысли: например, если запаковать файл-симлинк на /aaaa (длина более 256 символов), MC, не сказав не слова, упадет в кору ;). Баг затаился в файле vfs/direntry.c, в котором используется неинициализированный буфер для линков. Впрочем, в кору MC можно и не валить, а написать грамотный эксплоит. Последний должен выполнять код с правами MC. Хотя, на мой взгляд, это не совсем оправданно: устанавливать suid-бит на MC будут разве что ламеры или извращенцы :).

Чтобы убедиться в изъяне, достаточно стянуть бажный архивчик http://buggzy.narod.ru/exp.tgz. Попробуй просмотреть его в менеджере. Уверен на 100%, что дядя Миднайт уйдет в даун. Теперь распакуй архив каким-нибудь другим архиватором (лучше виндовым) и увидишь, что файл-симлинк имеет очень длинное имя. Именно это и убивает консольный менеджер.

Наконец, я не смог обойти мой любимый архиватор WinRar. Он также уязвим. Причем баг очень прост: если в архиве содержится файл с именем длиной более 256 символов, WinRar аварийно завершает работу. Изъян присутствовал в версиях запаковщика аж до релиза 3.10. Переполнение происходило при отображении в ListView Control Window. Интересно, что автор архиватора попросил багоискателей не публиковать никаких эксплоитов и POC-кода, на что ребята согласились. Через несколько дней вышел последний релиз, в котором баг, конечно же, был исправлен.

Назад на стр. 045-052-3  Содержание  Вперед на стр. 045-052-5