
Rapid Reset DDoS(CVE-2023-44487)에 대한 완화 조치 및 노출 테스트 도구
Rapid Reset Client는 CVE-2023-44487(Rapid Reset DDoS 공격 벡터)에 대한 완화 조치와 노출 여부를 테스트하는 도구입니다. 이 도구는 단일 TCP 소켓을 열고 TLS를 협상하며 인증서를 무시하고 SETTINGS 프레임을 교환하는 최소한의 HTTP/2 클라이언트를 구현합니다. 그런 다음 클라이언트는 HEADERS 프레임과 RST_STREAM 프레임을 빠르게 전송합니다. 초기 설정 후에는 서버 프레임을 stdout으로 출력하는 것 외에는 처리하지 않고 모니터링만 합니다. 이 기능은 너무 거슬린다면 소스에서 쉽게 제거할 수 있습니다.
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 프레임 전송 사이에는 10ms 지연, 각 실행 사이에는 100ms 대기 시간을 적용합니다.
./rapidresetclient -requests=10 -url https://example.com -wait=100 -delay=10 -concurrency=5
http2 - 저수준 HTTP/2 프리미티브를 노출하는 패키지
http2/hpack - HTTP/2 헤더 압축 패키지
기여자 목록도 참조하세요.
이 프로젝트는 Apache 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
이 작업은 Google의 Juho Snellman과 Daniele Iamartino가 작성한 CVE-2023-44487 초기 분석을 기반으로 합니다.