내 ID만 있으면 FIFA 월드컵 전체에 Rickroll을 틀 수 있었다
(bobdahacker.com)- 공개 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은 축구 에이전트 라이선스 등록용 공개 포털이며, 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개 카메라 피드가 있었음
PGMTacticalCamera1High Behind LeftHigh Behind Right
- 각 피드는 다음 정보를 포함함
- 카메라가 비디오를 보내는 RTMP ingest URL
- 피드를 시청할 수 있는 preview manifest
- 방송 파트너에게 전달되는 HLS manifest인 output URL
- RTMP ingest URL 끝의 UUID가 스트림 키였고, 같은 경기의 5개 카메라 각도에서 하나의 키가 공유됐음
- 스트리밍 인프라는 FIFA의 스트리밍 기술 파트너 MediaKind에 호스팅됐으며, 미국·멕시코·캐나다 경기장의 라이브 카메라 피드를 받는 운영 엔드포인트였음
라이브 피드 확인과 스트림 제어 가능성
- 연구자가 프리뷰 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 Platformcis.fifa.org— Commentator Information Systemxxxxxxxxx-spreadsheets-api.azurewebsites.net— 개발 환경
- 연구자는 FIFA에
security.txt파일, 취약점 공개 정책(VDP), 버그 바운티 프로그램, 서버 측 권한 검사를 요구함
댓글과 토론
Lobste.rs 의견들
-
FIFA 뇌물 관리 콘솔에도 접근할 수 있었던 건 아닌지 궁금함
- 어쩌면 그게 Debbie.xlsx였을지도 모름
-
could've라니, 실제로 안 한 게 아쉽다- 그러면 아마 엄청난 문제에 휘말렸을 것 같고, 그 정도면 웃음을 위해 감수할 만한 일은 아니었을 듯함
- 참고로 그 사람의 대명사는 she/her임
-
글의 어조가 이해되지 않음
이건 순수하게 재미있는 일임. 이런 침해 사례가 없는 인터넷을 상상하면 너무 지루할 것 같고, 글쓴이는 오히려 고마워해야 함
게다가 아무도 보고하라고 한 적 없는데, 왜 보고가 어려웠다고 불평하는지도 모르겠음. 하고 싶으면 하고, 아니면 안 하면 됨. 그렇게 화가 났다면 악용하든가, 보안 취약점 신고용 이메일이 없다고 불평할 일은 아님
이상한 건 글쓴이가 그런 멍청한 취약점 자체는 탓하지 않고, 신고하기 어렵게 만든 것만 탓한다는 점임- 그 정도 위상의 조직에 보안팀이 없다는 데서 오는 도덕적 분노일 가능성이 큼
- 글은 아마 LLM 생성일 가능성이 높아 보임
근거로는 제목식 대문자 사용, 마침표가 많은 짧은 문장들, “That UUID at the end? [...] That's the stream key” 같은 짧은 수사적 질문, 비기술 글에서 “breakthrough”라는 단어를 쓰는 점이 있음
작성자의 소셜 미디어 긴 글들을 보면 이런 식으로 쓰지 않음 - 글쓴이가 아마 취약점을 처음 발견한 사람이고, 가능한 모든 페이지를 돌아다니며 여기저기 흔적을 남겼고, 신원도 검증했을 것임
그래서 패닉에 빠졌을 가능성이 큼. 아무도 봐서는 안 되는 걸 봤고, 실제 해킹이 발생했다면 첫 번째 용의자가 됐을 테니까 - FIFA의 뻔뻔한 부패를 생각하면, 보안 침해를 굳이 신고하고 뭔가를 기대하는 것 자체가 오히려 이상하게 느껴짐
-
이렇게 거대한 조직들이 기본기도 제대로 못 지키는 게 놀라움
- 딱 IT 보안을 진지하게 여기지 않을 법한 조직으로 보임
컴퓨터 이해도가 Derek Zoolander 수준인 사업가들로 경영진이 구성돼 있을 것 같은 이미지임
- 딱 IT 보안을 진지하게 여기지 않을 법한 조직으로 보임
-
취약점이 존재할 수 있다는 건 이해하지만, 보안 연구자가 이를 신고하려고 FBI에 연락해야 한다면 더 큰 구조적 문제임
-
해커가 FIFA 월드컵을 릭롤했으면 좋았을 것 같음
Las Vegas의 Sphere를 해킹한 것만큼 전설적인 일이 됐을 듯함 -
포털과 스트리밍 패널 사이의 통합을 Copilot에게 대충 만들게 한 뒤 끝낸 것 같다는 생각이 듦
-
사이트가 모두에게 내려간 건지, 나만 그런 건지 궁금함
- 일본에서는 접속됨
- 내 쪽에서는 내려가 있었지만, 태그 바로 아래의 “caches” 링크를 써서 archive.org 링크를 찾았음
- DNS 서버가 도메인을 필터링하고 있는 건 아닐까? 내 DNS는 이 도메인이 내가 쓰는 차단 목록에 있었기 때문에 필터링했음
공개 재귀 리졸버로 테스트해 보니 사이트 자체에는 문제가 없어 보였음
이 도메인은 일주일 전 복사본의 dns blocklist 중 rpz/tif.txt에 들어 있었음. 아마 다른 형식에도 있었을 것 같지만, 내가 쓰는 파일만 확인했음
어떤 지표로 도메인을 그 목록에 넣는지는 모르겠지만, 최신 릴리스에는 더 이상 없음