{
 "id": "WPSEC-2026-2716",
 "url": "https://wpsec.com/vuln/WPSEC-2026-2716/",
 "json_url": "https://wpsec.com/vuln/WPSEC-2026-2716/advisory.json",
 "markdown_url": "https://wpsec.com/vuln/WPSEC-2026-2716/index.md",
 "title": "AI Engine – MCP Server & AI Chatbot for WordPress, with Claude, ChatGPT & Gemini <= 3.9.1 - Unauthenticated Stored Cross-Site Scripting via File Upload",
 "description": "The AI Engine plugin for WordPress is vulnerable to Stored Cross-Site Scripting via file uploads (the chatbot and AI Forms upload endpoint /mwai-ui/v1/files/upload and the Public API simpleFileUpload endpoint) in all versions up to, and including, 3.9.1, due to insufficient validation of the uploaded file's content. The upload endpoint accepted any file with an audio extension (such as .flac) even when WordPress's content check had rejected it, and the shared upload routine checked only the filename's extension before copying the file into the public uploads folder. This makes it possible for unauthenticated attackers, on any page that shows a chatbot or form, and authenticated users through the Public API, to upload HTML files disguised as audio that run arbitrary scripts when a user opens the file's URL. Exploitation requires a web server that sends no media type for the extension used, so that the browser renders the file as HTML.",
 "plugin": {
  "slug": "ai-engine",
  "name": "AI Engine – MCP Server & AI Chatbot for WordPress, with Claude, ChatGPT & Gemini",
  "full_name": "AI Engine – MCP Server & AI Chatbot for WordPress, with Claude, ChatGPT & Gemini",
  "wordpress_org": "https://wordpress.org/plugins/ai-engine/",
  "advisories_url": "https://wpsec.com/vuln/plugin/ai-engine/",
  "attacksurface": "https://attacksurface.wpsec.com/plugin/ai-engine"
 },
 "type": "XSS",
 "cwe": [
  "CWE-79"
 ],
 "cve": [],
 "cvss": {
  "version": "3.1",
  "score": 4.7,
  "vector": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N",
  "severity": "Medium"
 },
 "affected": {
  "ranges": [
   {
    "from": null,
    "from_inclusive": true,
    "to": "3.9.2",
    "to_inclusive": false
   }
  ],
  "text": [
   "all versions before 3.9.2"
  ]
 },
 "introduced_in": null,
 "fixed_in": "3.9.2",
 "remediation": "Update to 3.9.2 or later.",
 "fix_released": "2026-11-06T12:29:08+00:00",
 "published": "2026-11-07T12:41:15+00:00",
 "updated": "2026-11-07T11:06:31.918784+00:00",
 "also_published_as": null,
 "references": [
  "https://wpsec.com/vuln/WPSEC-2026-2716/",
  "https://plugins.svn.wordpress.org/ai-engine/tags/3.9.2/",
  "https://wordpress.org/plugins/ai-engine/"
 ],
 "attacksurface_url": "https://attacksurface.wpsec.com/plugin/ai-engine",
 "source": "WPSec",
 "license": {
  "name": "CC BY 4.0",
  "url": "https://creativecommons.org/licenses/by/4.0/"
 },
 "usage": {
  "plugin": "Low",
  "affected_versions": "Low",
  "as_of": "2026-11-07"
 }
}