CVE-2026-32629phpMyFAQ是一款开源的FAQ Web应用程序。在4.1.1版本之前,该系统存在一个存储型跨站脚本(XSS)漏洞。未经身份验证的攻击者可以利用RFC 5321标准中允许的带引号本地部分特性,构造包含恶意HTML代码的电子邮件地址(例如"<script>alert(1)</script>"@evil.com)。由于PHP的FILTER_VALIDATE_EMAIL认为该地址合法,且系统在存储和渲染时未对HTML进行适当的转义,导致该恶意载荷被存储在数据库中。当管理员在后台查看FAQ时,恶意代码将被执行,从而导致攻击者可能窃取管理员凭证或执行恶意操作。
该漏洞的根源在于phpMyFAQ对用户输入的电子邮件地址验证逻辑过于宽松,且在输出渲染时缺乏安全过滤。攻击者利用RFC 5321规范中允许邮件地址本地部分包含引号的特性,将HTML或JavaScript代码嵌入到邮件地址中(如`"<script>alert(1)</script>"@evil.com`)。PHP原生的`FILTER_VALIDATE_EMAIL`函数会将其判定为合法格式,从而绕过前端验证。在数据存储阶段,该邮件地址被原样存入数据库,未经过HTML实体编码或清洗。关键问题出现在后台渲染阶段,管理员查看FAQ编辑器模板时,应用使用了Twig模板引擎的`|raw`过滤器来输出该字段。`|raw`过滤器会标记内容为“安全”,完全禁用了Twig的自动转义机制。因此,当管理员访问受影响的页面时,浏览器将解析并执行攻击者注入的脚本。这是一个典型的存储型XSS(Stored XSS)场景,攻击者无需诱骗管理员点击特定链接,只需等待管理员查看受污染的FAQ条目即可触发攻击。