无需点击即可利用,AVideo 存在高危直播劫持漏洞
近日,安全圈传来一则值得所有流媒体运维人员警惕的消息。安全研究员 Arkmarta 在 AVideo 这一主流开源视频点播与直播系统中,挖出了一枚"核弹级"漏洞。该漏洞编号CVE-2026-29058,属于零点击远程代码执行(RCE)类型,CVSS 风险评分直接拉满——攻击者连账号都不需要,就能在目标服务器上执行任意系统命令。
目前确认,仅 AVideo 6.0 版本受影响,官方已在 7.0 及后续版本中完成补丁推送。如果你还在跑老版本,这篇文章建议你看到最后。
一、漏洞概况:无需交互的"隔空取物"
按 CWE-78 的分类,这是一个典型的"操作系统命令中特殊元素处理不当"问题。它的可怕之处在于利用门槛极低:无需身份认证、无需用户交互,纯靠网络发包就能打穿。
一旦漏洞被利用,后果是毁灭性的。攻击者不仅能拿到服务器的完全控制权,还能顺手牵羊窃取平台敏感配置密钥,甚至直接劫持正在进行的直播视频流。对于依赖 AVideo 搭建私有流媒体服务的团队来说,这无异于把服务器大门的钥匙挂在了公网上。
二、漏洞根因:getImage.php 成了"突破口"
问题出在 AVideo 的objects/getImage.php文件里。这个组件原本负责处理图片相关的网络请求,其中接收了一个叫base64Url的参数。
程序拿到这个参数后,会做两步操作:先 Base64 解码,再把解码后的内容直接拼进一条被双引号包裹的 ffmpeg 系统命令里执行。到这里,熟悉命令注入的老司机应该已经皱眉头了——把外部输入直接喂给 Shell,这是大忌。
可能开发者也意识到了风险,所以加了一层"标准 URL 过滤器"做校验。但这个过滤器的逻辑过于敷衍,它只检查了输入是不是像那么回事(基础 URL 语法格式),却对真正要命的东西视而不见:Shell 元字符、命令替换序列这类危险字符完全没有拦截。
换句话说,过滤器查的是"像不像 URL",而不是"安不安全"。这种"形式合规、实质裸奔"的校验方式,给远程攻击者留下了充足的发挥空间。
三、攻击原理:一条精心构造的请求就能"越狱"
由于 ffmpeg 命令在执行前没有对不可信数据进行转义,攻击者只需要在base64Url参数里藏一段经过 Base64 编码的恶意指令,就能突破原本的命令边界。
举个例子(原理层面):当解码后的字符串里包含分号、反引号、$() 这类 Shell 元字符时,系统会把它们当成新的命令来执行。原本只是一条"取图"的 ffmpeg 指令,瞬间变成了攻击者操控服务器的"后门通道"。
从窃取数据库凭证到植入持久化木马,从横向渗透到破坏流媒体服务,攻击者在这个漏洞上能做的事情,基本只受想象力限制。
四、官方修复:escapeshellarg() 堵上缺口
GitHub 上的安全公告已经说得非常明确:运行 AVideo-Encoder 6.0 的管理员,请立刻升级到 7.0 或更高版本。
官方在修复版本中引入了escapeshellarg()这类标准函数,对所有传入 Shell 的参数执行严格转义。它的作用很简单粗暴:把用户输入里可能被 Shell 误解为指令的字符全部"净化"掉,确保传入命令行的内容永远只是"数据",而不是"代码"。
这个改动的核心思路是从根源上切断命令注入的通道——不信任任何外部输入,在进 Shell 之前先过一遍"安检"。
五、无法立即升级?这三条临时缓解措施先顶上
如果因为业务原因暂时没法更新版本,也别裸奔。安全团队可以参考以下三条临时方案,先把风险压到最低:
第一,锁死访问入口。在 Web 服务器或反向代理层(如 Nginx、Apache)配置严格的 IP 白名单,只允许可信来源访问objects/getImage.php这个脆弱端点。公网直接暴露该接口,等于把漏洞喂到攻击者嘴边。
第二,上 WAF 规则兜底。在 Web 应用防火墙(WAF)中增加检测规则,重点拦截携带可疑 Base64 编码 Shell 命令特征的网络请求。虽然 WAF 不是万能药,但至少能挡住一波批量扫描和脚本小子的试探。
第三,直接关掉这个组件。如果你的平台日常运营并不依赖图片获取功能,最干脆的做法就是直接禁用getImage.php。功能不用,漏洞就不存在——这是"最终防护手段",也是最省事的。
六、写在最后
开源软件的安全问题往往具有"放大效应"。AVideo 作为视频流媒体领域的主流方案,被大量中小站点和内部平台采用。一枚 CVE-2026-29058 级别的 RCE 漏洞,影响的绝不只是某一个实例,而是一整片部署了 6.0 版本的资产面。
对于运维人员来说,打补丁永远是最优解;对于安全团队来说,在漏洞披露窗口期做好监控和缓解,是守住底线的关键。流媒体基础设施一旦被攻破,损失的不只是数据,还有品牌信誉和用户信任——后者重建起来,远比升级一个版本要难得多。
