Skip to main content

AnkiMCP Server CVE-2026-61546

| EUVDEUVD-2026-112504 HIGH
Origin Validation Error (CWE-346)
2026-10-28 GitHub_M
8.8
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Lure victim to malicious web page
  2. Delivery
    DNS-rebind hostname to 127.0.0.1:3141
  3. Exploit
    Reach loopback listener past disabled protection
  4. Execution
    Initialize MCP and enumerate Anki tools
  5. Impact
    Read and non-destructively write local collection

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Origin validation
Exploitation Conditions

Exploitation requires the AnkiMCP addon's default Streamable HTTP listener to be running (http_enabled=True on 127.0.0.1:3141 with empty http_path selecting the root endpoint) while Anki is open, and the victim must visit an attacker-controlled page that performs DNS rebinding to loopback (UI:P). No LAN position, local process, bearer token, API key, session secret, or Host/Origin allowlist is needed because protection is globally disabled before initialize/tools/list/tools/call reach MCP dispatch. Limiting factors that reduce realistic risk: the attacker depends on successful rebinding and timing (AT:P) and on the victim actively browsing while the listener is live; available operations are bounded by enabled tool filters, and destructive/deletion tools are hidden unless the user opts into enabled_destructive_tools - so default impact is read plus non-destructive note/deck create/update, not deletion, though confidentiality and integrity of the collection are still exposed.

Impact

Multiple signals point to a genuine but conditional risk rather than a mass-exploitation emergency. The CVSS 4.0 base is 8.8 (High) with AV:N, AC:L, PR:N and high vulnerable- and subsequent-system confidentiality/integrity impact (VC:H/VI:H/SC:H/SI:H), reflecting that a remote, unauthenticated web page can reach the loopback MCP listener and both read and modify the local Anki collection. However, two de-rating metrics matter: AT:P (a specific attack requirement - successful DNS rebinding plus the victim running Anki with the listener active) and UI:P (the victim must visit the attacker's page), so exploitation is not fully attacker-automatable and depends on victim-side timing and configuration. The vuln.today decision label is 'this_week' (not act_now/emergency), consistent with a prioritized-but-not-drop-everything fix. CISA KEV status is NO (no confirmed active exploitation), and no EPSS score was supplied, so widespread-exploitation probability cannot be quantified from the input - this gap should be noted rather than assumed low. A detailed public PoC is published in the GHSA advisory; it exercises the real McpServer, real FastMCP construction, real Streamable HTTP transport and real tool registration, but substitutes the Anki main-thread bridge response, so it confirms end-to-end MCP dispatch under forged Host/Origin headers rather than demonstrating changes to a real collection. Net: a real priority worth patching promptly, tempered by the niche footprint of the affected addon and the victim-interaction/timing prerequisites that make opportunistic mass exploitation less likely than the raw 8.8 suggests.

Exploit ScenarioDerived

A user runs Anki with the AnkiMCP addon, whose default local HTTP MCP listener is active on 127.0.0.1:3141 at the root path. While that listener is running, the user visits an attacker-controlled web page, which uses DNS rebinding to make its hostname resolve to loopback; because the addon globally disables FastMCP DNS-rebinding protection and enforces no bearer token, session secret, or strict Host/Origin allowlist, the browser's requests complete MCP initialize, list Anki tools, and invoke read and non-destructive write tools against the local collection. A working public PoC in the advisory confirms this MCP dispatch path (with a substituted Anki bridge response); attack complexity is low but the attack requires the victim to visit the page (UI:P) and depends on rebinding/timing conditions (AT:P).

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 28, 2026

AnkiMCP Server addon 0.20.0 and earlier ships a FastMCP Streamable HTTP listener enabled by default on 127.0.0.1:3141 with DNS-rebinding protection globally disabled, so a malicious web page that rebinds a hostname to loopback can complete MCP initialize, enumerate tools with tools/list, and dispatch tools/call against the victim's Anki collection without any bearer token, API key, session secret, or Host/Origin allowlist check. Because the flaw needs the victim to browse an attacker-controlled page while Anki and the listener are live, and depends on successful rebinding and timing (CVSS 3.1 AV:N/AC:H/PR:N/UI:R/S:C), the practical window is conditional rather than continuous; the vendor GHSA includes a reproduction harness that reaches real MCP tool dispatch with substituted Anki bridge responses, but it is not verified as working exploit code that modifies a real collection. There is no CISA KEV entry and no confirmed active exploitation at time of analysis; default impact is unauthorised read of the collection plus non-destructive note/deck creation and updates, since destructive tools stay hidden unless enabled_destructive_tools is opted into.

RemediationAI

Upgrade the AnkiMCP Server addon to version 0.21.0 (https://github.com/ankimcp/anki-mcp-server-addon/tree/v0.21.0, fixes in commits 6dcb6939b0ecc0801f45cf0d241dc946aad1654f and d5306ff42d68f1e3b82a96878eb059437e820316), which always enables FastMCP DNS-rebinding protection and enforces a built-in loopback allowlist of 127.0.0.1, localhost and [::1] so ordinary localhost MCP clients keep working without extra configuration - see the advisory at https://github.com/ankimcp/anki-mcp-server-addon/security/advisories/GHSA-j9xx-59ph-wmr6. If you expose the HTTP server through ngrok, Cloudflare or another reverse proxy, 0.21.0 rejects the non-loopback Host/Origin with HTTP 403, so you must add those values to the new http_allowed_hosts (scheme-less, e.g. "myapp.ngrok.io:443") and http_allowed_origins (full origin, e.g. "https://myapp.example") config fields rather than disabling protection; both lists append to the loopback defaults, browser origins allowlisted via cors_origins must also be added to http_allowed_origins, and these settings require an Anki restart to take effect. If you cannot patch immediately, the actionable stopgap is to set http_enabled=false in the addon config and use a local non-HTTP MCP transport instead; the trade-off is that HTTP-based clients such as Claude Desktop with mcp-remote and Claude Code added via claude mcp add anki --transport http http://127.0.0.1:3141/ will no longer connect until the addon is updated and the listener re-enabled. Note that changing http_path alone does not mitigate anything, since the vulnerability is the missing Host/Origin validation rather than endpoint discovery.

Affected VersionsENISA

anki-mcp-server-addon < 0.21.0

Affected Packages

euvd anki_mcp_server_addon fix: 0.21.0

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 addon embeds FastMCP (the MCP Python SDK server) and serves the Streamable HTTP MCP transport through uvicorn. In anki_mcp_server/mcp_server.py the server constructs TransportSecuritySettings(enable_dns_rebinding_protection=False) and passes it to FastMCP, a change originally made so tunnels and reverse proxies such as ngrok or Cloudflare would work; because that setting is applied globally, it also applies to the default loopback listener. anki_mcp_server/config.py defaults to http_enabled=True, http_host="127.0.0.1", http_port=3141 and an empty http_path, which the code resolves to the root / endpoint, with stateless_http=True and no token or session secret in front of dispatch. The root cause class is CWE-346 (Origin Validation Error), with the advisory also citing CWE-350 (Reliance on Reverse DNS Resolution for a Security-Critical Action): the browser-origin boundary is entirely delegated to FastMCP's transport protection, and that protection was turned off, so request Host and Origin headers are never checked and DNS rebinding from a public page to 127.0.0.1 is accepted. The fix introduces transport_security_config.build_transport_security(config), wires it into step run(), always enables DNS-rebinding protection, and enforces loopback DEFAULT_ALLOWED_HOSTS / DEFAULT_ALLOWED_ORIGINS (127.0.0.1, localhost, [::1]) that operators can extend via the new http_allowed_hosts and http_allowed_origins config fields; the separate tunnel (WebSocket) transport bypasses HTTP middleware and is unaffected by this policy. CPE data maps the affected package as cpe:2.3:a:ankimcp:anki-mcp-server-addon:* as the vulnerable range up to and including 0.20.0.

Know when Anki Mcp Server Addon 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

Vendor (GitHub_M) PRIMARY 8.8 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
vuln.today AI 8.0 HIGH

Browser-reachable via DNS rebinding so AV:N and PR:N, but success depends on victim-side timing/configuration (AC:H) and visiting the page (UI:R); crosses browser-origin to loopback MCP (S:C), read/write collection (C:H/I:H), deletion hidden by default (A:N).

3.1 AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
High
Subsequent system: Integrity
High
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 28, 2026 - 22:04 EUVD
CVE Published
Oct 28, 2026 - 21:40 cve.org
HIGH 8.8

DescriptionCVE.org

AnkiMCP is an Anki addon that implements an MCP server, enabling AI assistants to interact with the Anki flashcard application. Prior to version 0.21.0, anki_mcp_server/mcp_server.py globally disables FastMCP DNS-rebinding protection through TransportSecuritySettings with enable_dns_rebinding_protection=False, including for the default local Streamable HTTP listener. The defaults in anki_mcp_server/config.py enable http_enabled on 127.0.0.1:3141, with an empty http_path selecting the root endpoint. No bearer token, API key, session secret, strict Host allowlist or strict Origin allowlist is enforced before initialize, tools/list and tools/call reach MCP dispatch. A victim who visits a malicious web page while Anki and the listener are running can have browser requests rebound to loopback, allowing the attacker to initialize MCP, enumerate tools, read the local collection, and perform enabled non-destructive note/deck creation or updates. The attacker needs neither LAN position nor a local process. Available operations depend on enabled tool filters; destructive tools are hidden unless enabled_destructive_tools is opted into, limiting deletion-level impact but not the exposed read/write operations. The reported harness confirms real MCP tool dispatch with substituted Anki bridge responses rather than demonstrating destructive changes to a real collection. Disabling protection for tunnels/proxies also disables it for the normal loopback configuration. This issue is fixed in version 0.21.0.

Executive ViewAI

Why It Matters

CVE-2026-61546 is a high-severity flaw in the AnkiMCP Server addon (v0.20.0 and earlier) that exposes users' Anki data to unauthorized access from malicious websites. An attacker can exploit this by tricking a user into visiting a compromised page while the addon is running, potentially allowing manipulation of the user's flashcard collection. This puts individual users at risk of data tampering and privacy breaches, and organizations that rely on Anki for training or knowledge management should be concerned about integrity and confidentiality of learning materials.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

Prevalence
Low
niche AI-assistant addon for Anki, small user footprint
Social Media
1
Sightings
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy