723. RUDY (Slow HTTP POST 공격) - Content-Length 조작 연결 지연
핵심 인사이트: 앞선 슬로우로리스가 햄버거를 시킬 때 '말을 천천히 더듬는' 진상 손님이었다면, RUDY는 카운터에 "나 1만 원어치 동전으로 낼게!"라고 크게 소리쳐놓고, 주머니에서 10원짜리 동전을 '1분에 하나씩' 천천히 꺼내서 계산대에 올리는 극악무도한 진상 손님이다. 카운터 직원은 동전 1만 원이 다 찰 때까지 하루 종일 기다리다 쓰러진다.
Ⅰ. RUDY (R-U-Dead-Yet?) 공격의 개념
- 개념: 영문 뜻 그대로 "너 아직 안 죽었니?"라는 조롱 섞인 해킹 툴의 이름에서 유래했습니다.
- 학술적 명칭은 Slow HTTP POST 공격입니다. 슬로우로리스가 HTTP
GET요청의 헤더를 악용했다면, RUDY는 게시판에 글을 쓰거나 사진을 올릴 때 쓰는 HTTPPOST요청의 본문(Body, Payload) 크기 속성을 교묘하게 조작하여 서버의 연결 자원을 말려 죽이는 애플리케이션(L7) 타겟형 DoS 공격입니다.
Ⅱ. 공격의 핵심 원리: Content-Length 조작 🌟
1. 정상적인 POST 요청 구조
- 우리가 네이버 카페에 1MB짜리 사진을 업로드(POST)할 때, 브라우저는 먼저 서버에 예의 바르게 편지봉투(Header)를 보냅니다.
- 봉투에는
Content-Length: 1000000(나 지금부터 100만 바이트짜리 보낼게!)이라고 적혀 있습니다. - 서버는 이 봉투를 보고, 메모리에 100만 바이트짜리 방을 잡아두고 데이터가 다 들어올 때까지 세션(연결)을 닫지 않고 성실하게 기다립니다.
2. 해커의 기만 (거짓말과 달팽이 전송)
- 해커는 타겟 서버에 접속해 똑같이
POST요청을 날립니다. - 이때 헤더에 **
Content-Length: 99999999(나 1기가바이트짜리 보낼 거야!)**라고 엄청나게 큰 뻥을 쳐서 던집니다. - 멍청한 서버는 해커의 말을 찰떡같이 믿고, 1기가바이트가 다 올 때까지 세션을 활짝 열어둔 채 무작정 대기합니다.
- 지연 전송 (Slow Rate): 해커는 1기가바이트를 보내주지 않습니다. 대신 1바이트(글자 한 개)짜리 쓰레기 데이터를 1분마다 하나씩 아주 천천히 찔끔찔끔 보냅니다.
- 서버는 "아직 1기가 다 안 왔어. 조금만 더 기다리자..."라며 바보같이 세션을 절대 끊지 않고 물고 있습니다.
- 해커가 이 짓을 수천 개 띄워놓으면 서버의 연결 풀(Connection Pool)이 모조리 바닥나 정상 고객이 접속할 수 없게 뻗어버립니다.
Ⅲ. 슬로우로리스(Slowloris)와의 뚜렷한 차이점
- Slowloris (GET 공격): 편지 '봉투(Header)'의 끝(빈 줄,
\r\n\r\n)을 안 맺고 말을 더듬으며 서버를 괴롭힙니다. - RUDY (POST 공격): 편지 봉투는 정상적으로 다 보냈지만, 봉투 안에 들어갈 '편지지 내용물(Body Data)'을 뻥튀기해 놓고 달팽이처럼 천천히 보내서 괴롭힙니다.
Ⅳ. 방어 대책
슬로우로리스의 방어 대책과 거의 비슷하지만 몸통(Body)을 감시해야 합니다.
- 타임아웃(Timeout) 강화: 클라이언트가 데이터를 전송하는 속도가 비정상적으로 느리거나(예: 초당 10바이트 이하), 일정 시간(예: 30초) 동안 본문 전송이 다 안 끝나면 서버가 가차 없이 강제로 쫓아내버립니다(Connection Drop).
- 동시 접속과 POST 크기 제한: 동일 IP에서 수백 개의 POST 세션을 물고 있으면 IP를 차단하고, 쓸데없이 큰
Content-Length를 요구하면 입구 컷을 때립니다.
📢 섹션 요약 비유: RUDY 공격은 은행 창구에서 동전을 교환하려는 진상 짓입니다. 1번 창구에 앉은 사람이 "저 1억 원어치 동전으로 가져왔으니까 세어주세요(Content-Length 조작)"라고 말합니다. 직원은 1억 원이 다 올라올 때까지 창구를 비우지 못하고 대기합니다. 그런데 이 진상 손님이 주머니에서 10원짜리 동전을 1분에 딱 한 개씩만 꺼내서 올려놓습니다(Slow POST). 창구 직원은 법규상 손님을 내쫓지도 못하고 하루 종일 10원짜리 하나씩을 받으며 고문당하고, 뒤에 서 있는 정상 고객 1,000명은 업무를 보지 못하고 화를 내게 됩니다.