서명 검증 안 한 마이크로소프트 API, 17조 개의 데이터행 노출
원제 I Could've Accessed 17T Microsoft Records
143 포인트댓글 68

Key Point
JWT 서명 검증 누락이라는 기초적 실수로 17조 행의 내부 데이터베이스에 접근 가능했던 사례로, 인증 시스템의 서명 확인이 얼마나 중요한지 보여주는 실례입니다.
핵심 요약
- 마이크로소프트 내부 분석 서비스인 Titan이 로그인 토큰의 서명을 검증하지 않아 17조 3,330억 개의 저장된 데이터행에 접근 가능했다.
- 16세 보안연구자 Faav가 자신의 AI 해킹봇 Antares의 도움으로 VPN 제한이 있는 API를 발견한 후, 10일간 JWT 검증 메커니즘을 분석했다.
- 공개 Swagger 파일을 통해 /v2/Query 엔드포인트를 찾았는데, 이 엔드포인트는 Azure AD 인증 없이도 원본 SQL을 실행할 수 있었다.
- Wayback Machine의 아카이브된 설정에서 56개 테이블 정의를 복구했으며, 토큰의 각 필드(테넌트, 오디언스, 앱 ID)를 변경해도 Titan이 서명을 확인하지 않음을 발견했다.
- 알고리즘 값을 'none'으로 설정한 서명 없는 JWT를 생성해 제출했으나, 실제 UPN을 모르면 데이터에 접근할 수 없었다.
- 밤 1시에 upn 값을 'admin'으로 변경했을 때 처음으로 SQL이 실행되었고, 시스템이 upn을 로컬 사용자명으로 사용하고 있음을 깨달았다.
- 관리자 권한으로 접근 후 30개의 활성 라우팅 대상과 17개의 연결된 분석 데이터베이스를 확인했으며, 총 9,863개의 고유 테이블을 발견했다.
- 직원 25,000명의 이름·이메일·로그인 기록, 17,990개의 직원 이메일, 15,001개의 조직 기록과 Bing 분석 데이터에 접근 가능했다.
- Bing 데이터에는 검색 기록, 식별자, 국가·주 수준의 위치 정보가 포함되어 있었으며, MUID를 통해 여러 서비스 간 사용자 활동을 연관지을 수 있었을 것으로 보인다.
- 2026년 9월 5일 취약점을 MSRC에 즉시 보고했으며, 9월 9일 API 엔드포인트가 잠금 처리되고 9월 17일 $5,000의 버그 바운티를 받았다.
- 본인은 고객 데이터나 개인정보에 실제로 접근하지 않았으며, 보고서 초안은 마이크로소프트가 편집 권한을 행사해 공개 전 수정 및 삭제를 요청했다.
- AI의 자동화된 탐색과 인간의 직관이 결합되어 이 발견이 가능했으며, 개발자는 JWT 검증 시 서명 확인을 가장 중요하게 여겨야 한다는 교훈을 남겼다.