피드로 돌아가기
Dev.toSecurity
원문 읽기
Raw Body와 Constant-time Compare 기반의 Webhook 보안 설계
Webhook Signature Verification (HMAC-SHA256) in Node, Python, Ruby — 2026 Guide
AI 요약
Context
JSON 파싱 후 HMAC 연산을 수행함에 따라 발생하는 화이트스페이스 불일치와 Timing Attack 취약점 분석. 검증 로직 부재로 인한 가짜 이벤트 주입 및 비정상적인 비즈니스 로직 실행 위험 상존.
Technical Solution
- Body Parser 미들웨어 작동 전 Raw Request Body를 Buffer 형태로 캡처하여 원본 데이터 무결성 유지
- HMAC-SHA256 알고리즘과 Provider 제공 Signing Secret을 활용한 메시지 인증 코드 생성
crypto.timingSafeEqual등 Constant-time Comparison 함수를 사용한 Timing Attack 원천 차단- Timestamp를 페이로드에 포함하여 Replay Attack을 방지하는 Stripe 방식의 보안 구조 채택
- 환경별 및 엔드포인트별 독립적인 Secret 관리를 통한 Secret Leak 피해 범위 최소화
- Provider별 상이한 Hex/Base64 인코딩 방식 및 Header Prefix 처리 로직 최적화
실천 포인트
- [ ] JSON 파싱 전 단계에서 Raw Body를 수집하는 미들웨어 배치 여부 확인 - [ ] Signature 비교 시 `===` 대신 언어별 Constant-time Compare 함수 사용 여부 검토 - [ ] 환경 변수를 통한 Secret 관리 및 유출 시 즉각적인 Rotation 프로세스 수립 - [ ] Replay Attack 방지를 위한 Timestamp 검증 로직 포함 여부 확인