Уязвимость HTTP/2 CONTINUATION Flood угрожает веб-серверам DoS-атаками

Уязвимость HTTP/2 CONTINUATION Flood угрожает веб-серверам DoS-атаками

Уязвимость HTTP/2 CONTINUATION Flood угрожает веб-серверам DoS-атаками

Как показало новое исследование специалиста по кибербезопасности Бартека Новотарски, фрейм CONTINUATION в протоколе HTTP/2 можно использовать для проведения атак вида DoS (отказ в обслуживании). Вектор получил имя HTTP/2 CONTINUATION Flood.

Новотарски сообщил о своей находке представителям Координационного центра CERT 25 января 2024 года. Сам центр на днях опубликовал по этому поводу следующее сообщение:

«Многие имплементации HTTP/2 некорректно ограничивают или обрабатывают число фреймов CONTINUATION, отправленных в одном потоке. Условный атакующий может послать пакеты целевому серверу вместе с потоком фреймов CONTINUATION, которые не будут фигурировать в списке заголовков в памяти».

«Тем не менее эти фреймы всё равно будут обрабатываться и декодироваться сервером, приводят к сбою в работе из-за нехватки памяти».

HTTP/2, как и предыдущая версия — HTTP/1, использует поля заголовков в запросах и ответах. Эти поля могут содержать списки, которые обрабатываются и разбиваются на блоки заголовков, а последние затем делятся на фрагменты и передаются внутри HEADER. Это и называется фреймами CONTINUATION.

Последний фрейм должен содержать флаг END_HEADERS, что даёт понять удалённой точке: это конец блока заголовка. Как отметил Новотарски, CONTINUATION Flood представляет собой класс уязвимостей в нескольких реализациях протокола HTTP/2.

И этот вектор атаки представляет большую угрозу, чем Rapid Reset, о которой рассказывали в октябре 2023 года.

«Одно устройство (в некоторых случаях это может быть одно TCP-соединение или несколько фреймов) может привести к недоступности сервера — начиная от сбоя, заканчивая заметным снижением производительности», — объясняет Новотарски.

Проблема затрагивает:

Популярная библиотека Axios оказалась заражена трояном через npm

Популярная JavaScript-библиотека Axios оказалась жертвой атаки на цепочку поставок: злоумышленник скомпрометировал npm-аккаунт одного из ведущих мейнтейнеров и через него опубликовал две вредоносные версии пакета — axios@1.14.1 и axios@0.30.4.

По данным исследователей, обе сборки распространяли скрытый троян для macOS, Windows и Linux. Axios при этом остаётся одной из самых популярных библиотек в экосистеме npm — её скачивают примерно 100 млн раз в неделю.

В заражённые версии Axios добавили всего одну новую зависимость — plain-crypto-js@4.2.1, замаскированную под легитимную библиотеку crypto-js. При этом в исходном коде Axios эта зависимость никак не использовалась: её задачей был запуск postinstall-скрипта, который связывался с управляющим сервером, скачивал вредоносную нагрузку под конкретную ОС и затем зачищал следы своей работы.

Атака развивалась поэтапно. Сначала в npm загрузили «чистую» приманку plain-crypto-js, чтобы создать историю публикаций, а затем — уже заражённую версию. После этого через взломанный аккаунт мейнтейнера были опубликованы две вредоносные версии Axios — сначала для ветки 1.x, а затем для старой, но всё ещё популярной ветки 0.x. То есть атакующий накрыл сразу оба основных сценария использования библиотеки.

Согласно анализу, вредоносный код начинал сетевую активность почти сразу после установки пакета. На macOS троян маскировался под системный процесс Apple, на Windows использовал PowerShell и скрытый скрипт, а на Linux разворачивал Python-бэкдор во временной директории. После этого вредоносный модуль удалял собственные файлы и подменял их «чистой» заглушкой, чтобы при поверхностной проверке установленный пакет не вызывал подозрений.

Вредоносные версии, по имеющимся данным, оставались доступными в npm примерно два-три часа, после чего их удалили, а пакет plain-crypto-js попал под блокировку. При этом заражённые релизы не появились среди тегов GitHub-репозитория Axios, что указывает на публикацию напрямую в npm в обход обычного CI/CD-пайплайна проекта.

RSS: Новости на портале Anti-Malware.ru