
Инструмент для тестирования средств защиты и подверженности атакам Rapid Reset DDoS (CVE-2023-44487)
Rapid Reset Client — это инструмент для тестирования мер защиты и подверженности уязвимости CVE-2023-44487 (вектор DDoS-атаки Rapid Reset). Он реализует минимальный HTTP/2-клиент, который открывает один TCP-сокет, согласовывает TLS, игнорирует сертификат и обменивается фреймами SETTINGS. Затем клиент отправляет быстрые фреймы HEADERS, за которыми следуют фреймы RST_STREAM. Он отслеживает (но не обрабатывает) серверные фреймы после начальной настройки, за исключением вывода в stdout. Эту функциональность легко удалить из исходного кода, если она слишком раздражает.
Протестировано на go1.21.3 на arm64.
git clone https://github.com/secengjeff/rapidresetclient.git
cd rapidresetclient
go get golang.org/x/net/http2
go get golang.org/x/net/http2/hpack
go build -o rapidresetclient
requests: Количество запросов для отправки (по умолчанию 5)
url: URL сервера (по умолчанию https://localhost:443)
wait: Время ожидания в миллисекундах между запуском рабочих процессов (по умолчанию 0)
delay: Задержка в миллисекундах между отправкой фреймов HEADERS и RST_STREAM (по умолчанию 0)
concurrency: Максимальное количество параллельных рабочих процессов (по умолчанию 0)
Отправьте 10 HTTP/2-запросов (фреймы HEADERS и RST_STREAM) по одному соединению на https://example.com, используя 5 рабочих процессов, задержку 10 мс между отправкой фреймов HEADERS и RST_STREAM, и время ожидания 100 мс между каждым вызовом.
./rapidresetclient -requests=10 -url https://example.com -wait=100 -delay=10 -concurrency=5
http2 — пакет, предоставляющий низкоуровневые примитивы HTTP/2
http2/hpack — пакет сжатия заголовков HTTP/2
См. также список участников
Этот проект лицензирован по лицензии Apache — см. файл LICENSE для получения подробной информации
Эта работа основана на первоначальном анализе CVE-2023-44487 от Juho Snellman и Daniele Iamartino из Google.