Rapid Reset Client 是一个用于测试针对 CVE-2023-44487(Rapid Reset DDoS 攻击向量)缓解措施与受影响程度的工具。它实现了一个最小化的 HTTP/2 客户端,打开单个 TCP 套接字,协商 TLS,忽略证书,交换 SETTINGS 帧。然后,客户端发送快速的 HEADERS 帧,后跟 RST_STREAM 帧。初始化后,它会监测(但不处理)服务器帧,除了输出到标准输出外。如果这些输出过于烦人,可以轻松地从源码中移除。
在 arm64 架构的 go1.21.3 上测试通过。
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)通过单个连接向 https://example.com 发送 10 个 HTTP/2 请求(HEADERS 和 RST_STREAM 帧),使用 5 个工作线程,发送 HEADERS 和 RST_STREAM 帧之间延迟 10 毫秒,每次调用之间等待 100 毫秒。
./rapidresetclient -requests=10 -url https://example.com -wait=100 -delay=10 -concurrency=5
另请参阅 贡献者列表
本项目基于 Apache 许可证授权 - 详情请参阅 LICENSE 文件
本工作基于 Google 的 Juho Snellman 和 Daniele Iamartino 对 CVE-2023-44487 的初步分析。