Burp로 검증하는 OAuth 리프레시 토큰 취약점
Burp를 활용한 OAuth 리프레시 토큰 취약점 점검 절차. 준비와 워크플로우, 주요 검사 항목 및 탐지 사례를 포함한 점검 전략
목차
개요
OAuth 환경에서 리프레시 토큰은 장기 세션을 유지하는 핵심 요소이다. 그러므로 리프레시 토큰의 취약점은 곧 계정 탈취로 이어질 수 있다. 본문은 Burp를 중심으로 리프레시 토큰의 취약점을 체계적으로 점검하는 전략을 설명한다. 초보자도 이해할 수 있도록 기본 개념부터 검사 흐름, 실습 예제까지 단계별로 정리한다.
기본 개념
리프레시 토큰의 역할
리프레시 토큰은 액세스 토큰이 만료되었을 때 새로운 액세스 토큰을 발급받기 위해 사용된다. 액세스 토큰보다 수명이 길며, 노출 시 장기적인 위험을 초래한다.
취약점 유형
- 토큰 재사용 가능성: 한 번 사용한 리프레시 토큰이 무한히 재발급에 사용되는 경우
- 토큰 탈취 시 권한 상승: 발급 과정에서 스코프 검증 누락
- 만료 및 회전 정책 부재: 토큰 회전(token rotation)이 적용되지 않는 경우
- 리프레시 엔드포인트의 CSRF·로그인 세션 혼동
준비사항
- Burp Suite(Proxy, Repeater, Intruder, Extender 등)
- 테스트용 클라이언트 자격증명(권한이 있는 범위)
- 테스트 환경: 스테이징 또는 허가된 범위의 시스템
테스트 워크플로우
1. 시나리오 정의
검사 대상 애플리케이션의 인증 흐름을 파악한다. 리프레시 토큰 발급 시점, 저장 방식, 회전 정책 여부를 문서화한다.
2. 초기 인터셉트
로그인 및 토큰 발급 과정을 Burp Proxy로 가로챈다. 다음 항목을 확인한다.
- 리프레시 토큰 값의 형식(예: 길이, 구조)
- 리프레시 토큰 전송 경로(쿠키, 바디, 헤더)
- HTTPS 적용 여부와 HSTS 설정
3. 재생(Replay) 및 재사용 검사
한 번 사용한 리프레시 토큰을 다시 사용해 본다. 토큰 회전 정책이 있는 경우 원래 토큰이 무효화되는지 확인한다. Burp Repeater와 Intruder가 유용하다.
4. 만료 처리 및 경계 케이스
토큰 만료 시 응답 코드를 확인한다. 만료 후 재발급 시 액세스 권한이 적절히 제한되는지 점검한다. 아래는 리프레시 요청 예시이다.
POST /oauth/token HTTP/1.1
Host: api.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&client_id=app123
5. 권한 상속과 스코프 검사
리프레시로 발급된 액세스 토큰이 원래의 스코프를 유지하는지 확인한다. 임의로 스코프를 변조한 요청에 대해 권한 상승이 발생하는지 점검한다.
6. 동시성·경합 상황
동시에 여러 리프레시 요청을 보냈을 때 회전 정책이 일관되게 적용되는지 확인한다. 경쟁 조건으로 인해 오래된 토큰이 유효화되지 못하는지 검토한다.
Burp를 활용한 세부 기법
Repeater로 수동 검증
단계별로 파라미터를 바꿔가며 응답을 관찰한다. 상태 코드와 응답 본문, Set-Cookie 헤더의 변화가 핵심 지표이다.
Intruder로 자동화된 변이
토큰 값의 일부 바이트를 변형하거나 길이를 줄이는 방식으로 취약한 토큰 검증 로직을 탐색한다. 페이로드 포맷은 무작위 및 패턴 기반을 병행한다.
Scanner/Extender 활용
Burp Extender를 사용해 토큰 회전, 만료, 재사용 테스트를 자동화하는 스크립트를 추가하면 반복 작업을 줄일 수 있다.
결과 해석과 보고
발견된 문제는 재현 단계, 영향도, 재발 방지 권장 사항으로 정리한다. 권장 대책은 다음과 같다.
- 리프레시 토큰 회전 적용 및 이전 토큰 즉시 무효화
- 짧은 유효기간과 강한 저장 정책(HTTPOnly, Secure 쿠키)
- 스코프 검증 강화와 토큰 발급 로그 기록
결론
Burp 리프레시 토큰 테스트와 같은 점검은 OAuth 리스크를 줄이는 핵심 활동이다. 체계적 검사와 명확한 보고가 보안 개선으로 이어진다. 검사 결과는 운영팀과 공유하는 문서로 활용될 수 있다.