{"id":"CVE-2026-110732","kind":"vulnerability","aliases":["CVE-2026-110732"],"related":[],"title":"WordPress AI Engine plugin: unauthenticated OAuth registration grants admin MCP access","description":"The AI Engine – The Chatbot, AI Framework & MCP for WordPress plugin for WordPress is vulnerable to Missing Authorization in all versions up to, and including, 3.8.6 This is due to the MCP module's OAuth 2.1 Dynamic Client Registration endpoint (/wp-json/mcp/v1/oauth/register) being registered with a permission_callback of __return_true, allowing an unauthenticated user to register an active OAuth client with an attacker-controlled redirect URI. This makes it possible for unauthenticated attackers to obtain an administrator-bound MCP access token, and thereby full administrator-level control through the MCP tools (including user creation and option updates), once an administrator approves the attacker's client on the OAuth consent screen. The consent page is additionally served without X-Frame-Options or Content-Security-Policy frame-ancestors, so that approval can be obtained via clickjacking.","summary":"The AI Engine WordPress plugin up to and including 3.8.6 lets anyone register an OAuth client on its MCP endpoint without authentication. An attacker can get an administrator-bound access token after an admin approves the client, which is possible through clickjacking, and then create users and change options.","severity":"high","cvss":7.5,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ai-engine","mcp","package","self-hosted","wordpress"],"not_affected_if":["mcp-module-disabled","plugin-not-installed"],"how_to_check":"- Check whether the AI Engine plugin is installed and its version in the WordPress admin plugins list, or with `wp plugin get ai-engine --field=version`\n- Look for the MCP route `/wp-json/mcp/v1/oauth/register` on the site","fix":"- AI Engine plugin: versions after `3.8.6`; the sources do not name the exact fixed version","status":"open","published_at":"2026-10-30T07:16:31+00:00","first_seen_at":"2026-10-30T07:29:00+00:00","triaged_at":"2026-10-30T07:30:04+00:00","updated_at":"2026-10-30T07:30:04+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-30T07:30:04Z","model":"claude-haiku-5-5","output":{"fix":"- AI Engine plugin: versions after `3.8.6`; the sources do not name the exact fixed version\n- unknown","reach":"internet","title":"WordPress AI Engine plugin: unauthenticated OAuth registration grants admin MCP access","impact":"high","summary":"The AI Engine WordPress plugin up to and including 3.8.6 lets anyone register an OAuth client on its MCP endpoint without authentication. An attacker can get an administrator-bound access token after an admin approves the client, which is possible through clickjacking, and then create users and change options.","audience":"businesses","category":"package","nicknames":[],"who_cares":["wordpress","ai-engine","mcp","self-hosted"],"confidence":0.7,"fix_status":"unknown","needs_auth":"no","worst_case":"Attacker gains administrator control of the WordPress site","analyst_note":"Confirm the first fixed version of AI Engine after 3.8.6 and whether the MCP module is enabled by default, from the vendor changelog or the NVD page.","how_to_check":"- Check whether the AI Engine plugin is installed and its version in the WordPress admin plugins list, or with `wp plugin get ai-engine --field=version`\n- Look for the MCP route `/wp-json/mcp/v1/oauth/register` on the site\n- unknown","plain_action":"","needs_analyst":true,"not_affected_if":["plugin-not-installed","mcp-module-disabled"],"who_is_affected":"Sites running the AI Engine plugin version 3.8.6 or earlier with its MCP module active, where the OAuth registration endpoint is exposed. An attacker needs an administrator to approve a client on the consent screen, which clickjacking can produce. Sites without the plugin or with the MCP module disabled are not exposed by this report.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000764,"input_tokens":4342,"output_tokens":660,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-110732':14A,17A '-2026':13A,16A '/wp-json/mcp/v1/oauth/register':117C '2.1':112C '3.8.6':36B,102C 'access':11A,57B,158C 'activ':134C 'addit':194C 'admin':9A,61B 'administr':55B,155C,164C,179C 'administrator-bound':54B,154C 'administrator-level':163C 'ai':2A,19B,28B,78C,82C 'ai-engin':18B 'allow':127C 'ancestor':208C 'anyon':38B 'approv':62B,180C,211C 'attack':50B,140C,150C,182C 'attacker-control':139C 'authent':48B 'author':94C 'bound':56B,156C 'callback':123C 'chang':75B 'chatbot':81C 'clickjack':69B,216C 'client':42B,64B,114C,136C,184C 'consent':188C,191C 'content':203C 'content-security-polici':202C 'control':141C,166C 'creat':72B 'creation':173C 'cve':12A,15A 'due':105C 'dynam':113C 'endpoint':46B,116C 'engin':3A,20B,29B,79C 'frame':199C,207C 'frame-ancestor':206C 'framework':83C 'full':162C 'get':52B 'grant':8A 'host':25B 'includ':35B,101C,171C 'let':37B 'level':165C 'make':145C 'mcp':10A,21B,45B,84C,108C,157C,169C 'miss':93C 'modul':109C 'oauth':6A,41B,111C,135C,187C 'obtain':152C,214C 'option':76B,175C,200C 'packag':22B 'page':192C 'permiss':122C 'plugin':4A,31B,87C 'polici':205C 'possibl':67B,147C 'redirect':142C 'regist':39B,119C,132C 'registr':7A,115C 'return':125C 'screen':189C 'secur':204C 'self':24B 'self-host':23B 'serv':195C 'therebi':161C 'token':58B,159C 'tool':170C 'true':126C 'unauthent':5A,129C,149C 'updat':176C 'uri':143C 'user':73B,130C,172C 'version':97C 'via':215C 'vulner':91C 'without':47B,196C 'wordpress':1A,26B,30B,86C,89C 'x':198C 'x-frame-opt':197C","nicknames":[],"mitigations":[],"who_affected":"Sites running the AI Engine plugin version 3.8.6 or earlier with its MCP module active, where the OAuth registration endpoint is exposed. An attacker needs an administrator to approve a client on the consent screen, which clickjacking can produce. Sites without the plugin or with the MCP module disabled are not exposed by this report.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"businesses","plain_action":null,"first_public_at":"2026-10-30T07:16:31+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H","cvss_by":"security@wordfence.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-110732","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-110732","severity":null,"published_at":"2026-10-30T07:16:31+00:00","modified_at":"2026-10-30T07:16:31+00:00","first_seen_at":"2026-10-30T07:29:00+00:00","fetched_at":"2026-10-30T07:29:00+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}