CVE-2026-34974phpMyFAQ 4.1.1之前的版本中,基于正则的SVG清洗程序存在安全缺陷。攻击者可以通过在SVG文件的`<a href>`属性中使用HTML实体编码的`javascript:` URL来绕过清洗机制。拥有编辑FAQ权限(`edit_faq`)的用户可上传恶意SVG文件,当管理员或其他用户查看该文件时,将触发任意JavaScript代码执行,进而导致权限提升,从普通编辑者接管为管理员权限。
该漏洞的根本原因在于phpMyFAQ项目中的`SvgSanitizer.php`文件使用了不完善的正则表达式来过滤SVG内容。攻击者可以利用HTML实体编码技术(例如将`javascript:`编码为`javascript:`)来绕过这种基于字符串匹配的检测机制。当具备`edit_faq`权限的攻击者上传精心构造的恶意SVG文件时,服务器端的清洗器无法识别出经过编码的恶意模式,因此允许文件存储。然而,当管理员或其他用户在浏览器中访问并渲染该SVG文件时,浏览器的HTML解析引擎会自动解码这些实体,还原出原始的`javascript:`伪协议并执行其中的Payload。这种存储型XSS攻击使得攻击者能够窃取受害者的Session Cookie,或者利用管理员权限执行恶意操作,从而实现从低权限编辑者向系统管理员的权限提升。