2018년 2월, GitHub은 1.35 Tbps DDoS 공격을 받았다——수천 대의 봇이 아니라 2,000대 미만의 노출된 Memcached 서버 때문이었다. 공격자는 작은 요청을 보내 최대 5.1만 배 증폭된 응답을 받았다. 그것이 반사/증폭이다: 공격자가 쓰는 대역폭과 피해자가 흡수하는 대역폭을 깔끔히 분리한다. 본문은 10년에 걸친 군비경쟁을 해부한다.
1. 증폭률: 공격의 지렛대
증폭률(AF)은 지극히 단순하다: AF = 응답 크기 / 요청 크기. 전제는 IP 출처 스푸핑——공격자는 피해자의 IP를 출처로 위조하므로 서버의 거대한 응답은 피해자에게 향하고 공격자는 거의 아무것도 안 낸다.
| 벡터 | 포트 | 전형적 AF | 상태 |
|---|---|---|---|
| Memcached | UDP/11211 | 약 5,000~51,000× | 거의 봉쇄됨 |
NTP monlist | UDP/123 | 약 556× | 대부분 비활성화 |
| CLDAP | UDP/389 | 약 56~70× | 2017–2019 주류 |
| WS-DD | UDP/3702 | 약 15~50× | 2021년부터 급증 |
| SSDP(UPnP) | UDP/1900 | 약 30× | 가정용 라우터 다수 |
| DNS(ANY) | UDP/53 | 약 28~54× | 오픈 리졸버 지속 |
| SNMP | UDP/161 | 약 6.5× | v3로 완화 |
이 표가 시사하는 불편한 진실: 인터넷상의 노출된 UDP 서비스 하나만 있어도 스푸핑 출처로 조회되면 공격자의 '무료 증폭기'가 된다.
2. 왜 UDP인가? 커넥션리스가 원죄
반사/증폭은 UDP의 커넥션리스성에 의존한다: 핸드셰이크도 출처 검증도 없어 스푸핑 출처 요청에도 응답을 얻는다. US-CERT는 TA14-017A에서 14개 UDP 기반 증폭 벡터를 들었다. TCP의 3방향 핸드셰이크(SYN은 실제 출처가 ACK해야 함) 때문에 고전적 반사는 거의 불가능——그래서 증폭은 거의 전적으로 UDP 현상이다.
핵심 통찰: 증폭기의 지렛대는 연산 능력이 아니라 잘못 구성된 서비스의 재고다. 공격자는 봇을 기르는 게 아니라 인터넷의 잘못된 구성을 '임대'한다——공격 비용을 거의 제로로 만든다.
3. 벡터 이동: 두더지 잡기 게임
방어가 벡터를 막을 때마다 공격자는 피벗한다.
- 2013–2014: NTP
monlist(약 556×)가 건당 수백 Gbps를 지배. NTP 커뮤니티는 나중에 monlist를 기본 비활성화.
li>2017–2018: CLDAP(약 70×)와 Memcached(약 5.1만×)가 대두. 후자가 1.35 Tbps 기록을 낳음.
- 2021년 이후: WS-DD(UDP/3702, 장치 발견 프로토콜) 폭발——Microsoft는 WS-DD 증폭이 전년 대비 3,300% 증가했다고 보고. 수많은 IoT 기기·프린터·카메라가 기본 활성화하기 때문.
- 2024–2025: Cloudflare 연간 보고서에서 순수 반사가 L3/4 공격의 큰 비중을 차지하나, 단일 벡터 피크는 다중 벡터 하이브리드(반사+직접 플러드+L7)와 Mirai 변종 주도의 Tbps급 직접 공격으로 양보.
4. 근본 원인 vs 증상: BCP 38의 잃어버린 약속
이상적인 궁극 치료는 BCP 38 / RFC 2827(입력 필터링): 각 사업자가 자기 프리픽스 외 출처를 가진 패킷을 엣지에서 폐기해 출처 스푸핑을 인터넷 전체에서 불가능하게 한다. 그러나 30년이 지나도 BCP 38은 한참 미치지 못한다——모든 사업자가 움직여야 하고 단독 배포엔 직접 보상이 없기 때문.
이것은 공유 자원의 비극이다: 각 사업자는 남이 필터하고 자기는 무임승차하기를 바란다. 결과——2014년의 같은 취약점과 2025년에도 싸운다.
5. 방어 측의 양면 작전
BCP 38이 보편화될 때까지 방어는 양면에서 싸워야 한다.
- 잠재적 증폭기로서(hardening): NTP
monlist비활성화, DNS 리졸버를 로컬 재귀로 제한, 엣지에서 인바운드 UDP/3702 ACL 폐기, Memcached를 localhost에 바인드. 자기 서버를 공격자의 공범으로 만들지 마라. - 잠재적 피해자로서(흡수): Tbps급 흡수를 갖춘 전 세계 분산 스크러빙망에 의존, IP를 맹목 차단하지 말고 행위로 UDP 반사 레이트 제한, Anycast로 엣지 희석.
- 능동 인텔: Shadowserver를 구독하고 자기 노출 UDP 서비스를 스캔·수정해 '증폭 가능 자산' 목록에 오르기 전 대처.
결론
반사/증폭은 인터넷의 책임 분산 문제를 비추는 거울이다. 노출된 UDP 서비스와 출처 스푸핑이 남는 한 군비경쟁은 끝나지 않는다. 방어 측의 진짜 벽은 단일 ACL이 아니라 코어에서 Tbps급을 흡수하고 초 단위로 비정상 UDP 행위를 식별하는 아키텍처다. 전 세계가 내일 BCP 38을 배포하기를 기대할 수 없다.