
Всё началось с регистрации футбольного агента
У FIFA есть FIFA Agent Platform. Это публичный портал, на котором можно зарегистрироваться и стать лицензированным футбольным агентом. Отправляешь документы, верифицируешь почту, вот и всё. Очень просто.
Не ожидал я того, что будет потом.
При регистрации на agents.fifa.org FIFA добавляет аккаунт пользователя в свой тенант Microsoft Entra (ранее Azure AD). Это тот же тенант, который управляет всеми внутренними платформами FIFA.
Первые две попытки зарегистрироваться окончились неудачно, потому что освещение на моих идентификационных фотографиях было недостаточно хорошим:

Третья попытка завершилась удачно. Я получил это прекрасное письмо:

«Доступ запрещён», хотя на самом деле нет
После регистрации я попытался перейти на fdp.fifa.org — FIFA Football Data Platform. Приложение аутентифицировало меня через общий тенант Entra, проверила мои роли, не нашло их и показало такое сообщение:
«К вашему аккаунту не привязано никаких ролей FIFA Football Data Platform».
Вроде всё верно, правда? Доступ запрещён, уходите, не на что тут смотреть.
Но дело в том, что всё это происходило на стороне клиента. Приложение Angular проверяло JWT на наличие маркера NO_ROLES и рендерило страницу о запрете доступа. API бэкенда ничего не проверяли. Они просто отправляли то, что у них попросят.
Добро пожаловать в Streaming Management Panel
Обойдя защиту на стороне клиента, я оказался в панели управления стримингом и остолбенел.

Это не было какое-то окружение разработки или тестовые данные. Это настоящая панель управления стримингом Чемпионата мира в продакшене. Каждый матч, каждый угол камеры, каждый URL получения RTMP, каждый ключ потока.
Разверну один из матчей, чтобы вы видели, что я имею в виду:

У каждого матча есть пять потоков камеры, у каждого из которых есть:
URL получения RTMP (НА который камера отправляет видео).
Preview manifest (где можно ПОСМОТРЕТЬ поток).
URL вывода (манифест HLS, передаваемый партнёрам, занимающимся трансляциями).
URL получения RTMP выглядят так:
rtmp://in-6c81fc99-513f-4c76-82c2-877e0b93f2ea.westeurope.streaming.mediakind.com:1935/96886a14-9987-420f-814c-2f7cec5408ae
А что это за UUID в конце? 96886a14-9987-420f-814c-2f7cec5408ae. Это ключ потока (здесь я его изменил). Он общий для всех углов камер на одном матче. Один ключ, чтобы править всеми
Инфраструктура стриминга хостится на MediaKind, партнёре FIFA по стриминговым технологиям. Это конечные точки продакшена. Именно они в прямом эфире получают потоки с камеры на стадионах США, Мексики и Канады.
Я открыл VLC, всё работало
Мне нужно было убедиться, что preview manifest работают. Один из них я скопировал в VLC.

Я сразу его закрыл. Но ущерб (моему разуму) уже был нанесён. Эти URL предпросмотра демонстрируют видео в прямом эфире. Во время активных матчей. И они доступны любому, у кого есть URL.
Я мог остановить потоки
У меня был доступ не только на чтение. На панели управления стримингом были доступны все элементы управления: начала и конца трансляции, планирования. Для каждого матча и каждого угла камеры.

Я не прикасался ни к одной кнопке. Но они были доступны и работали, и их мог нажать любой с аккаунтом NO_ROLES.
Ядерная опция
Объясню, что это значит.
Эти URL получения RTMP — буквально прямой путь с камер на стадионах в цепочку распространения вещания FIFA. Камера -> получение RTMP -> MediaKind -> партнёры по вещанию -> телевизор.
Если бы нападающий отправил видео на одну из этих конечных точек RTMP с ключом потока (который указан ПРЯМО В URL), то заменил бы поток камеры. Поток PGM (Program) — это основной вывод трансляции. Если заменить его, то все телевизионные сети, получающие поток FIFA, показывали бы то, что отправил нападающий.
Ключ потока общий для всех пяти камер, поэтому один нападающий мог бы одновременно перехватить поток со всех камер.
Он мог бы проиграть Rickroll для всего Чемпионата мира FIFA. Или показать геймплей Subway Surfers.
Я это не тестировал и не передавал ничего на конечные точки RTMP, но инфраструктура для этого уже была готова.
Но и это ещё не всё
У меня был доступ не только к панели управления стримингом: аккаунт с NO_ROLES открывал доступ ко всей платформе.

Также на платформе имелся дэшборд трансляции матчей со встроенным проигрывателем видео, хронологией событий в реальном времени и данными о командах:

Расширенная аналитика (текущего матча)

Управление матчем (доступ на запись)
И здесь ситуация усугубляется: во вкладке Management ресурса fdp.fifa.org есть операции записи. И бэкенд принимает их от аккаунта с NO_ROLES.


Нападающий мог:
Изменять комментарии редакторов и публиковать их в трансляционные системы.
Корректировать официальное время начала матча.
Отправлять данные о тактической расстановке.
Менять счёт и статистику матчей.
Эти данные передаются в Commentator Information System и отображаются в прямом эфире.
Commentator Information System
Доступ к cis.fifa.org тоже был возможен через аккаунт с NO_ROLES. Это дэшборд реального времени, которым пользуются комментаторы матчей.


Когда комментатор говорит: «любопытный факт: Эннер Валенсия, которому 36 лет и 222 дня — самый возрастной полевой игрок из выступавших за Эквадор на Чемпионатах мира», эта информация берётся именно отсюда. Мой аккаунт мог видеть все заметки редакторов, все предматчевые статистические сводки, все темы обсуждения, подготовленные для каждого матча.
Открытое окружение разработчика
В качестве бонуса я нашёл по адресу xxxxxxxxx-spreadsheets-api.azurewebsites.net Azure Function App, возвращавшее метаданные и URL для прямого скачивания с Azure Blob Storage 23 внутренних файлов FIFA.
{ "Size": 10, "Skip": 0, "Total": 23, "Items": [ { "Name": "00_TransferCount_in_ENGLISH.xlsx", "BlobPath": "https://xxxxxxxxx.blob.core.windows.net/spreadsheet-storage/00\_TransferCount\_in\_ENGLISH.xlsx" }, { "Name": "0_pending_transfers_example.xlsx", "BlobPath": "https://xxxxxxxxx.blob.core.windows.net/..." }, { "Name": "Debbie.xlsx", "BlobPath": "https://xxxxxxxxx.blob.core.windows.net/..." } ] }
Это отчёты о трансферах, сравнение доходов, статистика рефери и тренеров. А ещё некий Debbie.xlsx. И всё это без проверок ролей.
Отправка отчёта об уязвимости оказалась настоящим кошмаром
Итак, я обнаружил всё это, когда Чемпионат мира уже шёл. Проводились матчи, URL RTMP были активны, а ключи потоков открыты. Но у FIFA не было ни программы баг-баунти, ни security.txt, ни публичных контактов по вопросам безопасности.
Всё это привело к самой напряжённой ночи в моей жизни.
Попытка 1: электронная почта
Полное описание уязвимости я отправил на все адреса почты FIFA, которые смог найти и придумать:
dataprotection@fifa.org, legal@fifa.org, media@fifa.org, contact@fifa.org и на почту некоторых сотрудников.
Пять из них не были доставлены. Остальные канули в пустоту. Никакого ответа.
Попытка 2: WhatsApp
Я нашёл в LinkedIn Себастьяна Рунге (главу Football Technology & Data в FIFA, 14 лет в организации). Там был указан его телефонный номер. Я написал ему на WhatsApp. Ответа не было.
Попытка 3: телефон головного офиса FIFA
Я позвонил на +41 43 222 7777. Прослушал сообщение о том, что офис закрыт. В Цюрихе был вечер воскресенья.
Попытка 4: линия FIFA для медиа
Позвонил на +41 43 222 7272. Офис тоже закрыт.
Попытка 5: Конференц-центр Далласа
IBC (International Broadcast Centre, Международный центр трансляций) находится в Kay Bailey Hutchison Convention Center в Далласе. Я позвонил на +1 (214) 939-2700. Попал в голосовую почту, оставил сообщение.
Попытка 6: MediaKind
Здесь произошёл прорыв: я позвонил на бесплатную линию MediaKind +1 833 211 8472. Кто-то поднял трубку и сразу понял, в чём проблема. Он попросил меня отправить подробности на электронную почту с ключами потоков в качестве доказательства. Я так и сделал.
Попытка 7: HBS (Host Broadcast Services)
Позвонил на +41 41 726 0090. Мне сказали, что в компании мне никто помочь не может, и повесили трубку. Я перезвонил, ответа не было.
Попытка 8: Infront Sports & Media
Позвонил на +41 41 723 15 15 (родительская компания HBS). Нет ответа.
Попытка 9: CISA
Тут всё стало любопытнее. Я узнал, что CISA (Cybersecurity and Infrastructure Security Agency, Агентство по кибербезопасности и защите инфраструктуры) — это федеральная организация, занимающаяся кибербезопасностью Чемпионата мира FIFA 2026 года, в том числе и системами вещания. Я позвонил в её круглосуточный оперативный центр по номеру +1 888 282 0870.
Трубку подняли и выслушали меня. Попросили отправить подробности по электронной почте. Я так и сделал.
Попытка 10: ФБР
Раньше я работал в кибербезопасности, и у меня сохранились контакты в ФБР. Я написал им в Signal. Они ответили, сказали, что у них есть нужные контакты, но им нужно подать информацию нужным образом.
Хронология
Когда |
Что |
|---|---|
Ночь |
Обнаружена панель управления стримингом. |
Ночь |
Открыл preview manifest в VLC. Убедился, что он рабочий. Сразу же закрыл его. |
Ночь |
Отправил отчёт об уязвимости более чем десятку адресов FIFA. Пять писем не были доставлены. |
Ночь |
Написал в WhatsApp Себастьяну Рунге. |
Ночь |
Позвонил в FIFA Zurich. Офис закрыт. Позвонил на линию FIFA для медиа. Закрыто. |
Ночь |
Позвонил в Конференц-центр Далласа. Голосовая почта. |
Ночь |
Позвонил в MediaKind. Кто-то ответил. Отправил полный отчёт с ключами потоков. |
Ночь |
Позвонил HBS. Трубку повесили. Перезвонил. Ответа не было. |
Ночь |
Позвонил на круглосуточную линию CISA. Меня выслушали. Отправил отчёт. |
Ночь |
Сообщил своим контактам в ФБР через Signal. Они ответили. |
Следующий день |
Уязвимость устранена. FIFA ничего мне не написала. |
Первопричина
Проблема сводится к одной архитектурной ошибке: авторизация на клиенте без проверки на сервере.
Внутренние приложения FIFA используют для аутентификации и управления доступом на основе ролей Microsoft Entra. Фронтенды Angular/React/Vue проверяют токен JWT на указание ролей и соответствующим образом рендерят страницы о запрете доступа. Однако API бэкенда доверяют любому аутентифицированному члену тенанта и передают данные вне зависимости от ролей.
Цепочка атаки:
Зарегистрироваться на agents.fifa.org (доступно публично).
Нас добавляют в тенант Entra FIFA.
Выполняем аутентификацию в любом внутреннем приложении FIFA.
Клиент говорит «доступ запрещён».
Сервер говорит «бери что хочешь».
Этот паттерн затрагивает как минимум эти ресурсы:
fdp.fifa.org (Football Data Platform),
cis.fifa.org (Commentator Information System),
xxxxxxxxx-spreadsheets-api.azurewebsites.net (окружение разработчика).
И потенциально другие, использующие тот же тенант.
Устранение уязвимости
Где-то в промежутке между отправкой отчётов и следующим утром уязвимость была пропатчена. Мой аккаунт NO_ROLES теперь возвращает ответы 403 и от сервера, а не только от клиента.
FIFA так ничего и не ответила. Не подтвердила получение отчёта, не поблагодарила. Не связалась со мной, чтобы обсудить вознаграждение. Ни-че-го.
Но она оставила меня в списке рассылки писем FDP. Я по-прежнему получаю официальные документы о матчах Чемпионата мира FIFA 2026 года: Start Lists, Tactical Lineups, Full Time Match Reports. Все они отправляются с no_reply@fdp.fifa.org на четырёх языках.
Обращение к FIFA
Нужно отдать должное, закрыли дыру вы быстро. Но:
Заведите файл security.txt. Серьёзно, на дворе 2026 год.
Опубликуйте VDP (Vulnerability Disclosure Policy, политику раскрытия уязвимостей). Всё-таки вы проводите крупнейшее спортивное мероприятие в мире.
Авторизация на стороне клиента — это не авторизация, об этом знает любой стажёр.
Когда исследователю приходится звонить в CISA и ФБР, чтобы связаться с вами, то в выстроенных вами процессах что-то явно не так.
Создайте программу баг-баунти. Исследователи не должны звонить в ФБР, чтобы сделать вам одолжение.
Всего хорошего, и спасибо за рыбу!
Комментарии (15)

Nostromo11
24.06.2026 15:17Мой аккаунт
NO_ROLESтеперь возвращает ответы 403 и от сервера, а не только от клиента.Не исключено, что только для вашего аккаунта, попробуйте еще раз! :)

Vsevo10d
24.06.2026 15:17Я все понимаю про этику белого хакинга, но если бы автор взлома написал на табло какого-нибудь матча счет 777-0, это был бы эпичный мем на все времена, а в ФИФА было бы много печеных жоп уже через полчаса после инцидента. А тут человек еще одолжение делал, дозваниваясь функционерам, медийщикам, ФБР, Обаме и в результате такой фейл тупо замели под ковер.

kisaa
24.06.2026 15:17Автор взлома справедливо беспокоился за свою задницу, ибо в этом случае крайним бы оказался именно он.

TimsTims
24.06.2026 15:17Лучше ничего не советуйте, чем давать такие советы. После таких телодвижений кого-то в фифа может и накажут и уязвимость даже исправят, но потом придется много лет провести за решеткой, доказывая ФБР что ты ничего такого не хотел сделать.
Сколько было историй, как даже белых хакеров пытаются прессовать, а если сделать счёт 777-0, то это уже не просто не авторизованный доступ, а вредителькая деятельность, за которую положена (по закону) ответственность.
В общем, видите уязвимость - лучше не используйте её, если у вас нет на то полномочий.

FatherYan
24.06.2026 15:17Власти всерьез обеспокоены возможностями новейших ИИ устроить массовые кибератаки, пытаются ограничить к ним доступ. Но при таком уровне "защиты" никакие новейшие модели не нужны - можно обойтись чем-то совсем старым с промптом типа "Попробуй получить доступ к наиболее важным и/или популярным ресурсам используя банальные уязвимости, много токенов не трать"

nixtonixto
24.06.2026 15:17Когда исследователю приходится звонить в CISA и ФБР, чтобы связаться с вами, то в выстроенных вами процессах что-то явно не так.
Дело наверное не в процессах, а в том, что автор звонил ночью воскресенья.

Verona90210
24.06.2026 15:17ФИФА конечно молодцы, заигнорили репорт, втихаря накатили патч и сделали вид, что так и было :))

SaX_KT
24.06.2026 15:17Интересно, с учётом того, что буки коэффициенты ввставляют скриптами, какой был бы коэффициент на ничью тех же Бритов и Ганы, если в протоколе на 92й минуте поставить счёт в пользу Великобритании?)
kenomimi
Кто-то в ФИФА поиграл в вайбкодинг и проиграл. Хорошо попался честный и очень настырный хакер (дошел аж до ФБР), а не тот, который молча продал бы найденое на блекмаркет...
Freeman_RU
Нейронка такое не напишет. А вот индусы, которые это писали - легко. Фифа это адище
Nostromo11
Да какой там вайбкодинг, коррупционеры из ФИФА по традиции распилили выделенное на цифровую инфраструктуру бабло, а на жалкий процент от суммы наняли студента. Хотя я не исключаю, что студент использовал вайбкодинг.
vanxant
Да ну нет же, в любой не-ИТ и не-секретной конторе примерно так всё и обстоит.
ИБ для них это статья чистых расходов. Выделяется минимальный бюджет, и он уходит или своим "племянникам", или самым дешёвым рукожопам по тендеру. В любом случае никто не то что не делает, но не может, не хочет и не умеет.
Даже если бы чувак на церемонии открытия пустил гитлер-порн вместо трансляции, нихрена бы не изменилось.
Verona90210
Так везде, пока жареный петух в виде слитой базы или криптолокера не клюнет)