CVE-2026-43884WWBN AVideo是一个广泛使用的开源视频平台。在29.0及以下版本中,该平台存在严重的服务端请求伪造(SSRF)漏洞。漏洞主要影响`plugin/AI/receiveAsync.json.php`和`objects/EpgParser.php`两个端点。尽管代码中调用了`isSSRFSafeURL()`函数对用户输入的URL进行安全验证,但在实际获取资源时,使用了未禁用自动跟随重定向功能的`file_get_contents()`函数。攻击者可以利用这一缺陷,构造一个指向受控服务器的URL,该服务器返回302重定向响应,将请求指向内网敏感地址(如云元数据服务http://169.254.169.254)。由于验证机制仅检查初始URL,重定向后的目标地址成功绕过了SSRF防护,导致服务器敏感信息泄露。
该漏洞的根本原因在于输入验证逻辑与资源请求逻辑之间的不一致性。在受影响的AVideo版本中,`isSSRFSafeURL()`函数旨在防止SSRF攻击,它通常通过检查URL的主机部分,确保其不属于内网IP段(如127.0.0.1, 10.0.0.0/8, 169.254.169.254等)或使用file://协议。然而,当验证通过后,后端代码直接使用PHP的`file_get_contents($url)`函数去获取URL内容。PHP的`file_get_contents`在处理HTTP请求时,默认会跟随服务器返回的302或301重定向。
攻击流程如下:攻击者向`plugin/AI/receiveAsync.json.php`等接口提交一个外网合法URL(例如http://evil.com/redirect)。`isSSRFSafeURL()`检查该URL,确认为合法外网地址,放行请求。随后,`file_get_contents()`请求evil.com。攻击者控制evil.com返回HTTP 302状态码,并在Location头中填入内网地址(如http://169.254.169.254/latest/meta-data/iam/security-credentials/)。由于PHP默认跟随重定向,`file_get_contents()`会自动向该内网地址发起请求。此时,请求是从受害服务器发出的,完全绕过了防火墙对入站流量的限制,且绕过了应用层的SSRF检查。这种利用方式可以导致云厂商凭证窃取、内网端口扫描等严重后果。修复方案(Commit 603e7bf)主要涉及在请求过程中禁用重定向跟随,或在跟随重定向前对目标地址进行二次校验。