피드로 돌아가기
Dev.toSecurity
원문 읽기
FamilyId 기반 Reuse Detection 도입으로 Refresh Token 탈취 공격 무력화
If your refresh token gets stolen, rotation alone won't save you — here's what does
AI 요약
Context
Refresh Token Rotation만으로는 공격자와 정당한 사용자가 토큰 갱신 경쟁을 벌이는 Race Condition 상황을 구분할 수 없는 한계 존재. 서버 관점에서 단순 갱신 요청의 연속으로 인식되어 세션 탈취 여부를 감지하지 못하는 보안 공백 발생.
Technical Solution
- FamilyId 개념 도입을 통한 단일 로그인 세션 내 모든 파생 토큰의 그룹화 관리
- 이미 Rotation 된 토큰의 재사용 요청 발생 시 해당 FamilyId 전체 세션을 즉시 Revoke 하는 무효화 로직 설계
- SPA 다중 탭 요청 및 네트워크 재시도로 인한 False Positive 방지를 위해 약 30초의 Grace Window 설정
- ReplacedByTokenHash 필드를 활용해 토큰의 교체 이력과 무효화 시점을 추적하는 상태 관리 구조 채택
- FamilyId 기반 Bulk Operation을 통한 연결된 모든 활성 토큰의 일괄 제거로 공격자 접근 완전 차단
실천 포인트
1. Refresh Token Rotation 도입 시 단순 교체가 아닌 Reuse Detection 로직이 포함되었는지 확인
2. 세션 그룹화를 위한 FamilyId 또는 SessionId 식별자 설계 및 데이터베이스 인덱싱 검토
3. UX 저해를 최소화하면서 보안성을 유지하는 적정 Grace Window(약 30초) 설정 및 테스트
4. Reuse Detection 이벤트 발생 시 SIEM 또는 알림 시스템(Slack 등)과 연동하여 이상 징후 모니터링 구축