Компания n.runs AG опубликовала сведения о наличии уязвимости во всех популярных web-серверах и языках программирования.
Причиной существования уязвимости являются хеш-таблицы, которые используются в большинстве случаев для хранения структур данных. Серверы приложений или web-платформы, как правило, автоматически осуществляют обработку контролируемых атакующим данных POST форм посредством хеш-таблиц, чтобы таким образом давать возможность разработчикам приложений работать с этими данными.
Если язык программирования не предоставляет функцию рандомизации хеша или web сервер не умеет распознавать атаки, использующие множественные коллизии, атакующий может разобрать хешированную таблицу путем отправки большого количества коллизионных ключей. Алгоритмическая сложность вставки n элементов в таблицу равна O(n**2), что позволяет потребить часы работы процессорного времени на один HTTP запрос. Об этой особенности известно еще с 2003 года.
Исследователи компании n.runs AG описали технику эксплуатации данной уязвимости для PHP 5, Java, ASP.NET и v8. Частично уязвимы также PHP 4, Python и Ruby, в зависимости от версии и архитектуры процессора.
Для эксплуатации уязвимостей исследователи использовали два приема: эквивалентные подстроки (equivalent substrings) и атаку «встреча посередине» (meet-in-the-middle attack).
PHP 5
При отправке POST запроса, PHP 5 для его обработки использует хеш-функцию DJBX33A, которая обрабатывает данные и создает хеш таблицу $_POST. Из-за структуры построения хеш функции, она является уязвимой к атаке эквивалентыми подстроками.
Максимальный POST запрос в PHP, как правило, ограничен 8 МБ. Если уязвимой системе отправить восьми мегабайтный HTTP POST запрос, содержащий набор мультиколлизий, обработка такого запроса займет около 4 часов процессорного времени на i7 core. Однако, существующие по умолчанию ограничения в PHP (max_input_time) не позволяют выполняться такому запросу бесконечно (если, конечно, не установлено значение -1 для этого параметра).
В настояний момент эта уязвимость устранена в SVN репозитории производителя. Описание уязвимости доступно по адресу:
http://www.securitylab.ru/vulnerability/413110.php
ASP.NET
ASP.NET использует объект Request.Form для предоставления POST данных web-разработчику. Этот объект не принадлежит классу NameValueCollection и не использует стандартную функцию .NET.
«Это не обычная DoS-атака, так как для отключения сервера не требуется наличие ботсети. Большинство DoS-атак выполняются с помощью множества небольших запросов, отправленных определенному web-серверу. В данном случае единственный запрос может потребить одно ядро системы на 90 секунд. Если отправлять по несколько запросов каждые несколько минут, то сайт просто прекратит работать», - цитирует Help Net Security слова Эндрю Стормса (Andrew Storms), руководителя отдела по осуществлению операций безопасности компании nCircle.
Корпорация Microsoft опубликовала уведомление безопасности, в котором описала временные инструкции по исправлению уязвимости. Директор отдела Microsoft Trustworthy Computing Дейв Форстром (Dave Forstrom) заявил: «Нам неизвестно о каких либо случаях применений данной уязвимости, направленных на какую либо из поддерживаемых версий NET Framework, однако всем пользователям рекомендуется применить исправление, описанное в уведомлении, которое поможет защитить сайт от эксплуатации хэш-таблиц».
В настоящий момент выпущено исправление безопасности для Ruby.
Список уведомлений безопасности, связанных с этой уязвимостью доступен по адресу:
http://www.securitylab.ru/vulnerability/reports/413118.php
Корпорация Microsoft запланировала на сегодня выпуск бюллетеня безопасности с исправлением уязвимости в ASP.NET. С подробным описанием уязвимости можно ознакомиться по адресу:
http://www.securitylab.ru/vulnerability/413102.php
Ознакомится с исследованием компании n.runs AG можно по адресу: http://www.nruns.com/_downloads/advisory28122011.pdf .
Наш канал — питательная среда для вашего интеллекта