# 내 ID만 있으면 FIFA 월드컵 전체에 Rickroll을 틀 수 있었다

> Clean Markdown view of GeekNews topic #30585. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=30585](https://news.hada.io/topic?id=30585)
- GeekNews Markdown: [https://news.hada.io/topic/30585.md](https://news.hada.io/topic/30585.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-06-18T09:04:57+09:00
- Updated: 2026-06-18T09:04:57+09:00
- Original source: [bobdahacker.com](https://bobdahacker.com/blog/fifa-hack)
- Points: 1
- Comments: 1

## Topic Body

- 공개 **FIFA Agent Platform** 가입만으로 FIFA의 Microsoft Entra 테넌트에 들어가 2026 FIFA World Cup 운영용 Football Data Platform과 방송 스트리밍 관리 기능까지 접근할 수 있었음
- 원인은 JWT의 `NO_ROLES` 상태를 프런트엔드만 확인하고, 백엔드 API가 역할을 강제하지 않은 **클라이언트 측 권한 검사**였음
- 노출된 Streaming Management 패널에는 경기별 5개 카메라 피드의 **RTMP ingest URL**, 프리뷰 manifest, 출력 URL, 스트림 키가 있었고 VLC에서 라이브 프리뷰 피드가 재생됨
- 접근 범위는 조회를 넘어 경기 스트림 시작·중지·예약, 라이브 통계·킥오프 시각·스코어·전술 라인업 등 일부 **쓰기 작업**까지 포함됐으며 Commentator Information System과 개발용 Azure Function App도 열려 있었음
- FIFA는 직접 응답하지 않았지만 제보 다음 날 서버가 `403`을 반환하도록 수정됐고, 연구자는 `security.txt`, 취약점 공개 정책, 버그 바운티, 서버 측 권한 검사를 요구함

---

### 공개 Agent Platform 가입이 내부 접근으로 이어짐
- [FIFA Agent Platform](https://agents.fifa.org)은 축구 에이전트 라이선스 등록용 공개 포털이며, ID 제출과 이메일 인증으로 가입할 수 있음
- 가입 완료 후 계정이 FIFA의 **Microsoft Entra** 테넌트에 추가됐고, 이 테넌트가 FIFA 내부 플랫폼 전반에 쓰이고 있었음
- 연구자는 ID 사진 조명 문제로 두 번 실패한 뒤 세 번째 시도에서 가입에 성공함
- 이후 `fdp.fifa.org`에 접속하자 Football Data Platform은 인증을 통과시킨 뒤 역할이 없다는 화면을 표시함
  - 화면에는 계정에 “FIFA Football Data Platform role”이 없다는 접근 거부 메시지가 나타남
  - 실제 검사는 Angular 앱의 **클라이언트 측 렌더링**에 머물렀고, 백엔드 API는 요청 데이터를 반환함

### Streaming Management 패널 노출
- 클라이언트 측 가드를 우회하자 FIFA World Cup 2026의 **운영용 Streaming Management 패널**에 접근 가능했음
- 패널에는 모든 경기와 카메라 각도, RTMP ingest URL, 스트림 키가 표시됨
- 경기마다 5개 카메라 피드가 있었음
  - `PGM`
  - `Tactical`
  - `Camera1`
  - `High Behind Left`
  - `High Behind Right`
- 각 피드는 다음 정보를 포함함
  - 카메라가 비디오를 보내는 **RTMP ingest URL**
  - 피드를 시청할 수 있는 **preview manifest**
  - 방송 파트너에게 전달되는 HLS manifest인 **output URL**
- RTMP ingest URL 끝의 UUID가 스트림 키였고, 같은 경기의 5개 카메라 각도에서 하나의 키가 공유됐음
- 스트리밍 인프라는 FIFA의 스트리밍 기술 파트너 [MediaKind](https://mediakind.com)에 호스팅됐으며, 미국·멕시코·캐나다 경기장의 라이브 카메라 피드를 받는 운영 엔드포인트였음

### 라이브 피드 확인과 스트림 제어 가능성
- 연구자가 프리뷰 manifest를 VLC에 복사하자 도쿄의 PC에서 활성 경기의 **라이브 tactical camera feed**가 재생됨
- 확인 직후 피드를 닫았지만, 프리뷰 URL이 활성 경기 중 라이브 비디오를 제공한다는 점은 확인됨
- Streaming Management 패널은 조회뿐 아니라 **start, stop, schedule** 같은 제어 기능도 제공함
- 연구자는 제어 버튼을 누르지 않았지만, 모든 경기와 모든 카메라 각도에 대한 제어 기능이 패널에 보였음
- RTMP ingest URL은 경기장 카메라에서 MediaKind와 방송 파트너로 이어지는 입력 경로였음
  - 흐름은 카메라 → RTMP ingest → MediaKind → 방송 파트너 → TV로 이어짐
  - 공격자가 스트림 키와 함께 RTMP 엔드포인트에 영상을 푸시하면 카메라 피드를 교체할 수 있었음
  - `PGM`은 메인 방송 출력이라, 이를 교체하면 FIFA 피드를 받는 TV 네트워크에 공격자가 보낸 영상이 표시될 수 있었음
- 연구자는 어떤 RTMP 엔드포인트에도 영상을 푸시하지 않았다고 명시함

### Football Data Platform의 다른 기능 노출
- `NO_ROLES` 계정은 Streaming Management 외에도 Football Data Platform의 여러 영역에 접근할 수 있었음
  - Competitions
  - Matches
  - Teams
  - Tools
  - Exchange Platform
  - Analysis Dashboard
  - Commentator Information System
  - FIFA AI Pro
  - Admin
- 라이브 경기 대시보드는 내장 비디오 플레이어, 실시간 이벤트 타임라인, 경기 임원 데이터를 포함함
- 예시로 Côte d'Ivoire vs Ecuador 경기가 라이브 상태로 표시됐고, 옐로카드 타임라인과 match officials 정보가 함께 보였음
- Advanced Analytics에는 live possession control, attempt creation breakdowns, ball recovery timing, distance covered, FIFA AI Pro 통합이 포함됨

### 경기 관리 쓰기 작업과 방송 데이터 영향
- `fdp.fifa.org`의 Management 탭에는 **쓰기 작업**이 있었고, 백엔드는 `NO_ROLES` 계정의 요청을 받아들였음
- “Update Live Stats” 화면에는 rich text editor, 경기 시간, 경기 스코어 필드, `Edit and Publish` 버튼이 있었음
- 접근 가능한 관리 항목은 다음과 같았음
  - Attendance
  - Possession
  - Post Match Statistics
  - Team Registration Statistics
  - Analysis Finished
  - Score and Statistics
  - Adjust Kick-off Moment
  - Performance Data
  - Send Tactical Lineup
  - Event Ingress Details
- 공격자는 다음 작업을 할 수 있었음
  - 방송 시스템으로 전달되는 editorial commentary notes 수정 및 게시
  - 공식 킥오프 시각 조정
  - tactical lineup data 전송
  - 스코어와 경기 통계 변경
- 해당 데이터는 Commentator Information System으로 들어가며 라이브 TV에 표시된다고 정리됨

### Commentator Information System 접근
- `cis.fifa.org`도 `NO_ROLES` 계정으로 접근 가능했음
- 이 시스템은 라이브 경기 중 방송 해설자가 사용하는 **실시간 대시보드**였음
- FIFA World Cup 2026 대시보드에는 라이브 스코어, 예정 경기, 결과가 표시됨
- Côte d'Ivoire vs Ecuador 경기의 75분 시점 화면에는 전술 뷰, 선수 위치, 포메이션, 라이브 통계, 교체 타임라인, 선수단 데이터가 포함됨
- 계정에서 해설자용 editorial note, pre-match stats kit, talking point도 볼 수 있었음

### 개발 환경 Azure Function App 노출
- 연구자는 `xxxxxxxxx-spreadsheets-api.azurewebsites.net` 형태의 **Azure Function App**도 발견함
- 이 API는 23개 내부 FIFA 파일의 메타데이터와 Azure Blob Storage 직접 다운로드 URL을 반환함
- 응답에는 `00_TransferCount_in_ENGLISH.xlsx`, `0_pending_transfers_example.xlsx`, `Debbie.xlsx` 같은 파일명이 포함됨
- 파일 내용으로는 transfer reports, revenue comparisons, board-level representation data, referee and coach statistics가 언급됨
- 이 API 역시 역할 검사가 없었음

### 제보 시도와 연락 경로
- 연구자는 월드컵 진행 중 문제를 발견했지만, FIFA에는 버그 바운티 프로그램, `security.txt`, 공개 보안 연락처가 없었다고 밝힘
- 여러 FIFA 이메일 주소와 직원 이메일로 전체 제보를 보냈으나 5개는 반송됐고 나머지는 응답이 없었음
- LinkedIn에서 FIFA의 Head of Football Technology & Data인 Sebastian Runge를 찾아 WhatsApp으로 연락했지만 답을 받지 못함
- FIFA 취리히 본부와 FIFA 미디어 라인에 전화했지만, 취리히의 일요일 저녁이라 닫혀 있었음
- International Broadcast Centre가 있는 Dallas의 Kay Bailey Hutchison Convention Center에도 전화했으나 음성사서함으로 연결됨
- MediaKind의 수신자 부담 전화는 연결됐고, 담당자는 문제를 즉시 이해한 뒤 스트림 키를 포함한 세부 내용을 이메일로 보내 달라고 요청함
- HBS에는 전화했지만 도움 가능한 사람이 없다는 답변 뒤 통화가 종료됐고, 재통화는 연결되지 않음
- HBS의 모회사 Infront Sports & Media에도 전화했지만 연결되지 않음
- 연구자는 CISA가 FIFA World Cup 2026의 방송 시스템을 포함한 사이버보안 연방 리드라는 점을 확인하고 24/7 운영 센터에 연락함
  - CISA는 전화를 받았고 세부 내용을 이메일로 요청함
- 기존 사이버보안 업무로 알고 있던 FBI 연락처에도 Signal로 연락했고, FBI 측은 연락망이 있으며 적절히 패키징해야 한다고 응답함

### 수정 이후에도 남은 노출
- 제보와 다음 날 사이에 취약점은 수정됐고, 연구자의 `NO_ROLES` 계정은 클라이언트 접근 거부 화면 대신 서버의 **403 응답**을 받게 됨
- FIFA는 제보 확인, 감사, 보상 논의 등 어떤 직접 응답도 하지 않았음
- 다만 연구자는 여전히 FDP 이메일 배포 목록에 남아 있었고, FIFA World Cup 2026 공식 경기 문서를 받고 있다고 밝힘
  - Start Lists
  - Tactical Lineups
  - Full Time Match Reports
  - 4개 언어로 발송되는 문서

### 원인은 서버 측 권한 강제 부재
- 근본 원인은 **서버 측 권한 강제 없이 클라이언트에서만 권한을 검사한 구조**였음
- FIFA 내부 애플리케이션은 Microsoft Entra로 인증과 역할 기반 접근 제어를 사용했지만, 프런트엔드는 JWT role claim을 확인해 접근 거부 화면을 렌더링하는 데 그침
- 백엔드 API는 인증된 테넌트 구성원이라는 사실만 신뢰했고, 역할과 무관하게 데이터를 제공함
- 공격 흐름은 다음과 같았음
  - `agents.fifa.org`에 공개 등록
  - FIFA Entra 테넌트에 계정 추가
  - FIFA 내부 앱에 인증
  - 클라이언트는 접근 거부 표시
  - 서버는 데이터 제공
- 이 패턴은 최소한 다음 시스템에 영향을 줬음
  - `fdp.fifa.org` — Football Data Platform
  - `cis.fifa.org` — Commentator Information System
  - `xxxxxxxxx-spreadsheets-api.azurewebsites.net` — 개발 환경
- 연구자는 FIFA에 `security.txt` 파일, 취약점 공개 정책(VDP), 버그 바운티 프로그램, 서버 측 권한 검사를 요구함

## Comments



### Comment 59845

- Author: neo
- Created: 2026-06-18T09:04:58+09:00
- Points: 1

###### [Lobste.rs 의견들](https://lobste.rs/s/z5wfi9/i_could_ve_rickrolled_entire_fifa_world) 
- FIFA **뇌물 관리 콘솔**에도 접근할 수 있었던 건 아닌지 궁금함
  - 어쩌면 그게 **Debbie.xlsx**였을지도 모름

- `could've`라니, 실제로 안 한 게 아쉽다
  - 그러면 아마 엄청난 문제에 휘말렸을 것 같고, 그 정도면 웃음을 위해 감수할 만한 일은 아니었을 듯함
  - 참고로 그 사람의 대명사는 she/her임

- 글의 **어조**가 이해되지 않음  
  이건 순수하게 재미있는 일임. 이런 침해 사례가 없는 인터넷을 상상하면 너무 지루할 것 같고, 글쓴이는 오히려 고마워해야 함  
  게다가 아무도 보고하라고 한 적 없는데, 왜 보고가 어려웠다고 불평하는지도 모르겠음. 하고 싶으면 하고, 아니면 안 하면 됨. 그렇게 화가 났다면 악용하든가, 보안 취약점 신고용 이메일이 없다고 불평할 일은 아님  
  이상한 건 글쓴이가 그런 멍청한 취약점 자체는 탓하지 않고, 신고하기 어렵게 만든 것만 탓한다는 점임
  - 그 정도 위상의 조직에 **보안팀**이 없다는 데서 오는 도덕적 분노일 가능성이 큼
  - 글은 아마 **LLM 생성**일 가능성이 높아 보임  
    근거로는 제목식 대문자 사용, 마침표가 많은 짧은 문장들, “That UUID at the end? [...] That's the stream key” 같은 짧은 수사적 질문, 비기술 글에서 “breakthrough”라는 단어를 쓰는 점이 있음  
    작성자의 소셜 미디어 긴 글들을 보면 이런 식으로 쓰지 않음
  - 글쓴이가 아마 취약점을 처음 발견한 사람이고, 가능한 모든 페이지를 돌아다니며 여기저기 흔적을 남겼고, 신원도 검증했을 것임  
    그래서 패닉에 빠졌을 가능성이 큼. 아무도 봐서는 안 되는 걸 봤고, 실제 해킹이 발생했다면 첫 번째 용의자가 됐을 테니까
  - FIFA의 **뻔뻔한 부패**를 생각하면, 보안 침해를 굳이 신고하고 뭔가를 기대하는 것 자체가 오히려 이상하게 느껴짐

- 이렇게 거대한 조직들이 **기본기**도 제대로 못 지키는 게 놀라움
  - 딱 IT 보안을 진지하게 여기지 않을 법한 조직으로 보임  
    컴퓨터 이해도가 Derek Zoolander 수준인 사업가들로 경영진이 구성돼 있을 것 같은 이미지임

- 취약점이 존재할 수 있다는 건 이해하지만, **보안 연구자**가 이를 신고하려고 FBI에 연락해야 한다면 더 큰 구조적 문제임

- 해커가 FIFA 월드컵을 **릭롤**했으면 좋았을 것 같음  
  Las Vegas의 Sphere를 해킹한 것만큼 전설적인 일이 됐을 듯함

- 포털과 스트리밍 패널 사이의 통합을 **Copilot**에게 대충 만들게 한 뒤 끝낸 것 같다는 생각이 듦

- 사이트가 모두에게 내려간 건지, 나만 그런 건지 궁금함
  - 일본에서는 접속됨
  - 내 쪽에서는 내려가 있었지만, 태그 바로 아래의 “caches” 링크를 써서 [archive.org 링크](https://web.archive.org/web/3/https%3A%2F%2Fbobdahacker.com%2Fblog%2Ffifa-hack)를 찾았음
  - DNS 서버가 도메인을 필터링하고 있는 건 아닐까? 내 DNS는 이 도메인이 내가 쓰는 차단 목록에 있었기 때문에 필터링했음  
    공개 **재귀 리졸버**로 테스트해 보니 사이트 자체에는 문제가 없어 보였음  
    이 도메인은 일주일 전 복사본의 [dns blocklist](https://github.com/hagezi/dns-blocklists) 중 [rpz/tif.txt](https://github.com/hagezi/dns-blocklists/blob/d5239924d337805eeeeaee7461d393b939b046bb/rpz/tif.txt)에 들어 있었음. 아마 다른 형식에도 있었을 것 같지만, 내가 쓰는 파일만 확인했음  
    어떤 지표로 도메인을 그 목록에 넣는지는 모르겠지만, 최신 릴리스에는 더 이상 없음
