Хакер #305. Многошаговые SQL-инъекции
Исследователи компании Imperva поработали с крупнейшими производителями веб-серверов, чтобы лучше изучить протокол HTTP/2, запущенный год назад на смену HTTP/1.x. На конференции Black Hat эксперты рассказали о проделанной работе и сообщили, что им удалось обнаружить четыре опасных проблемы в HTTP/2, ставящие под угрозу миллионы сайтов.
Для выявления багов исследователи изучили серверные имплементации HTTP/2 от Apache, Microsoft, NGINX, Jetty и nghttp2. Уязвимости удалось обнаружить почти во всех основных механизмах HTTP/2, причем два бага хорошо известны и могут применяться и в случае HTTP/1.x.
По данным W3Techs, новым стандартом пользуются уже 8,7% всех сайтов интернета, а это порядка 84 000 000 ресурсов. Обнаруженные экспертами Imperva баги ставят все эти сайты под угрозу.
Slow read (CVE-2016-1546): атака основана на том, что вредоносный клиент читает ответы крайне медленно. Данный баг похож на Slowloris DDoS — эту атаку использовали против финансовых организаций в 2010 году. Атаки типа slow read в целом давно известны в экосистеме HTTP, и в случае с имплементациями HTTP/2 они работают на уровне приложения. Вариации данной проблемы были обнаружены в Apache, IIS, Jetty, NGINX и nghttp2.
HPACK Bomb (CVE-2016-1544, CVE-2016-2525): исследователи пишут, что атака похожа на «zip bomb», то есть на случаи, когда вредоносный архив используется для вызова краша программы или системы, где он был запущен. Подобные атаки часто используют, чтобы вывести из строя антивирусное ПО. Атакующий создает небольшое, невинно выглядящее сообщение, которое оборачивается для сервера гигабайтами данных, полностью оттягивает на себя все ресурсы памяти и уводит сервер в оффлайн.
Dependency Cycle (CVE-2015-8659): в HTTP/2 был представлен новый механизм управления потоками, созданный с целью оптимизации работы сети. Однако данный механизм может быть использован атакующими для создания вредоносного запроса, который приведет к зацикливанию (loop). Разорвать такой «порочный круг» практически невозможно, так как механизм контроля потоков будет пытаться по кругу обрабатывать вредоносные запросы. В итоге возможен как DoS, так и выполнение произвольного кода в уязвимой системе.
Stream Multiplexing Abuse (CVE-2016-0150): проблема связана с тем, как сервер осуществляет мультиплексирование потоков. Механизм Stream Multiplexing был создан для туннелирования нескольких сессий через одно HTTP/2 соединение, и атакующие могут осуществить DoS-атаку, нарушив логику разделения соединения.
Все найденные уязвимости уже были исправлены, но специалисты Imperva предрекают обнаружение и других багов. Исследователи пишут:
«В новом коде всегда присутствуют уязвимости, некоторые из них аналогичны багам в старом коде, другие являются виной разработчиков, которые не придерживались рамок предполагаемого проекта. В любом случае, новые механизмы всегда содержат новый код, что значительно расширяет поле для атак и эксплуатации уязвимостей хакерами».
Подробная информация доступна в отчете исследователей, который можно найти здесь (PDF).