Slow HTTP 공격: Difference between revisions

From CS Wiki
No edit summary
 
Line 6: Line 6:
* 서버가 POST 데이터를 모두 수신하지 않았다고 판단하면 전송이 다 이루어질때 까지 연결을 유지하는 성격을 이용한다.
* 서버가 POST 데이터를 모두 수신하지 않았다고 판단하면 전송이 다 이루어질때 까지 연결을 유지하는 성격을 이용한다.
* 예를 들어 Content-Length를 100000byte로 하고 데이터는 일정한 간격으로 1byte씩 전송한다.
* 예를 들어 Content-Length를 100000byte로 하고 데이터는 일정한 간격으로 1byte씩 전송한다.
* 이러한 연결을 다량 만들어 각각의 연결이 장시간 유지되도록 하여 가용성을 해친다.
* 이러한 연결을 다량 만들어 각각의 연결이 장시간 유지되도록 하여 가용성을 해친다


== [[Slowloris 공격|Slow HTTP Header DoS]] ==
== [[Slowloris 공격|Slow HTTP Header DoS]] ==

Latest revision as of 03:05, 28 May 2021

HTTP의 취약점을 이용한 서비스 거부 공격들을 말한다.

Slow HTTP POST DoS[edit | edit source]

RUDY(RU-Dead-Yet?) 공격이라고도 부른다.
  • POST 메소드로 대량의 데이터를 장시간에 걸쳐 분할 전송하여 연결을 장시간 유지시킨다.
  • 서버가 POST 데이터를 모두 수신하지 않았다고 판단하면 전송이 다 이루어질때 까지 연결을 유지하는 성격을 이용한다.
  • 예를 들어 Content-Length를 100000byte로 하고 데이터는 일정한 간격으로 1byte씩 전송한다.
  • 이러한 연결을 다량 만들어 각각의 연결이 장시간 유지되도록 하여 가용성을 해친다

Slow HTTP Header DoS[edit | edit source]

Slowloris 공격이라고도 부른다.
  • HTTP Header 정보를 비정상적으로 조작하여 웹서버가 온전한 Header정보가 올때 까지 기다리도록 한다.
  • 서버가 연결 상태를 유지할 수 있는 가용자원은 한계가 있으므로 임계치를 넘어가면 다른 정상적인 접근을 거부하게 된다.

동작[edit | edit source]

  • HTTP에선 헤더의 끝을 /r/n 이라는 개행문자로 구분한다.
  • 공격자는 이 마지막 개행문자를 보내지 않고 지속적으로 의미없는 변수를 추가한다.
  • 서버는 헤더 정보가 아직 전송 중이라고 인식하고 연결을 유지한다.

대응[edit | edit source]

  • 공격자가 동시에 많은 세션을 유지하므로 방화벽 등을 통하여 세션 임계치 제한을 설정한다.
  • 공격자가 헤더를 천천히 전달하며 연결 시간을 지속시키므로 연결 타임아웃 시간을 적절히 짧게 두어 의심되는 연결이 종료되도록 한다. 단, 너무 짧게 둘 경우 일부 느린 네트워크의 정상적인 연결에 대해서도 가용성을 해칠 수 있다.

Slow HTTP Read DoS[edit | edit source]

  • 정상트래픽 이라면 Window Size가 가변적이지만 공격 트래픽은 Window Size가 "0"으로 고정
  • 매우 작은 윈도우크기로 서버에 응답을 보내면 서버는 더 이상 데이터를 전송하지 못하고 연결만 유지한 상태로 대기