CVE-2026-34973phpMyFAQ是一个开源的常见问题解答Web应用程序。在4.1.1版本之前,其Search.php文件中的searchCustomPages()方法存在安全漏洞。该方法在处理搜索词时,仅使用real_escape_string()函数进行过滤,然后将其嵌入到SQL LIKE子句中。然而,该函数无法转义SQL LIKE语句中的通配符(如%和_)。未经身份验证的攻击者可以利用此漏洞,在搜索查询中注入这些通配符,从而匹配并检索到未预期的记录,导致敏感信息泄露。该问题已在4.1.1版本中修复。
该漏洞源于不安全的输入处理机制。在phpMyFAQ的phpmyfaq/src/phpMyFAQ/Search.php文件中,searchCustomPages()函数负责处理自定义页面的搜索请求。开发者使用real_escape_string()(通过escape()方法)来对用户输入的搜索词进行净化,旨在防止SQL注入攻击。然而,real_escape_string()主要针对SQL语句的结构性字符(如单引号)进行转义,它并不会对SQL LIKE操作符中具有特殊含义的通配符进行转义。在SQL语法中,百分号%代表匹配任意长度的字符序列,下划线_代表匹配任意单个字符。由于应用程序直接将未经正确处理的用户输入拼接到LIKE子句中,攻击者无需认证即可构造包含这些通配符的恶意搜索请求。例如,在搜索框中输入%可能导致查询匹配数据库中的所有记录,而不仅仅是符合特定关键词的记录。这使得攻击者能够遍历数据库内容,获取本不应公开显示的页面内容或数据,从而导致信息泄露风险。