Настоящий паспорт открыл ему ключи трансляции всех камер ЧМ

Angular-приложение показывало страницу «доступ запрещён». Бэкенд отдавал всё: RTMP-адреса приёма и ключи трансляции для всех пяти ракурсов каждого матча ЧМ-2026. Живой поток он проверил в VLC.

Вкратце

Дыра учебная: роли проверялись только на клиенте. Сервер не валидировал JWT и отдавал инфраструктуру прямого эфира любому, кто зарегистрировался на публичной Agent Platform ФИФА. Запушь поток на RTMP-эндпоинт — и подменишь картинку в телеэфире по всему миру.

Поворот: ФИФА не ответила. Ни подтверждения, ни благодарности, ни выплаты — просто молча закрыли дыру. Половина обсуждения спрашивала, зачем он вообще об этом сообщил.

«Клиент говорит „доступ запрещён“. Сервер говорит „вот вам всё“.»

Исследователь зарегистрировался на публичной Agent Platform ФИФА под своим настоящим паспортом, попал в их тенант Microsoft Entra и обнаружил, что вся система держалась на одной ошибке: Angular-фронтенд проверял JWT на отметку «нет ролей» и рисовал страницу отказа, а бэкенд-API не проверял вообще ничего.

Взлом ФИФА
Взлом ФИФА

Что на самом деле отдавал бэкенд

За экраном отказа панель Streaming Management открывала инфраструктуру прямого эфира ЧМ-2026: RTMP-адреса приёма и ключи трансляции для всех пяти ракурсов каждой камеры, плюс права на запись статистики матча, заметок комментаторов и системы прямого счёта. Панель трансляции выкладывала всё как на ладони.

Обзор панели трансляции
Обзор панели трансляции

Затем он проверил реальный поток камеры, игравший вживую в VLC. Не макет: настоящая стадионная камера.

Живой поток в VLC
Живой поток в VLC

Эти адреса приёма буквально служат трубой от стадионных камер в цепочку вещания ФИФА. Запушь произвольное видео на эндпоинт с открытым ключом трансляции, и в худшем случае каждая телесеть, принимающая поток, покажет то, что ты отправил.

Прецедент с Катара-2022

В обсуждении всплыло, что для ФИФА это не первый раз. Бывший сооснователь GitHub и GitLab проделал тот же трюк на прошлом чемпионате.

Я сделал нечто похожее для Катара-2022 и получил доступ к подаче составов… обещанный «знак признательности» так и не пришёл. (Хотя… в суд на меня не подали, так что считаю это победой.) — Зак Холман, сооснователь workon.co, ранее GitHub и GitLab

Инженер из вещательной индустрии добавил ключевую оговорку скептика: ещё не факт, что эти потоки вообще доходят до вещателей.

Вы уверены, что эти потоки правда идут к вещателям? Это могут быть внутренние потоки для судей, разбора моментов… Потоки для вещания, которые я видел… идут как MPEG-TS, а не через RTMP. — разработчик ПО, специализирующийся на медиаиндустрии

Парадокс раскрытия

ФИФА всё починила и промолчала: ни подтверждения, ни благодарности, ни компенсации, хотя исследователь дошёл до CISA и ФБР. Это молчание развернуло часть обсуждения против самого раскрытия.

Честно, это один из редких случаев, когда я думаю: «ты идиот, что сообщил об этом»… А учитывая, какая ФИФА паршивая контора, я лично просто слил бы это. — комментатор, взвешивающий охват против репутации ФИФА

Неудобное правило под этим всем: когда организация ничего не даёт за добросовестный отчёт, даже ответа, она учит следующего нашедшего либо молчать, либо продавать. Проверка авторизации только на клиенте — учебный баг. Куда более серьёзный провал здесь — система стимулов, которая наказывает того, кто выбрал рикролл вместо выкупа.

Получайте такие разборы каждый день

Главные истории Hacker News — на email, в Telegram или RSS.

Следующая новость · 19 из 23 Читать дальше
🚀Tech

Bash открывает TCP-сокет и подделывает HTTP-запрос без curl

Инженеру нужно было пинговать health-эндпоинт между Docker-контейнерами. В образе не было ни curl, ни wget, ни nc. Тогда он открыл /dev/tcp/service/8642 и набрал HTTP-запрос руками.

★ 271 · 💬 144 · mareksuppa.com · 3 мин