Skip to main content
VulnerabilityPublished

CVE-2026-73249: kovidgoyal calibre · Missing Authorization

Affects kovidgoyal calibreSource CVE Database V5

0
Compare

Not known to be exploited · CVSS 7.5 High : upgrade to 9.12.0 soon.

Data as of 8 Nov 2026, 23:24 UTC

CVSS 3.1 base score
7.5High
How severe the flaw is on the 0–10 CVSS scale.
EPSS
0.4% chance of exploitation in 30 days – higher than 38% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
Patch
Available – fixed in 9.12.0
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

Exploitation evidence

  1. Disclosed: evidence found.

    CVE published 11 Aug 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponized: no evidence on record.

    No public exploit code indexed in Metasploit or Exploit-DB

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq Mirage: no evidence on record.

    No attack traffic recorded by OffSeq Mirage sensors

A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 9 Nov 2026.

What to do

Upgrade calibre and kovidgoyal/calibre to 9.12.0.

Affected software

ProductAffectedFixed in
kovidgoyalcalibreAffected
  • <9.12.0
Fixed in
  • 9.12.0
GitHubkovidgoyal/calibrepkg:github/kovidgoyal/calibreOther threatsAffected
  • <9.12.0
Fixed in
  • 9.12.0

Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.

AI-suggested

This vulnerability is fixed in calibre version 9.12.0. Users should upgrade to version 9.12.0 or later to remediate this issue.

Description

calibre is an e-book manager. Prior to 9.12.0, the calibre Content Server endpoint POST /book-update-annotations/{library_id}/{book_id}/{fmt} in src/calibre/srv/books.py omits needs_db_write=True, causing Router.dispatch() to skip ctx.check_for_write_access() before update_annotations() passes attacker-controlled JSON to db.merge_annotations_for_book(), which allows a readonly user or an anonymous user on an unauthenticated deployment to persist unauthorized book annotation changes. This issue is fixed in version 9.12.0.

References

Community reviews

Loading reviews…