2026年6月15日深夜,东京。
一个20岁的女孩坐在电脑前,VLC播放器里正实时播放着FIFA世界杯2026的一场正式比赛——Côte d'Ivoire对阵Ecuador的战术机位画面。画面来自FIFA官方的生产级流媒体管理面板,她直接拿到了RTMP推流地址和Stream Key。
她叫BobDaHacker,认证伦理黑客,一名自闭症患者。整个过程她只做了一件事:在FIFA公开的经纪人注册平台上,上传了一张身份证。
没有0day漏洞,没有社工技巧,没有渗透测试。就是一张自拍身份证,填一个公开表单,点了几下按钮。
然后她拿到了2026世界杯所有比赛、所有机位的直播控制权。
▲ BobDaHacker在个人博客上完整披露了这次发现的全部细节,标题本身就概括了整个故事:一张身份证就能让全球世界杯直播变成Rickroll
注册经纪人,拿到世界杯控制权
故事从 agents.fifa.org 开始。
这是FIFA官方面向全球开放的足球经纪人注册平台。任何人都可以访问,填表,上传身份证,验证邮箱,然后就成为了FIFA认证的足球经纪人——至少系统这么认为。
Bob尝试了三次。前两次因为身份证照片光线问题被拒,她在博文里调侃:"FIFA对我自拍的标准比对我的实际安全更高。"第三次通过了。
随后她收到了一封确认邮件,主题写着:"FIFA - FAP - CONFIRMATION"。
注意这个缩写:FAP。FIFA Agent Platform。
"我没在编,"Bob写道,"FAP CONFIRMATION。行,往下说。"
关键的一步在这里自动发生了:注册成功后,FIFA把她的账号加进了自己的Microsoft Entra企业租户(原Azure Active Directory)。这个租户管理着FIFA所有内部平台的访问权限——不是一个子域,不是一个隔离环境,就是同一个身份边界。
她现在的身份是:FIFA Entra租户的一个合法成员,角色标记为 NO_ROLES。
"拒绝访问"是假的
Bob尝试登录 fdp.fifa.org——FIFA足球数据平台的内部应用。
前端Angular应用检查了她的JWT,发现 NO_ROLES 标记,然后渲染了一个标准拒绝页面:"Sorry, you do not have any FIFA Football Data Platform role assigned to your account."
看起来一切正常。权限控制生效了。
但这是纯前端校验。
整个"拒绝访问"判断只在浏览器端的JavaScript里执行。后端API没有做任何角色检查。只要请求带着合法的Entra认证令牌,后端就照单全收。
绕过的办法极其朴素:你不需要黑进什么系统,不需要注入代码,不需要中间人攻击。前端逻辑挡的是UI渲染,挡不了你对API直接发请求。
Bob直接访问了后端接口,数据全回来了。
流媒体管理面板:五个机位,全部裸奔
她进入了 Streaming Management 面板。
"我的下巴掉到了地板上,"她写道。
面板里不是测试数据,不是开发环境。是2026 FIFA世界杯的实时生产系统。每一场正在进行和即将进行的比赛,全部在那里。每场比赛五个机位,每一个机位都带着完整信息:
- RTMP推流地址
(ingest URL):摄像机信号从这里推送进FIFA的流媒体管道 - Stream Key
(流密钥):推流认证凭据 - 预览manifest
:可以直接用VLC打开的实时画面地址 - 输出HLS地址
:分发给全球广播商的最终信号
RTMP地址长这样:
rtmp://in-6c81fc99-513f-4c76-82c2-877e0b93f2ea.westeurope.streaming.mediakind.com:1935/96886a14-9987-420f-814c-2f7cec5408ae
末尾那段UUID就是Stream Key。而且同一场比赛全部五个机位共享同一把key。一把钥匙开所有门。
基础设施托管在MediaKind——FIFA的流媒体技术核心合作伙伴。这些端点在欧洲西部数据中心运行,正是接收各体育场实时摄像机信号的同一套系统。
Bob在VLC里打开了一个预览manifest。她想确认是不是真的。
是真的。
"Côte d'Ivoire对阵Ecuador的实时战术机位画面。在VLC里播放。在我的电脑上。在东京。"
她立刻关掉了VLC。但这个画面已经刻进她的脑子里。
不只是看,还能推
如果只是能看到画面,这已经是严重的信息泄露了。但面板里还有更多东西。
Start、Stop、Schedule。每个比赛,每个机位。
"一次点击,"Bob写道,"只要点一下,就能切断一个正在直播的世界杯机位信号。"
她没有点击任何控制按钮。但按钮都在那里,功能齐全,等任何一个NO_ROLES账户来按。
更深的细节:Stream Key是共享的,匹配同一个RTMP推流地址。这意味着什么?一个攻击者用一个key,可以同时向一场比赛的五个机位推流。PGM主信号、战术机位、Camera1、高后左、高后右——你想换哪个就换哪个。
核按钮:一颗Rickroll炸掉全球转播
把摄像机到观众电视的完整链条摊开看:
体育场五路摄像机 → 编码器 → RTMP推流到MediaKind ingest端点 → 实时转码与分包 → HLS/DASH多码率输出 → 全球CDN → 各国广播商接收 → 你的电视、手机、酒吧大屏。
任何能向RTMP ingest端点推流的实体,就坐在摄像机的控制室里。
现在回头看Bob面板里看到的东西:RTMP推流地址已经有了,Stream Key已经有了。攻击者唯一需要做的事是:把一段视频推到那个地址上,替换掉摄像机信号。
PGM(Program)机位是主广播输出。替换PGM,全球所有购买了FIFA信号的电视网络、OTT平台、酒店、酒吧、手机App同时播出你推的东西。
Bob在博文里把话挑明了:
"An attacker could have rickrolled the entire FIFA World Cup. Or played Subway Surfers gameplay. Live. On every TV network worldwide. During an active match."
「攻击者本可以在全球所有电视网上,用Rickroll劫持整届FIFA世界杯直播。或者在正赛进行期间,放Subway Surfers跑酷视频。实时播出。全球同步。」
她没有测试这一点。没有向任何RTMP端点推送任何内容。
但基础设施是敞开的。
▲ 安全情报账号vx-underground在事发当天下午发帖,信息迅速扩散至整个安全社区
不止流媒体,整个数据平台都开着
Bob继续探索,发现流媒体管理面板只是冰山最上层的一角。
评论员信息系统(cis.fifa.org)同样对NO_ROLES账户开放。这是解说员在直播中使用的实时数据仪表盘。当你在电视上听到"一个冷知识:Enner Valencia以36岁222天的年龄成为厄瓜多尔在世界杯出场的最年长外场球员"——这些信息就来自CIS。
她的NO_ROLES账户能看到每场比赛的全部编辑笔记、赛前数据包、解说员准备的每个话题要点。
比赛管理面板有写入权限。后端接受NO_ROLES账户的写操作。"Update Live Stats"按钮配富文本编辑器,旁边是可以修改的比赛时间和比分字段,下方就是"Edit and Publish"按钮。
攻击者可以修改比分、控球率、开球时间、战术阵型;可以篡改解说员看到的数据;可以伪造阵容和比赛事件。这些数据最终会出现在电视字幕、VAR辅助系统和官方数据推送里。
还有23个内部Excel文件。一个Azure Function应用直接返回了Azure Blob Storage的下载链接,内容包括转会统计、收入对比、董事会成员数据、裁判和教练统计——连文件名都没改,其中一个是 Debbie.xlsx。
所有这些,零角色检查。
凌晨三点,她开始打FBI的电话
Bob发现这些的时候,世界杯比赛正在进行。RTMP地址活跃,Stream Key暴露,控制按钮就位。而FIFA没有bug bounty、没有security.txt、没有公开安全联系人。
接下来是——她自己的原话——"人生中最紧张的一夜。"
邮件。她向所有能找到或猜到的FIFA邮箱发送了完整披露报告:security@、press@等十几个地址。五封被退信。剩下的石沉大海。无人回复。
WhatsApp。她找到了FIFA足球技术与数据主管Sebastian Runge的LinkedIn,上面有电话。深夜WhatsApp发过去。无回。
电话。FIFA苏黎世总部——已下班。媒体热线——关门。达拉斯国际广播中心——语音信箱。
转机:MediaKind。她拨了MediaKind的美国免费热线 833-211-8472。有人接了。对方一听就明白了问题严重性。要求她把详细报告和Stream Key一起发邮件过去,作为证据。她发了。
HBS。挂断。再打,无人接听。
CISA。美国网络安全和基础设施安全局,2026世界杯网络安全的联邦牵头机构。24/7运营中心。电话 888-282-0870。接听了,记录了,要了邮件。她发了。
FBI。Bob此前因安全研究工作与FBI有联系。她通过Signal联系了FBI联系人。对方回应,说他们有关系渠道,需要"以正确的方式包装递进去"。
▲ BankInfoSecurity在24小时内发文确认,核心引用了Bob博客中的关键段落,包括"Rickroll全球世界杯"那句
次日修好,FIFA至今沉默
凌晨到白天之间,漏洞被修复了。
Bob的NO_ROLES账户现在向fdp.fifa.org发请求,服务端返回真实的403,前端渲染的拒绝页终于有了对应的后端校验。
FIFA从未回复她。没有确认收到报告,没有感谢,没有讨论补偿。什么都没有。
但有一件事他们做了——把她留在了FDP邮件列表里。
Bob至今仍在收到FIFA官方的世界杯比赛文件:Start List(首发名单)、Tactical Lineup(战术阵型)、Full Time Match Report(完场报告)。来自 fdp@fifa.org。四种语言。
她发现的漏洞被修好了,她的邮箱还留在系统里。没人记得把她移出去。
一个反模式,一篇公开信
根因是一个入门课级别的反模式:客户端授权,服务端零校验。
FIFA内部应用使用Microsoft Entra做认证和基于角色的访问控制。Angular/React/Vue前端检查JWT中的角色声明,据此渲染不同UI。但后端API信任任何通过租户认证的用户,不管角色是什么,一律返回数据。
攻击链只有四步:
-
在 agents.fifa.org 注册(公开,任何人) -
自动加入FIFA Entra租户 -
对任意FIFA内部应用认证 -
前端说"拒绝访问",后端说"欢迎回家"
这影响了至少三个系统:fdp.fifa.org、cis.fifa.org 和一个 Azure Function 应用。使用同一租户的其他系统也有可能受影响。
把"公开经纪人注册"和"核心生产控制系统"放进同一个Entra租户,等于把前门钥匙和保险柜密码挂在同一根绳子上。前端校验是UI层的视觉魔术,它会让普通用户看到拒绝页便离开——对任何稍懂HTTP的人则完全透明。
Bob在博文结尾给FIFA留了一封简短的公开信:
"Get a security.txt file. Seriously. It's 2026."
「搞一个 security.txt 文件。说真的。都2026年了。」
"Publish a VDP. You're running the biggest sporting event on earth."
「发布漏洞披露政策。你们运营着地球上最大的体育赛事。」
"Client-side authorization is not authorization. Every intern learns this."
「客户端授权不算授权。每个实习生都学过这个。」
"When a researcher has to call CISA and the FBI to reach you, something is wrong."
「当一个研究者必须打CISA和FBI的电话才能找到你们——有些事已经出问题了。」
"Start a bug bounty program. Researchers shouldn't have to call the FBI to do you a favor."
「启动一个漏洞赏金计划。研究者不该需要打FBI的电话来帮你们一个忙。」
▲ Hacker News讨论帖下,社区围绕这篇披露的写作方式、技术细节和负责任披露展开讨论
最危险的漏洞往往穿最普通的衣服
整件事最让人不安的地方,恰恰在于它简单到荒谬的程度。
没有0day。没有供应链后门。没有APT组织。就是一个20岁女孩,一张身份证照片,一个向全世界开放的Web表单。
而她踏入的是全球收视最高的体育赛事直播控制室。
这在安全圈子里叫"客户端授权反模式"——一个入门课就讲的概念。所有云安全培训、所有Entra最佳实践文档、所有Web安全checklist都告诉你:永远不要让前端决定谁能看什么。但FIFA的生产系统就这么搭出来了,且在整个2026世界杯期间运行着。
体育转播有一个致命的特征组合:实时性、全球性、不可重放性。世界杯比赛不会重播——如果决赛夜的PGM信号被替换,哪怕只有30秒,那30秒就永远钉在全球观众的视网膜上。没有第二次机会。而控制那30秒的成本,在这件事里,只是一张身份证照片。
这件事最幸运的地方是:发现它的人叫BobDaHacker。
她在确认VLC画面是实况后关掉了播放器。她看着Start/Stop/Schedule按钮但没有按。她本可以在那个深夜做任何事——放Rickroll、放Subway Surfers跑酷视频、甚至让全球转播黑屏——但她选择打了一个通宵的电话。从FIFA总部打到CISA,再打到FBI,在东京凌晨三点钟,只为让正确的人知道这扇门开着。
FIFA修得很快,得益于MediaKind和CISA及时介入。但修得快跟拥有成熟的安全治理是两回事。没有security.txt、没有VDP、没有bug bounty、没有公开安全联系人——当一个地球最大体育赛事的安全基础设施要靠个体研究者凌晨跨国打电话来填补缺口,这套体系本身就值得所有大型赛事组织反复审视。
Bob在博客结尾写道,这一行收住了整个故事最荒诞的注脚:
"Still think about those RTMP stream keys sometimes. Somewhere in a parallel universe, billions of people are watching Subway Surfers gameplay during the World Cup final. All it took was an ID."
「有时还是会想起那些RTMP流密钥。在某个平行宇宙里,数十亿人正在世界杯决赛夜观看Subway Surfers跑酷视频。代价不过一张身份证。」




