피드로 돌아가기
Dev.toSecurity
원문 읽기
DNS Rebinding 차단 및 6단계 계층 방어로 Webhook SSRF 완벽 방어
I Spent a Week Securing Webhook Ingestion. The Real Attack Surface Was Delivery.
AI 요약
Context
Ingestion 단계의 HMAC 검증과 Rate Limiting에 치중하여 Delivery Worker의 Outbound 요청 취약점 간과. Tenant가 등록한 DNS 레코드를 변경해 내부 Metadata Service에 접근하는 DNS Rebinding 기반 SSRF 위험 노출.
Technical Solution
- Creation-time 검증의 한계를 극복하기 위해 Delivery-time에 실시간 DNS Resolution 및 IP Validation 수행
- RFC 1918 및 Link-local 범위를 포함한 Private IP Range 블록리스트 적용으로 내부망 접근 원천 차단
- Redirect 횟수를 3-hop으로 제한하고 Response Body를 4,096 bytes로 절삭하여 리소스 고갈 방지
- JSON Depth Limit(20 levels) 및 Payload Cap(1MB) 설정을 통한 Parser Stack Overflow 및 메모리 고갈 방지
crypto.timingSafeEqual을 활용한 HMAC 검증으로 Timing Side-channel 공격 차단- AES-256-GCM 암호화를 통해 DB 유출 시에도 Signing Secret의 가용성을 차단하는 At-rest Encryption 적용
실천 포인트
1. Outbound HTTP 요청 시 DNS resolution 후 최종 IP가 Private Range인지 반드시 확인했는가?
2. Redirect 허용 횟수와 Response Body 크기에 엄격한 Upper Bound를 설정했는가?
3. HMAC 검증 시 Timing Attack 방지를 위해 Constant-time comparison 함수를 사용했는가?
4. JSON 파싱 전 Payload 크기와 Nesting Depth를 제한하여 DoS 공격을 방어하고 있는가?