Security Alert Summary
The Loco Translate plugin for WordPress contains a vulnerability that allows an attacker to bypass nonce validation in the execTemplate function. By supplying a php://filter stream wrapper URI in the template parameter, a forged request that tricks a site administrator into clicking a link can lead to arbitrary PHP code execution on the server in affected versions.
CVE Details
- CVE ID: CVE-2026-15005
- Affected component: Loco Translate plugin for WordPress
- Affected versions: Versions up to and including 2.8.5
- Published: July 16, 2026, 09:16:17 AM UTC
- Last modified: July 16, 2026, 01:38:53 PM UTC
- CVSS v3.1 base score: 8.8
- CVSS v3.1 severity: HIGH
- CVSS v3.1 vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
- Authentication / privileges / user interaction: No privileges required (NONE); user interaction required (UI:R); network attack vector (AV:N); low attack complexity (AC:L)
- Impact to confidentiality / integrity / availability: Confidentiality: HIGH; Integrity: HIGH; Availability: HIGH
- Weakness (CWE): CWE-352 (Cross-Site Request Forgery)
Technical Details
The issue exists because the execTemplate function does not perform correct nonce validation, allowing a CSRF-style attack to reach an include sink with attacker-controlled input. Specifically, an attacker can supply a php://filter stream wrapper URI in the template parameter. The plugin bypasses path validation for that parameter and passes it directly to an include operation inside execTemplate(). When an authenticated administrator or other privileged user is tricked into issuing the crafted request (for example, by clicking a link), the include can lead to execution of attacker-controlled PHP content on the server.
The description identifies the missing or incorrect nonce check as the root cause. The vulnerability relies on a forged request combined with user interaction from a privileged account; it does not require prior authentication by the attacker. The technical impact cited is arbitrary PHP execution via the php://filter stream wrapper passed to the include sink.
How This Could Impact Your Website
Consider a site with multiple users: a site owner, internal staff who manage content, and an external contractor who occasionally performs administrative tasks. If an administrator or other user with sufficient privileges clicks a malicious link crafted by an attacker, the request could trigger the vulnerable include behavior and allow arbitrary PHP execution. Practical consequences include disclosure of sensitive data stored on the server, modification of site content, or installation of backdoor code that persists beyond the initial incident.
Specific risks for WordPress sites include exposure of internal user email addresses and credentials held in configuration files or databases that an attacker could read, and increased risk of targeted phishing or social engineering against staff and contractors using those disclosed addresses. If you re unsure whether your site is affected or how to assess your current user roles and plugins, it may be worth having a professional review your setup.
Recommended Actions
- Update the affected plugin as soon as a patched version is available.
- Review and reduce unnecessary user roles, especially contributor- or editor-level accounts that have access to administrative flows.
- Enforce strong passwords and enable two-factor authentication for editors and administrators.
- Remove unused or unmaintained plugins from sites to reduce attack surface.
- Monitor site activity and logs for unusual behavior, including unexpected include operations and administrative actions triggered from external links.
If you d like help reviewing your plugins, user roles, or overall WordPress security posture, our team at Freshy is happy to help.
References
- https://plugins.trac.wordpress.org/browser/loco-translate/tags/2.8.3/src/mvc/AdminController.php#L38
- https://plugins.trac.wordpress.org/browser/loco-translate/tags/2.8.3/src/mvc/AdminRouter.php#L128
- https://plugins.trac.wordpress.org/browser/loco-translate/tags/2.8.3/src/mvc/View.php#L273
- https://plugins.trac.wordpress.org/browser/loco-translate/tags/2.8.3/src/mvc/View.php#L274
- https://plugins.trac.wordpress.org/browser/loco-translate/tags/2.8.5/src/mvc/AdminController.php#L38
- https://plugins.trac.wordpress.org/browser/loco-translate/tags/2.8.5/src/mvc/AdminRouter.php#L128
- https://plugins.trac.wordpress.org/browser/loco-translate/tags/2.8.5/src/mvc/View.php#L273
- https://plugins.trac.wordpress.org/browser/loco-translate/tags/2.8.5/src/mvc/View.php#L274
- https://plugins.trac.wordpress.org/changeset?reponame=&old=3603894%40loco-translate&new=3603894%40loco-translate
- https://www.wordfence.com/threat-intel/vulnerabilities/id/241d7a82-5fa5-40e3-9336-823644ca17f0?source=cve