Read the Docs 대규모 DDoS 공격 분석
문서 호스팅 플랫폼 Read the Docs가 2026년 6월 약 10일간 지속된 사상 최대 규모의 정교한 DDoS 공격을 받았습니다. 분당 550만 요청(평소의 약 100배)이 수백 개 네트워크의 수백만 개 IP에서 동시에 유입되었고, 공격자는 캐시 우회와 TLS/헤더 무작위화, 방어 적응 행동까지 보였습니다. AI 크롤러 증가 이후 인프라 커뮤니티 전반이 겪는 트래픽 남용 문제의 심각성을 보여주는 사례입니다.
홈 / 블로그 / 엔지니어링 / Read the Docs를 겨냥한 최근 DDoS 공격의 이해
Read the Docs를 겨냥한 최근 DDoS 공격의 이해 2026년 9월 8일 | 태그: ddos, security, infrastructure, performance, cloudflare, terraform David Fischer
2026년 6월 공격 데이터 분석
2026년 6월 중순부터 하순까지, Read the Docs는 역사상 가장 크고 정교한 분산 서비스 거부(DDoS) 공격을 경험했습니다. 최고치에서는 인프라가 분당 550만 개 이상의 요청을 받았으며, 이는 정상 기준 트래픽의 약 100배에 해당합니다. 이 사고는 거의 열흘간 지속되면서 우리의 인프라, 엣지 방어 체계, 사고 대응 프로세스를 시험했습니다.
과거에 봤던 단순한 트래픽 폭주와 달리, 이번 공격은 더 분산되어 있었고 우리의 방어에 빠르게 적응했으며, 의도적으로 캐싱을 우회하는 영역을 공략했습니다. 이제 우리의 소규모 운영 팀이 다시 정상 시간에 잠들 수 있게 되었으므로, 이런 유형 공격의 구조, 기존 레이트 리미팅(속도 제한)이 부분적으로만 완화에 성공한 이유, 그리고 공격 내내 가용성을 (거의) 유지하는 데 실제로 도움이 된 전략을 살펴보고자 합니다.
DDoS 공격의 진화
Read the Docs는 역사적으로 문서를 스크래핑하는 스파이더와 봇에 매우 관대했으며, IP 기반 레이트 리미팅만으로 대부분의 남용 문제를 해결할 수 있었습니다. 약 2년 전부터 AI 크롤러가 보편화되면서 트래픽이 크게 증가하기 시작했고, 개발 인프라 커뮤니티의 다른 구성원들도 비슷한 문제를 겪고 있는 것으로 보입니다. AI가 생성한 스크래퍼를 프록시 네트워크에 연결하는 것은 어렵지 않게 되었습니다. 우리의 방어는 이에 비교적 쉽게 적응했지만, 6월 공격은 지금까지 직면했던 어떤 것보다 10배 이상 컸습니다.
이번 공격의 주요 특징은 다음과 같았습니다:
- 대규모 볼륨: 최고치에서 분당 550만 개의 요청을 받았으며, 평일 정상 최고치는 분당 10만 개 미만이었습니다.
- 전 세계적 분산: 전 세계 수백 개 네트워크(ASN)에 걸친 수백만 개의 고유 IP 주소에서 악성 요청이 발생했습니다. 주거용 IP 대역과 대형·소형 호스팅 업체 모두 포함되었습니다.
- 헤더 및 TLS 무작위화: 공격자는 시그니처 기반 필터(JA3/JA4)를 우회하기 위해 HTTP 요청 헤더와 TLS 연결 매개변수를 체계적으로 무작위화했습니다.
- 자동화된 CDN 방어의 한계: Read the Docs는 Cloudflare를 사용하며, Cloudflare의 자동 DDoS 방어가 이들이 '알려진 봇넷'이라 부르는 출처의 일부 트래픽을 차단했지만, 공격의 상당 부분은 1차 검사를 통과해 우리의 레이트 리미팅과 WAF 규칙까지 도달했습니다.
- 캐시 우회: 공격자는 캐시 미스를 유발하는 URL, 즉 고유한 경로의 존재하지 않는 페이지(404)와 임시 리다이렉트(302)를 찾아 의도적으로 공략했습니다.
- 적응적 행동: 우리가 차단이나 레이트 리미팅을 적용하면, 봇넷은 요청 속도를 조정하고 서로 다른 대상 경로를 순회하며 트래픽을 더 넓은 IP 풀에 분산시켜 우리의 방어 경계를 탐색했습니다.
규모와 광범위함
과거의 소규모 DDoS 공격이나 대규모 분산 스크래퍼는 보통 어느 정도 집중되어 있었습니다. 요청이 소수의 국가에서, 소수의 IP 대역에서, 또는 소수의 브라우저 시그니처에서 발생하는 식이었습니다. 이번 공격은 진정으로 전 세계적이었습니다. 모든 국가에서 동시에 공격이 왔는데, 이는 Cloudflare 콜로(colo)별로 레이트 리미팅 규칙을 적용할 때 악몽과 같은 상황입니다. 단일 IP나 서브넷에서 합리적인 속도로 스크래핑하는 합법적인 봇에는 영향을 주지 않으면서 분산 공격을 제한하는 규칙을 만들기 어렵기 때문입니다.
한 시점에서 공격자가 리다이렉트에 집중했을 때, 단순한 rewrite regex 디렉티브로 하드코딩된 Nginx 리다이렉트에 과도한 트래픽을 쏟아부어, 수평 확장 인프라에서조차 요청이 유실되는 상황이 발생했습니다. 그런 Nginx 리다이렉트는 쉽게 초당 수천 개의 요청을 처리할 수 있는 것인데도 말입니다.
전 세계로 퍼지는 것 외에도, 공격은 Read the Docs의 여러 서비스를 동시에 공격했습니다. 공개 커뮤니티 문서가 공격 [원문 중단]