1P by GN⁺ | ★ favorite | 댓글 1개
  • 공개 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개 카메라 피드가 있었음
    • 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에 호스팅됐으며, 미국·멕시코·캐나다 경기장의 라이브 카메라 피드를 받는 운영 엔드포인트였음

라이브 피드 확인과 스트림 제어 가능성

  • 연구자가 프리뷰 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.orgNO_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), 버그 바운티 프로그램, 서버 측 권한 검사를 요구함

댓글과 토론

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 수준인 사업가들로 경영진이 구성돼 있을 것 같은 이미지임
  • 취약점이 존재할 수 있다는 건 이해하지만, 보안 연구자가 이를 신고하려고 FBI에 연락해야 한다면 더 큰 구조적 문제임

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

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

  • 사이트가 모두에게 내려간 건지, 나만 그런 건지 궁금함

    • 일본에서는 접속됨
    • 내 쪽에서는 내려가 있었지만, 태그 바로 아래의 “caches” 링크를 써서 archive.org 링크를 찾았음
    • DNS 서버가 도메인을 필터링하고 있는 건 아닐까? 내 DNS는 이 도메인이 내가 쓰는 차단 목록에 있었기 때문에 필터링했음
      공개 재귀 리졸버로 테스트해 보니 사이트 자체에는 문제가 없어 보였음
      이 도메인은 일주일 전 복사본의 dns blocklistrpz/tif.txt에 들어 있었음. 아마 다른 형식에도 있었을 것 같지만, 내가 쓰는 파일만 확인했음
      어떤 지표로 도메인을 그 목록에 넣는지는 모르겠지만, 최신 릴리스에는 더 이상 없음