Уязвимые хеш-таблицы

Тема в разделе "Ддос-атаки", создана пользователем Devider, 15 авг 2013.

  1. В 2003 году исследователи из Университета Райса выпустили работу «Denial of Service via Algorithmic Complexity Attacks», в которой описали идею DoS-атаки на приложения, использующие хеш-таблицы. Идея заключается в том, что если приложение не использует рандомизированную хеш-функцию для реализации своей хеш-таблицы, атакующий может подобрать множество ключей, образующих коллизию, и «скормить» их приложению. В результате на порядок увеличивается сложность алгоритма вставки пары «ключ-значение», что приводит к потреблению процессорного времени. Хотя данная проблема была известна достаточно давно, никто не разрабатывал PoC-код, демонстрирующий практические возможности атаки. Вплоть до конца 2011 года.

    На конференции Chaos Congress Conference был представлен доклад двух исследователей из Германии, в котором они вновь обратились к старой проблеме хеш-таблиц и DoS. В докладе была описана атака, для которой уязвимы многие языки веб-программирования, включая PHP, ASP.NET, Java, Python и Ruby. Все эти платформы используют похожие алгоритмы хеширования, в которых возможно подобрать коллизии. Для того чтобы «положить» сервер, необходимо осуществить POST-запрос к веб-приложению, построенному на основе одной из вышеперечисленных технологий, со специальными значениями параметров с мультиколлизией, предназначенными, например, для какой-нибудь веб-формы. Переданные параметры веб-приложения хранят, как правило, посредством хеш-таблиц. Исследователи протестировали свой proof-of-concept на уязвимых платформах и привели в докладе теоретические и практические значения времени обработки «зловредного» POST-запроса для различных платформ. В общем случае можно сказать, что в зависимости от используемой платформы, конфигурации сервера и размера данных в POST-запросе, одним запросом можно занять процессор на срок от нескольких минут до нескольких часов. А проведя серию подобных запросов, атакующий может держать под контролем мультиядерный сервер или даже кластер серверов.

    Немцы также отметили, что подобный POST-запрос к атакуемому серверу теоретически может быть сгенерирован «на лету» в HTML- или JavaScript-коде на каком-нибудь стороннем сайте — наподобие атак посредством XSS-скриптов. В результате множество пользователей неявно будут участвовать в распределенной DoS-атаке.

    Интересно также то, что в своей презентации на одном из слайдов исследователи поместили изображение маски вездесущих Anonymous, прозрачно намекая на то, что группа уже участвовала во множестве DDoS-атак и не гнушается брать на вооружение новые технологии.

    Официальному докладу на конференции предшествовало уведомление в ноябре о проблеме всех «уязвимых» вендоров языков программирования.

    Компания Microsoft оперативно отреагировала на заявленную угрозу, выпустив патч для ASP.NET, который ограничивает количество передаваемых параметров в одном POST-запросе. Катализатором для выпуска патча к этой уязвимости послужили опасения Microsoft (и небезосновательные), что кто-нибудь выложит эксплойт к ней для общего пользования. Выпуск патча произошел весьма своевременно, поскольку уже в начале 2012 года неким пользователем с ником HybrisDisaster был опубликован набор ключей с коллизией для ASP.NET.

    Разработчики Ruby выпустили новые версии CRuby и JRuby с рандомизированными хеш-функциями. В PHP пока только ввели новую переменную max_input_vars, ограничивающую число параметров в POST-запросе.

    Стоит сказать, что Perl 5.8.1 с 2003 года и CRuby 1.9 с 2008 года неуязвимы для данной атаки, т.к. уже используют рандомизированные хеш-функции.
     
    15 авг 2013

Поделиться этой страницей