Slow HTTP Read DoS

agnusdei·2024년 7월 20일
0

Slow HTTP Read DoS (Denial of Service) 공격

개요

Slow HTTP Read DoS 공격은 웹 서버의 리소스를 소모시키기 위해 HTTP 요청의 본문을 매우 느리게 읽어들여서 서버를 과부하에 빠뜨리는 공격입니다. 이 공격은 웹 서버가 비정상적으로 느린 요청을 처리하게 만들어 서버의 자원을 고갈시킬 수 있습니다.

작동 원리

  1. 느린 요청 전송: 공격자는 HTTP 요청을 보내고, 본문 데이터를 매우 느리게 전송합니다. 즉, 데이터를 한 번에 조금씩 보내거나, 데이터를 전송한 후에도 연결을 유지하여 서버가 데이터를 계속 기다리게 만듭니다.

  2. 서버의 자원 소모: 서버는 요청 본문을 완전히 받을 때까지 대기해야 하며, 이 과정에서 메모리와 CPU 자원을 소모합니다. 많은 수의 이러한 느린 요청이 동시에 발생하면, 서버는 자원을 고갈시키고 정상적인 요청을 처리할 수 없게 됩니다.

  3. 연결 유지: 연결을 유지하면서 데이터를 느리게 전송함으로써 서버는 많은 수의 비정상적인 연결을 열어두고, 이를 관리하기 위해 많은 자원을 사용하게 됩니다.

예시

공격자는 다음과 같이 HTTP 요청을 느리게 전송할 수 있습니다:

# 클라이언트에서 curl을 사용하여 Slow Read DoS 공격을 시뮬레이션
curl -X POST http://target-server.com -H "Content-Length: 1000000" -d @largefile --header "Transfer-Encoding: chunked" --http1.1

이 요청은 서버가 Content-Length를 처리하는 데 상당한 시간이 걸리게 하고, 실제 데이터는 매우 느리게 전송되므로 서버의 자원을 소모시킬 수 있습니다.

윈도우 사이즈(Window Size)와 0으로 설정

윈도우 사이즈란?

TCP 프로토콜에서 윈도우 사이즈는 수신 버퍼의 크기를 나타냅니다. 이는 수신측에서 보내는 데이터의 양을 제어하며, 수신측이 처리할 수 있는 데이터의 양을 명시합니다. 즉, 윈도우 사이즈는 수신측의 버퍼 공간을 나타내며, 송신측은 이 값을 바탕으로 얼마나 많은 데이터를 한 번에 전송할 수 있는지 결정합니다.

Slow Read DoS와 윈도우 사이즈

  • 윈도우 사이즈를 0으로 설정: Slow HTTP Read DoS 공격에서 공격자는 윈도우 사이즈를 0으로 설정하여 서버가 데이터를 계속해서 기다리게 할 수 있습니다. 윈도우 사이즈가 0이면 수신측이 버퍼가 가득 찼다고 보고, 송신측에 더 이상의 데이터를 전송하지 않게 됩니다. 이로 인해 연결은 열려 있으면서 데이터를 계속해서 기다리게 되고, 서버의 리소스가 소모됩니다.

  • 왜 0으로 설정하나요?: 윈도우 사이즈를 0으로 설정하면 서버는 데이터 전송을 중단하고 계속해서 버퍼가 비어지기를 기다리게 됩니다. 이는 서버의 자원을 소모시키고, 공격자는 연결을 열어두면서 서버가 자원을 소모하게 만듭니다. 이런 방식으로 많은 수의 연결을 열어놓고 자원을 고갈시킬 수 있습니다.

방어 방법

  1. 타임아웃 설정: 서버에서 일정 시간 동안 데이터가 수신되지 않으면 연결을 자동으로 종료하도록 타임아웃을 설정할 수 있습니다.

  2. 트래픽 모니터링: 비정상적인 트래픽 패턴을 모니터링하여 이러한 공격을 탐지하고 차단할 수 있습니다.

  3. 정적 및 동적 보안 정책: IP 차단, 연결 수 제한 및 비정상적인 요청 패턴을 차단하는 규칙을 설정하여 공격을 방지할 수 있습니다.

  4. 웹 애플리케이션 방화벽(WAF): WAF를 사용하여 특정 유형의 공격을 차단하고 보호할 수 있습니다.

요약

  • Slow HTTP Read DoS 공격은 웹 서버에 느리게 데이터를 전송하여 자원을 소모시키는 공격입니다.
  • 윈도우 사이즈는 TCP 수신 버퍼의 크기를 나타내며, 이를 0으로 설정하면 서버가 데이터를 계속 기다리게 됩니다.
  • 0으로 설정하여 서버의 자원을 소모시키는 방식을 사용하며, 타임아웃 설정 및 트래픽 모니터링 등의 방어 방법으로 방지할 수 있습니다.

추가 질문이 있거나 도움이 필요하시면 언제든지 말씀해 주세요.

profile
DevSecOps ⚙️ + CTF🚩

0개의 댓글