---
id: "CVE-2026-61546"
kind: "vulnerability"
aliases: ["CVE-2026-61546"]
title: "AnkiMCP: DNS rebinding lets web pages reach local Anki collection"
severity: "high"
cvss: 8.8
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["anki", "ankimcp", "desktop", "mcp", "package", "self-hosted"]
not_affected_if: ["addon-not-installed", "http-listener-disabled", "patched-0.21.0-or-later"]
published_at: "2026-10-28T22:17:15+00:00"
first_seen_at: "2026-10-28T22:35:35+00:00"
updated_at: "2026-10-28T22:36:32+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-61546", "first_seen_at": "2026-10-28T22:35:35+00:00"}]
---

# AnkiMCP: DNS rebinding lets web pages reach local Anki collection

AnkiMCP is an Anki addon that runs an MCP server on 127.0.0.1:3141 by default, and before 0.21.0 it disabled DNS-rebinding protection. A malicious web page a victim visits while Anki runs can rebind browser requests to loopback and read the local collection or create and update notes and decks through MCP tools.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed AnkiMCP addon version in Anki's add-on manager; versions below `0.21.0` are affected.
- Check `anki_mcp_server/config.py` for `http_enabled` set to true on `127.0.0.1:3141`, which is the default.
- Check `anki_mcp_server/mcp_server.py` for `enable_dns_rebinding_protection=False`.

## Fix

- Update AnkiMCP to `0.21.0` or later.
- Disable the HTTP listener if it is not needed, or stop Anki while not using AI assistants.

## Timeline

- 2026-10-28T22:35:35+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-61546

## From the sources

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.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
