ankitects/anki · Security

Anki: User scripts in iframes have access to the internal Anki API

GHSA ID
GHSA-cw6h-ffmh-x6vh
Severity
medium
Published
Updated
CVSS
6.5 · CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N
CVSS v3
6.5 · CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N

Description

Summary

Anki's webview-based pages communicate with the Rust backend using an internal localhost API. Anki implements measures to prevent user scripts run in the reviewer/editor from accessing this API (https://github.com/ankitects/anki/pull/3925) but it inadvertently allows access to scripts included via iframes in the editor. While overall only a limited set of API methods are exposed, some such as getImageForOcclusion can read arbitrary files.

CWE: CWE-22 (Path Traversal) Reporter: Bankde (Eakasit)

Affected Products

Ecosystem Package Affected Versions
PyPI aqt <= 25.09.3

Impact

Any desktop Anki user (Windows, macOS, Linux) who imports an untrusted .apkg and views card with an embedded iframe is vulnerable. No special configuration is required. The attacker can read any file accessible to the Anki process and exfiltrate its contents over the network.

Patches

A patch is available in 25.09.4

Workarounds

  • Do not import .apkg files from untrusted sources.
  • Inspect .apkg contents (it's a ZIP) for .html/.svg files with <script> tags before importing.
  • Block unexpected outbound network requests from the Anki process at the firewall level.

References

CWEs

References