curl과 Python만으로 인증 → IDOR → 데이터 수집까지 재현하고, 발견 취약점을 심각도·CVSS·CWE로 문서화했다.
발견 취약점
| 취약점 | 심각도 | CVSS | CWE |
|---|---|---|---|
| IDOR — 전체 사용자 정보 노출 | Critical | 9.1 | CWE-639 |
| 비밀번호 해시 노출 | Critical | 9.1 | CWE-916 |
| Stored XSS | High | 7.1 | CWE-79 |
| Rate Limiting 부재 | High | 7.5 | CWE-307 |
| 계정 잠금 정책 부재 | High | 7.0 | CWE-645 |
| 타이밍 공격 | Medium-High | 6.5 | CWE-208 |
| 권한 상승 | Medium | 4.3 | CWE-284 |
▍
총 7건 — Critical 2 · High 3 · Medium-High 1 · Medium 1.
시나리오 ① IDOR — 전체 사용자 노출
- 일반 계정으로 로그인해 JWT 획득
- 사용자 조회 API가 소유권 검증 없이 전체 사용자(수백 명)를 반환
- 응답에 bcrypt 해시·이메일·프로필까지 포함 → 오프라인 크래킹·개인정보 유출로 이어짐
시나리오 ② Stored XSS
- username 필드에 <script> / <img onerror=...> 페이로드 입력
- 입력 검증·이스케이프 없이 그대로 저장 → 타 사용자 프로필 조회 시 실행 가능
- 쿠키/세션 탈취로 확대 가능
권고 사항
- 객체 소유권 검증(IDOR) · 응답에서 해시 등 민감 필드 제거
- 입력 검증 + 출력 이스케이프(XSS)
- Rate Limiting · 계정 잠금 정책 · 로그인 상수시간 비교(타이밍)