Обзор эксплойтов Крис Касперски ака мыщъх Хакер, номер #091, стр. 091-060-1 Удаленное переполнение буфера в zlib 6 июня Tavis Ormandy обнаружил уязвимость библиотеки ZLIB версии 1.2.2 (и более ранних), приводящую к переполнению буфера с возможностью выполнения произвольного кода на пораженной машине. Ошибка контроля допущена в функции inflate_table(), расположенной в файле inftrees.c, ключевой фрагмент которой идет ниже: Листинг 1: ошибка контроля в функции inflate_table() библиотеки zlib-1.2.2 /* check for an over-subscribed or incomplete set of lengths */ left = 1; for (len = 1; len <= MAXBITS; len++) { left <<= 1; left -= count[len]; if (left < 0) return -1; /* over-subscribed */ } if (left > 0 && (type == CODES || (codes - count[0] != 1))) return -1; /* incomplete set */ Исправленный вариант выглядит так: Листинг 2: та же самая функция в библиотеки zlib-1.2.3 /* check for an over-subscribed or incomplete set of lengths */ left = 1; for (len = 1; len <= MAXBITS; len++) { left <<= 1; left -= count[len]; if (left < 0) return -1; /* over-subscribed */ } if (left > 0 && (type == CODES || max != 1)) return -1; /* incomplete set */ И хотя рабочего exploit'а в сети обнаружить не удалось, приведенной выше информации вполне достаточно, чтобы его написал любой грамотный хакер. Это настоящая катастрофа! Библиотека ZLIB используется огромным количеством программ как с динамической, так и со статической компоновкой. А это значит, что для устранения уязвимости обновить файл zlib1.dll/libz.so будет явно недостаточно и потребуется перекомпилировать все программное обеспечение, слинкованное с ZLIB статическим способом. А если программа включает в себя фрагменты исходных текстов компрессора, «вживляя» их в свое тело, то починить ее сможет только разработчик. Полный список уязвимых систем можно найти на www.securityfocus.com/bid/14162/info, а заплатки к ним — на http://www.securityfocus.com/bid/14162/solution. Как и следовало ожидать, под угрозой оказались практически все платформы: Apple Mac OS X, Conectiva Linux, Debian Linux, FreeBSD, и т.д. Mozilla firefox, seamonkey, thunderbird множественные удаленные уязвимости До сих пор главным мотивом использования горящего лиса (и его производных) была уверенность в его безопасности. Чем больше дыр обнаруживалось в IE, тем охотнее пользователи переходили к аутсайдеру. Когда популярность лиса достигла некоторой критической отметки, хакеры взялись за него всерьез, и дыры полились полноводной рекой, подмочив лису его огненно-рыжий хвост. Если так будет продолжаться и дальше, то движок Mozilla (кстати говоря, расшифровываемый как Mosaic Killer – движок, на котором основан IE), не только догонит, но и перегонит IE! За последнее время было обнаружено огромное количество дыр в Mozill'e, позволяющих выполнять произвольный код на атакуемой машине, повышать уровень привилегий JavaScript вплоть до исполнения машинного кода, запускать JavaScript даже когда он отключен, обрушивать браузер, предоставлять доступ к личным данным пользователя и т. д. Все ошибки перечислять было бы слишком утомительно, вот только некоторые из них: хакер по кличке moz_bug_r_a4 обнаружил, что JavaScript, запущенный через компонент EvalInSandbox (используемый главным образом для автоматической настройки proxy), может вырваться за пределы «песочницы» и повысить свои привилегии простым вызовом valueOf(). Это делается через обращение к объекту, созданному вне «песочницы», и «затягивания» его внутрь. Другой исследователь Mikolaj J. Habryn обнаружил переполнение буфера в функции crypto.signText() из-за неправильной обработки индексов в массивах. Также команда разработчиков столкнулась с трудновоспроизводимыми разрушениями памяти, создающими угрозу засылки shell-кода со всеми вытекающими отсюда последствиями. |