슬로우 포스트 공격은 웹 서버가 HTTP POST 요청을 처리하는 방식을 악용하여 공격하는 서비스 거부(DoS) 공격의 한 유형입니다. 정상적인 것처럼 보이는 HTTP POST 요청을 의도적으로 매우 느린 속도로 서버에 전송하는 공격입니다. 이 공격의 목적은 장시간 연결을 열어 두어 서버 리소스를 점유함으로써 서버가 정상적인 사용자에게 서비스를 제공하거나 다른 요청을 효율적으로 처리하지 못하게 하는 것입니다. 특히 HTTP POST 방식을 통한 요청 처리에 의존하는 웹 서버와 애플리케이션 서버에 효과적입니다.
슬로우 포스트 공격(Slow Post Attack)은 공격자가 POST 요청을 전송하지만, 데이터는 의도적으로 매우 느리게, 일반적으로 작은 덩어리로 전송되는 공격입니다. 공격은 다음과 같이 작동합니다.
초기 HTTP POST 요청 보내기: 공격자는 서버에 합법적인 것으로 보이는 정상적인 HTTP POST 요청을 시작합니다.
데이터를 느리게 전송: 공격자는 POST 요청의 전체 본문을 한 번에 전송하는 대신, 매우 작은 청크로 나누어 전송하여 의도적으로 전송 속도를 늦춥니다.
연결 유지: 서버는 전체 요청이 완료될 때까지 기다리며 연결을 유지하기 위해 서버 리소스를 소모합니다. 공격자는 요청의 일부만 계속 전송하여 서버가 완료될 때까지 기다리게 합니다.
서버 리소스 고갈: 느린 POST 요청이 여러 개 전송되면 서버는 스레드, 메모리 또는 요청 처리 기능 등 사용 가능한 리소스가 고갈되기 시작하여 다른 사용자에게 서비스 거부가 발생합니다.
슬로우 포스트 공격은 서버에 과부하를 일으키기 위해 많은 양의 데이터가 필요하지 않기 때문에 효과적입니다. 슬로우 포스트 공격의 주요 이점은 다음과 같습니다.
낮은 트래픽 양: 슬로우 포스트 공격은 대역폭을 매우 적게 소모하여 탐지가 어렵습니다. 공격자는 서버에 트래픽을 과도하게 보낼 필요가 없으므로 다른 DoS 공격보다 은밀하게 공격할 수 있습니다.
대상 서버 리소스: 이 공격은 POST 요청을 처리하는 서버의 방법을 악용하여 서버 스레드, 메모리, 요청 처리 용량을 직접 표적으로 삼습니다.
우회 감지: 다른 많은 유형의 DDoS 공격과 달리 Slow Post 공격은 트래픽에 눈에 띄는 급증을 발생시키지 않으므로 합법적인 트래픽과 구별하기 어렵습니다.
Slow Post 공격은 효과적일 수 있지만 몇 가지 과제와 고려 사항이 있습니다.
서버 구성: 슬로우 포스트 공격은 주로 스레드 기반 서버 또는 수신 요청에 대한 시간 제한 설정이 제한된 서버에 영향을 미칩니다. Apache와 같은 웹 서버는 특히 취약한 반면, Nginx와 같은 최신 이벤트 기반 서버는 취약성이 낮을 수 있습니다.
탐지 난이도: 슬로우 포스트 공격은 많은 양의 트래픽을 생성하지 않기 때문에 탐지하기 어렵습니다. 공격자는 정상 사용자와 비슷한 속도로 데이터를 전송하기 때문에 보안 도구가 해당 트래픽을 악성으로 분류하지 못할 수 있습니다.
사용자 경험에 미치는 영향: Slow Post 공격이 성공할 경우 서버 성능이 크게 저하되어 합법적인 요청 처리가 느려지고 실제 사용자의 시간 초과가 발생할 수 있습니다.
Slow Post 공격의 위험을 완화하기 위해 다음과 같은 여러 가지 전략을 사용할 수 있습니다.
시간 초과 설정: 연결에 대한 시간 초과 설정을 구성하면 지정된 기간 내에 완료되지 않은 요청이 삭제되도록 할 수 있습니다. 예를 들어, 웹 서버는 일정 시간 후에 완전한 데이터를 수신하지 못한 채 연결을 종료할 수 있습니다.
속도 제한: 클라이언트가 주어진 시간 내에 보낼 수 있는 POST 요청 수를 제한하면 지나치게 느린 POST 공격을 방지하는 데 도움이 될 수 있습니다. 속도 제한은 클라이언트가 초당 특정 개수 이상의 POST 요청을 보내지 않도록 제한할 수 있습니다.
웹 애플리케이션 방화벽(WAF): WAF는 불완전하거나 의심스러운 POST 요청을 감지하고 필터링하여 느린 데이터 전송과 같은 동작 패턴을 기반으로 알려진 악성 출처의 요청을 차단할 수 있습니다.
침입 탐지 시스템(IDS): IDS를 구현하면 소량의 데이터가 느리게 전송되는 등 데이터 전송 타이밍의 비정상적인 패턴을 감지하고 관리자에게 잠재적인 Slow Post 공격에 대한 경고를 보내는 데 도움이 됩니다.
스레드가 없는 서버 사용: Apache와 같은 스레드 기반 웹 서버에서 Nginx와 같은 이벤트 기반 서버로 전환하면 각 요청에 대해 별도의 스레드를 할당하지 않으므로 Slow Post 공격의 영향을 완화하는 데 도움이 될 수 있습니다.
연결 제한: 짧은 시간 내에 단일 클라이언트가 서버와 설정할 수 있는 연결 수에 제한을 두어 공격자가 느린 POST 연결로 서버에 과부하를 일으키는 것을 방지합니다.
슬로우 포스트 공격은 웹 서버가 HTTP POST 요청을 처리하는 방식을 노리는 강력하면서도 은밀한 서비스 거부(DoS) 공격입니다. 공격자는 느리고 불완전한 POST 요청을 전송하여 서버 리소스를 고갈시키고 정상적인 서비스를 중단시킬 수 있습니다. 슬로우 포스트 공격을 탐지하고 완화하는 것은 어려울 수 있지만, 속도 제한, 시간 초과 구성, WAF 사용과 같은 모범 사례를 적용하면 이러한 공격의 위험을 크게 줄일 수 있습니다.