CVE-2026-1921WordPress Loco Translate 插件在所有版本(包括 2.8.2)中存在路径遍历漏洞。该漏洞源于 `fsReference` AJAX 路由中的 `findSourceFile()` 方法在处理用户提供的路径时,未能正确验证规范化后的路径是否仍位于预期的目录内。拥有翻译者权限及以上权限的经过身份验证的攻击者可以利用此漏洞,读取服务器上任意 `.php`、`.js`、`.json` 和 `.twig` 文件,从而导致敏感信息泄露。值得注意的是,`wp-config.php` 文件被明确排除在读取范围之外。
该漏洞的核心在于 WordPress Loco Translate 插件对路径验证逻辑的缺失。具体而言,插件通过 `fsReference` AJAX 接口接收用户输入的 `ref` 参数,并调用 `findSourceFile()` 方法进行处理。该方法会对包含 `../` 序列的路径进行规范化处理(即解析目录跳转),但关键在于它没有在规范化后再次检查最终路径是否仍然限制在预期的翻译目录或包目录内。
利用条件要求攻击者具有有效的 WordPress 账户,且该账户至少拥有“Translator”角色(具备 `loco_admin` 权限)。攻击者可以构造包含 `../` 的恶意载荷,向目标服务器发送特制的 AJAX 请求。通过不断回溯目录层级,攻击者可以突破插件原本的限制,访问 Web 根目录之外的其他敏感文件。虽然系统阻止了对 `wp-config.php` 的直接读取,但攻击者仍可读取其他源代码文件(如 `.php`)、配置文件(`.json`)或模板文件(`.twig`),通过分析这些文件内容,攻击者可能获取数据库凭证、API 密钥或发现其他可利用的安全漏洞。