Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconSend crafted /chats/submit request with 'model_' key
-
DeliveryBypass denylist via convert_keys canonicalization
-
ExploitInject CR/LF payload into error-log line
-
InstallParser feeds forged log into Advisor AI prompt
-
C2Store unsanitized JSON in mwai_advisor_data
-
ExecuteAdmin opens dashboard, widget renders unescaped
-
ImpactScript executes in admin session
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the AI Engine Advisor task and its PHP-error-log parsing/ingestion feature (MeowKit_MWAI_Helpers::php_error_logs → Meow_MWAI_Modules_Advisor::run_advisor) be enabled, and that the request path go through the non-streaming, non-admin catch branch that writes the raw exception to the PHP error log. The initial injection to /mwai-ui/v1/chats/submit is unauthenticated (PR:N) and needs no user interaction, but the stored payload only EXECUTES when an authenticated administrator subsequently opens the WordPress dashboard and the Advisor widget (advisor_metabox) is rendered - that admin dashboard view is the real limiting factor. Affected: AI Engine for WordPress versions up to and including 3.8.0; fixed in 3.8.1. |
| Impact | This is a legitimately interesting but conditionally-gated vulnerability. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N, 7.2 High) treats the initial injection vector as fully unauthenticated and automatable, which is accurate for the ENTRY point (the /mwai-ui/v1/chats/submit REST endpoint is unauthenticated), but the vendor vector arguably understates user interaction - the stored script only EXECUTES when an administrator opens the WordPress dashboard and views the Advisor widget, so a UI:R-flavored precondition realistically applies and my independent lean is closer to 6.1. No EPSS score, no CISA KEV listing, and no public POC are present in the provided data, so exploitation status is 'no public exploit identified at time of analysis.' Against that, the product is a very widely installed WordPress AI/chatbot plugin and the bug chain is elegant and fully documented down to source line numbers in the vendor advisory and trac, which lowers the research barrier for a weaponized exploit. Net: a real medium-to-high priority for sites running AI Engine ≤3.8.0 with the Advisor feature active, but not a drop-everything emergency absent evidence of active exploitation. Key caveat: the entire chain depends on the plugin's Advisor task and PHP-error-log parsing being enabled and on an admin subsequently viewing the dashboard - verify those preconditions before rating site-specific risk. |
| Exploit ScenarioDerived | An unauthenticated attacker sends a crafted POST to /mwai-ui/v1/chats/submit using the key 'model_' (which convert_keys() canonicalizes back to the denylisted 'model') carrying a CR/LF-laced script payload; the resulting exception message is written verbatim to the PHP error log, re-parsed by the plugin, fed into the Advisor AI prompt, and stored unsanitized in the mwai_advisor_data option. When a site administrator later opens the WordPress dashboard, the Advisor widget renders the unescaped 'title'/'description' and the injected JavaScript executes in the admin's authenticated session. No public POC is identified, but the Wordfence advisory documents the full chain and exact source lines. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 01, 2026
Stored cross-site scripting in the AI Engine - The Chatbot, AI Framework & MCP for WordPress plugin (versions up to and including 3.8.0) lets an unauthenticated attacker plant script payloads that execute in a WordPress site's admin dashboard. The attack chains a denylist bypass on the /mwai-ui/v1/chats/submit REST endpoint into the plugin's own PHP error-log parser, which returns the forged log line as recent PHP-error content that the Advisor task then feeds verbatim into the AI prompt (CWE-1427 indirect prompt injection); the unvalidated AI response is saved to the mwai_advisor_data option and rendered by the Advisor dashboard widget without escaping. Exploitation is conditional - the Advisor task, its error-log ingestion, and the non-streaming/non-admin catch branch must all be in play, and the payload only fires when an authenticated administrator opens the dashboard and the Advisor widget renders - which is why the independent assessment scores it UI:R despite the PR:N injection path; no public exploit code has been identified at time of analysis and there is no CISA KEV listing.
RemediationAI
Vendor-released patch: upgrade the AI Engine for WordPress plugin to 3.8.1, the version published in the project's changeset from tag 3.8.0 (see the Trac changeset and the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/910e51da-6ee2-45d5-837b-7fea80f79390?source=cve). Because the code-level fix corrects the input denylist/canonicalization in the REST handler as well as the downstream logging, prompt-ingestion, option-storage, and dashboard-output paths, upgrading is the only complete remedy; manual patching of individual functions is not advised since the flaw spans six files. If the update cannot be applied immediately, compensating controls should target the highest-leverage link in the chain: disable the Advisor task and/or its PHP error-log parsing feature so forged log lines are never ingested into the AI prompt, and disable the Advisor dashboard widget so stored 'title'/'description' values are never rendered unescaped - the trade-off is loss of the plugin's advisory/AI-health features but it removes the execution sink. As a secondary measure, block or restrict unauthenticated access to the /mwai-ui/v1/chats/submit REST route at the WAF or web-server layer (for example, requiring authentication or rejecting requests carrying unexpected 'model*' parameters), acknowledging that this may break legitimate public chatbot endpoints and that a determined attacker could find alternate routes into the same log-writing catch branch. Administrators should also review the mwai_advisor_data option and the PHP error log for injected HTML/CR-LF artifacts and clear them after upgrading.
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 root cause is improper neutralization of input during web page generation (CWE-79), amplified by an indirect prompt-injection weakness (CWE-1427) inside an LLM-backed WordPress plugin. The chain begins in the plugin's REST handler classes/rest.php: chat_submit() applies a server-parameter denylist that removes only exact key names such as 'model', but convert_keys() canonicalizes variants like 'model_' back to 'model' afterward, so an unauthenticated caller can still land an attacker-controlled string - including CR/LF characters - in $query->model (classes/query/base.php, classes/engines/core.php). final_checks() then throws an Exception whose message embeds that raw string, and the non-streaming, non-admin catch branch (classes/modules/chatbot.php) writes the message to the PHP error log unmodified, allowing forged log lines to be injected. The plugin's own log reader MeowKit_MWAI_Helpers::php_error_logs (common/helpers.php) later surfaces that text as recent PHP-error content, and Meow_MWAI_Modules_Advisor::run_advisor (classes/modules/advisor.php) appends it verbatim to the AI prompt. The model's JSON response is persisted to the mwai_advisor_data option with no schema validation or HTML sanitization, and advisor_metabox() concatenates the returned 'title' and 'description' values straight into the WordPress dashboard widget without esc_html(), wp_kses(), or equivalent output escaping - the point at which the stored script actually executes. The affected component is identified by CPE cpe:2.3:a:tigroumeow:ai_engine_-_the_chatbot,_ai_framework_&_mcp_for_wordpress:*:*:*:*:*:*:*:*.
Know when Wordpress Plugin 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:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Unauthenticated network injection (PR:N) but payload fires only when an admin views the dashboard (UI:R); cross-context script execution in admin session gives S:C with C:L/I:L.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The AI Engine - The Chatbot, AI Framework & MCP for WordPress plugin for WordPress is vulnerable to Stored Cross-Site Scripting in versions up to, and including, 3.8.0 This is due to a chain of missing input neutralization and output escaping across the /mwai-ui/v1/chats/submit REST endpoint, the PHP error-log parser (MeowKit_MWAI_Helpers::php_error_logs), the Advisor task (Meow_MWAI_Modules_Advisor::run_advisor), and the Advisor dashboard widget (advisor_metabox): the server-parameter denylist in chat_submit strips only exact key names such as 'model' while convert_keys() later canonicalizes 'model_' back to 'model', allowing an unauthenticated caller to place an attacker-controlled string (including CR/LF) into $query->model; final_checks() throws an Exception whose message embeds that raw string, and the non-streaming, non-admin catch branch writes it to the PHP error log unmodified - creating a forged log line that the plugin's own parser subsequently returns as recent PHP-error content; run_advisor() then appends that content verbatim to the AI prompt (indirect prompt injection - CWE-1427), the returned JSON is stored in the mwai_advisor_data option with no schema validation or HTML sanitization, and advisor_metabox() concatenates the resulting 'title' and 'description' values directly into the WordPress dashboard widget without esc_html(), wp_kses(), or equivalent escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever an administrator accesses the WordPress dashboard.
Executive ViewAI
The AI Engine - The Chatbot, AI Framework & MCP for WordPress plugin, versions up to and including 3.8.0, contains a high-severity stored cross-site scripting vulnerability that can let an unauthenticated attacker plant script payloads that execute when an administrator opens the affected dashboard, potentially enabling unauthorized actions within the site's administrative interface. This affects any organization hosting WordPress sites with the vulnerable plugin, and while exploitation is conditional on specific plugin features and administrator interaction, the administrative context raises organizational risk. No public exploit identified at time of analysis, and no vendor-released patch identified at time of analysis, so leadership should prioritize identification and interim mitigation.
No vendor-released patch identified at time of analysis. Interim mitigations include: disable the Advisor task, error-log ingestion, and the Advisor dashboard widget for the AI Engine plugin; restrict access to /wp-admin and the /mwai-ui/v1/chats/submit REST endpoint; deploy WAF rules to block exploitation attempts; enforce MFA for administrators; monitor and sanitize the mwai_advisor_data option; and consider removing the plugin until a vendor patch 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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
More in Wordpress Plugin
View allThe Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
The Hash Form - Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing fil
Authentication bypass in the LiteSpeed Cache WordPress plugin (versions prior to 6.5.0.1) allows unauthenticated remote
The Simple File List plugin for WordPress through version 4.2.2 contains an unauthenticated remote code execution vulner
The SureTriggers WordPress plugin through version 1.0.82 contains a privilege escalation vulnerability that allows unaut
The Ninja Forms plugin before 2.9.42.1 for WordPress allows remote attackers to conduct PHP object injection attacks via
The Business Directory Plugin - Easy Listing Directories for WordPress plugin for WordPress is vulnerable to time-based
SQL injection in the NotificationX WordPress plugin (versions up to and including 2.8.2) allows unauthenticated remote a
The POST SMTP Mailer - Email log, Delivery Failure Notifications and Best Mail SMTP for WordPress plugin for WordPress i
The MasterStudy LMS WordPress Plugin - for Online Courses and Education plugin for WordPress is vulnerable to union base
The Email Subscribers by Icegram Express plugin for WordPress is vulnerable to SQL Injection via the ‘hash’ parameter in
Remote code execution in the WP Query Console WordPress plugin (versions up to and including 1.0) by Ajit Bohra allows u
EUVD-2026-90465
GHSA-h282-rvgq-85qj
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB