CVE-2025-43703 Overview
CVE-2025-43703 affects Ankitects Anki through version 25.02. A crafted shared deck can grant attacker-controlled access to Anki's internal API without knowledge of an API key. Exploitation vectors include embedded scripts or the SRC attribute of an IMG element within deck content. The issue exists because of an incomplete fix for CVE-2024-32484, meaning prior remediation efforts did not fully close the attack surface. The vulnerability is classified under [CWE-830] (Inclusion of Web Functionality from an Untrusted Source) and requires user interaction to load a malicious deck.
Critical Impact
A malicious shared deck can invoke Anki's internal API to read or modify local data without user consent, bypassing the intended API key protection.
Affected Products
- Ankitects Anki through 25.02
- Anki desktop application (all platforms supporting shared deck import)
- Any deployment using the vulnerable internal API endpoint exposed to deck content
Discovery Timeline
- 2025-04-16 - CVE-2025-43703 published to NVD
- 2026-06-17 - Last updated in NVD database
Technical Details for CVE-2025-43703
Vulnerability Analysis
Anki exposes an internal API used by the client application to manage decks, cards, and configuration. To restrict access, Anki gates the API behind a key. However, deck content rendered by the application can issue requests that reach the API endpoint without honoring the key requirement in all code paths. Attackers craft shared decks that include HTML or script content pointing at the internal API. When a victim imports and views the deck, the embedded content triggers requests to the API in the context of the local Anki instance. The result is attacker-controlled interaction with local application state through content that most users treat as inert study material.
Root Cause
The root cause is an incomplete fix for CVE-2024-32484. The previous patch did not cover all request paths that could reach the internal API from rendered deck content. Requests originating from attributes such as IMG SRC, along with scripted requests, bypassed the added restrictions. This falls under [CWE-830] because the application executes web functionality sourced from untrusted deck files.
Attack Vector
The attack requires the victim to import and open a crafted shared deck. Anki shared decks are commonly distributed through community platforms, which increases the plausibility of the delivery path. Once loaded, the deck's rendered content issues requests to the internal API endpoint. The attacker does not need credentials, network position, or knowledge of the API key. Impact is limited to what the internal API exposes to the local user context.
No public proof-of-concept exploit is listed in the enriched data. Technical details are available in the Anki Pull Request #3925 and the associated commit.
Detection Methods for CVE-2025-43703
Indicators of Compromise
- Shared deck files (.apkg, .colpkg) containing HTML tags with SRC attributes referencing 127.0.0.1 or localhost on Anki's internal API port
- Deck templates or card fields containing inline <script> blocks issuing fetch or XMLHttpRequest calls to internal endpoints
- Unexpected modifications to the Anki collection database following import of a third-party deck
Detection Strategies
- Inspect shared deck contents statically before import, looking for card templates that embed script content or references to loopback addresses
- Monitor endpoint process telemetry for the Anki process making outbound requests to its own loopback API immediately after deck import
- Track file writes to the Anki user profile directory that correlate with recently imported decks from untrusted sources
Monitoring Recommendations
- Log all .apkg and .colpkg file downloads from non-official sources and flag them for review
- Enable verbose logging in Anki where available to capture internal API request origins
- Alert on Anki child process activity or unexpected local network calls originating from the rendering context
How to Mitigate CVE-2025-43703
Immediate Actions Required
- Upgrade Ankitects Anki to a version later than 25.02 that includes the fix from Pull Request #3925
- Avoid importing shared decks from untrusted or unverified sources until the update is applied
- Audit previously imported decks from community sources for embedded scripts or loopback references
Patch Information
The fix is delivered through Anki Pull Request #3925, with the corrective changes in commit 24bca15. The patch tightens validation of requests reaching the internal API so that content-originated calls, including those triggered by IMG SRC attributes, are properly rejected without a valid key.
Workarounds
- Restrict deck imports to trusted, first-party sources such as vetted publishers
- Review card templates in imported decks and strip HTML that references local network endpoints or contains inline scripts
- Run Anki under a restricted user account so any internal API abuse is limited to a low-privilege profile
# Verify the installed Anki version and confirm it is patched
anki --version
# Optional: inspect a shared deck for suspicious references before import
unzip -p suspicious_deck.apkg collection.anki2 | strings | grep -Ei 'localhost|127\.0\.0\.1|<script'
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

