一个CVSS评分5.4的漏洞,能让攻击者用改海报这种"前台操作",直接拿到主播的私密广播密钥。WWBN AVideo这套被不少中小平台用的开源直播系统,在uploadPoster.php这个端点上栽了跟头。

漏洞机制:海报上传成了密钥提取器

问题出在plugin/Live/uploadPoster.php。正常逻辑里,这里只该处理"给自己的直播间换封面"这种事。但代码没做权限校验——攻击者只要知道某个直播间的ID,就能往别人的直播间上传海报。

更魔幻的是副作用。上传成功后,系统会向所有在线客户端广播一条WebSocket消息。这条消息里,受害者的私密广播密钥和用户ID被明文打包送了出去。相当于你帮邻居贴了个招租广告,结果全小区都收到了他家的门禁密码。

攻击门槛低到离谱:任意一个能登录的账号就行,不需要管理员权限。影响范围覆盖AVideo 26.0及之前所有版本。

为什么IDOR漏洞总爱在"小功能"里藏

为什么IDOR漏洞总爱在"小功能"里藏

IDOR(不安全的直接对象引用)这毛病,本质是开发时默认"用户只会操作自己的数据"。uploadPoster.php接收一个schedule ID参数,代码想当然地认为"传过来的肯定是自己的直播间ID",于是跳过了所有权校验。

这种思维在快速迭代的产品里特别常见。海报上传看起来人畜无害,权限控制就被优先级更高的功能挤掉了。结果一个小接口成了整个直播系统的密钥泄露通道。

WebSocket广播的设计更是雪上加霜。本意是实时通知"某直播间换封面了",但广播内容没做敏感信息过滤,把内部密钥当成普通元数据发了出去。

修复与影响评估

修复与影响评估

官方给出的修复方案很直接:在uploadPoster.php里加一道所有权校验,确认当前用户确实拥有该schedule ID对应的直播间。补丁已随新版本发布。

对正在使用AVideo的平台来说,这个漏洞的实际威胁取决于攻击者获取目标直播间ID的难度。如果平台把schedule ID做成了公开可猜测的序列号,风险会被放大;如果做了随机化处理,攻击者需要先通过其他渠道收集ID。

但私密广播密钥一旦泄露,意味着攻击者可以伪造该主播的推流身份,或者干扰正常直播。对依赖直播打赏或付费内容的平台,这是直接的经济损失。

这个案例最讽刺的地方在于:攻击者甚至不需要懂WebSocket协议细节,只要用浏览器正常上传一张海报,密钥就自动弹到所有连接者的控制台里。安全漏洞有时候就是这么不挑工具。

你用的直播后台,会不会也有这种"换个封面就泄密"的隐藏接口?