Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend crafted request with malicious ssa_locale
-
DeliveryLocale filter runs unconditionally in plugins_loaded
-
ExploitParameter path-traverses to target .php
-
ExecutionPlugin includes and executes the file
-
ImpactDisclose data or run attacker PHP code
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V5 - File Handling File inclusion prevention, allowlisting
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Command and Control The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation targets the 'ssa_locale' GET parameter handled by the translation/locale filter in class-translation.php, which per the description is registered unconditionally on every request during plugins_loaded with no nonce or capability check - so no authenticated session is genuinely required despite the PR:L rating, and default installations are affected without special configuration. The limiting factor is impact depth: including an already-present .php file executes that file (information disclosure / access-control bypass), but achieving execution of ATTACKER-supplied PHP additionally requires a way to place a .php file on the server (an upload feature or writable path), which is why the CVSS assigns AC:H. All versions of Simply Schedule Appointments up to and including 1.6.12.27 are affected. |
| Impact | This is a genuine high-priority issue rather than an inflated CVSS score. The provided CVSS 3.1 vector (7.5, AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H) already reflects full C/I/A impact over the network, and the description escalates the concern: it explicitly states that exploitation 'does not require authentication in practice' because the locale filter is registered unconditionally during plugins_loaded and the callback performs no nonce or capability check before consuming the raw GET parameter. This directly conflicts with the vector's PR:L (subscriber-level) rating - the description implies PR:N should apply, which would raise real-world severity. The AC:H rating is defensible because achieving full remote code execution depends on an attacker-controllable .php file already existing on the server (e.g., via an upload path); pure Local File Inclusion of an existing .php file, however, needs no such precondition and yields code execution of that file plus information disclosure. No EPSS score, KEV listing, SSVC decision, or POC is provided in the input, so exploitation likelihood cannot be quantified from these signals - the reliance is on the code-level analysis by Wordfence, who linked the exact vulnerable source lines (class-translation.php L50/L67/L108). Net: treat as high priority for any site running this plugin, especially given the credible unauthenticated-in-practice claim. |
| Exploit ScenarioDerived | A remote attacker sends a crafted HTTP request to a WordPress site running Simply Schedule Appointments (≤1.6.12.27) with a malicious 'ssa_locale' value that traverses to and includes an arbitrary .php file on the server. Because the locale filter is installed unconditionally on every request and performs no capability or nonce check, the include executes the targeted PHP, enabling disclosure of sensitive files or full code execution where an attacker-controlled .php (e.g., an uploaded avatar or media file) can be referenced. No public exploit code is identified in the provided data, though Wordfence has published the vulnerable source locations. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 30, 2026
Local file inclusion in the Simply Schedule Appointments WordPress plugin (all versions up to and including 1.6.12.27) allows remote attackers to include and execute arbitrary .php files present on the server via the 'ssa_locale' GET parameter, enabling access-control bypass, disclosure of sensitive data, and PHP code execution whenever attacker-controlled .php content can be placed on the host. The published CVSS 3.1 base score is 7.5 (AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H), but our independent assessment rates the vector as PR:N (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H), because the locale filter in class-translation.php is registered unconditionally during plugins_loaded and its callback returns the raw 'ssa_locale' parameter without any nonce or capability check, so the subscriber-level authentication requirement in the published vector is not a genuine barrier in practice. High attack complexity reflects the fact that including an already-present .php file yields information disclosure or access-control bypass, while executing attacker-supplied PHP additionally requires an upload feature or writable path that can host a .php file; no public exploit code has been identified at time of analysis, and there is no CISA KEV entry indicating confirmed active exploitation.
RemediationAI
No vendor-released patched version is identified in the provided data at time of analysis, so the first action is to check the Wordfence advisory (https://www.wordfence.com/threat-intel/vulnerabilities/id/aab8f2ae-993b-4893-81cc-1b8a1a4ef84b?source=cve) and the plugin's WordPress.org/Trac pages for a version newer than 1.6.12.27 and upgrade to it as soon as it is published; the referenced Trac lines belong to the vulnerable 1.6.12.27 tag, not to a fix. If no patched release is available, the most reliable compensating control is to deactivate and remove the Simply Schedule Appointments plugin entirely until a fix ships - the trade-off is the total loss of appointment-booking functionality on the site. A less disruptive option is to deploy a WAF or server-level rule that rejects or sanitizes any request where the 'ssa_locale' parameter contains path separators, traversal sequences ('../', '..\'), null bytes, or stream wrappers ('php://', 'file://', 'data://'); the trade-off is that overly broad rules can break legitimate language/locale switching for users, so the rule should be limited to blocking traversal and wrapper patterns rather than the parameter as a whole. Additionally, harden the filesystem against the second stage of the attack by ensuring no upload mechanism or writable web-accessible directory can receive .php files: enforce server-side extension allowlists on all upload handlers, disable PHP execution in the WordPress uploads directory (for example via an Apache/Nginx rule denying .php in wp-content/uploads), and restrict the 'unfiltered_upload' capability to trusted administrators only - these changes may break legitimate file types or plugins that rely on PHP files in uploads, so test before applying. Because the vulnerable filter is installed unconditionally on plugins_loaded with no nonce or capability check, role-based restrictions (removing subscriber accounts, tightening capabilities) do not mitigate the issue and should not be relied upon as the primary defense.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The affected component is a WordPress plugin written in PHP (tags: PHP, WordPress, LFI, RCE, Information Disclosure), and the CPE cpe:2.3:a:croixhaug:simply_schedule_appointments:* indicates the vendor namespace 'croixhaug' with a wildcard version that does not bound the affected range itself - the version ceiling comes from the advisory, which names 1.6.12.27. The root cause is CWE-98 (Improper Control of Filename for Include/Require Statement in PHP Program, i.e., PHP remote/local file inclusion): user-controlled input is passed into a PHP include/require path without validation. Specifically, the translation/locale handling in includes/class-translation.php registers its filter unconditionally on every request during the plugins_loaded hook, and the callback reads the 'ssa_locale' GET parameter and returns it without nonce verification or capability checks, allowing path traversal or path manipulation to force inclusion of a file outside the intended translation directory. The practical exploitation chain has two tiers: (1) including a .php file already on the server, such as a plugin or theme file, executes that file's code, which can bypass access controls or leak sensitive data through the resulting output; (2) achieving full arbitrary code execution requires the attacker to first get a .php file onto the filesystem (for example via an upload feature or a writable directory), which is why the CVSS attack complexity is rated High. Because the hook is installed on every request regardless of user context, default installations are exposed without any special configuration.
Know when Simply Schedule Appointments gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Description states the filter runs unconditionally with no auth check, so PR:N over PR:L; AC:H because full RCE depends on an attacker-placeable .php file existing on the server.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Simply Schedule Appointments plugin for WordPress is vulnerable to Local File Inclusion in all versions up to, and including, 1.6.12.27 via the 'ssa_locale' parameter parameter. This makes it possible for authenticated attackers, with subscriber-level access and above, to include and execute arbitrary .php files on the server, allowing the execution of any PHP code in those files. This can be used to bypass access controls, obtain sensitive data, or achieve code execution in cases where .php file types can be uploaded and included. Notably, exploitation does not require authentication in practice, as the locale filter is installed unconditionally on every request during plugins_loaded and the callback performs no nonce or capability check before returning the raw GET parameter value.
Executive ViewAI
Organizations running the Simply Schedule Appointments WordPress plugin at version 1.6.12.27 or earlier face a high-severity exposure that could allow unauthorized access to sensitive data and, if an attacker can place a PHP file on the server, code execution. Because no vendor patch is available, this affects any business unit or customer-facing site using the plugin, creating potential data disclosure, integrity, and availability risks. Leadership should prioritize identifying affected sites and applying interim mitigations while planning longer-term remediation.
No vendor-released patch identified at time of analysis. Interim mitigations include deactivating or removing the Simply Schedule Appointments plugin (versions up to 1.6.12.27), applying WAF rules to block or sanitize the ssa_locale GET parameter, disabling PHP execution in uploads and writable directories, restricting file upload permissions, monitoring logs for ssa_locale exploitation attempts, and isolating affected WordPress sites until a vendor fix is available.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Local File Inclusion vulnerabilities occur when an application accepts user-controlled input to specify which file should be loaded or executed, typically through functions like PHP's `include()`, `require()`, or `fopen()`.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
More in Simply Schedule Appointments
View allSimply Schedule Appointments WordPress plugin before 1.6.12.6 exposes all site appointment records to unauthenticated us
The Appointment Booking Calendar WordPress plugin before 1.6.7.43 does not escape template syntax provided via user inpu
Broken access control in Simply Schedule Appointments WordPress plugin before 1.6.12.11 exposes all customer appointment
Stored Cross-Site Scripting in Simply Schedule Appointments up to 1.6.12.2 allows unauthenticated attackers to inject ar
Unauthenticated SQL injection in the Simply Schedule Appointments WordPress plugin (versions ≤ 1.6.9.27) allows remote a
Unauthenticated SQL injection in the Simply Schedule Appointments WordPress plugin (versions up to and including 1.6.12.
The Simply Schedule Appointments WordPress plugin before 1.5.7.7 is missing authorisation in a REST endpoint, allowing u
The Appointment Booking Calendar - Simply Schedule Appointments Booking Plugin plugin for WordPress is vulnerable to SQL
The Appointment Booking Calendar - Simply Schedule Appointments Booking Plugin plugin for WordPress is vulnerable to SQL
Cross-site request forgery in the Simply Schedule Appointments WordPress plugin (versions ≤ 1.6.12.23) enables an unauth
The Appointment Booking Calendar - Simply Schedule Appointments Booking Plugin WordPress plugin before 1.6.7.55 does not
The Appointment Booking Calendar - Simply Schedule Appointments Booking Plugin WordPress plugin before 1.6.7.55 does not
EUVD-2026-89654
GHSA-82vp-79qw-w7jm
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB