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.
Published: 2026-08-11
Score: 7.5 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

A missing write authorization check in Calibre Content Server allows a user to modify book annotations through the POST endpoint "/book-update-annotations/". The endpoint forwards attacker‑controlled JSON to a database merge operation, letting any read‑only or anonymous client record new or altered annotations. This results in data tampering of e‑book metadata without elevating privileges.

Affected Systems

The vulnerability exists in all versions of calibre Content Server prior to 9.12.0, specifically those distributed under the vendor kovidgoyal:calibre. Users running 9.11 or earlier are exposed.

Risk and Exploitability

The CVSS score of 7.5 indicates high impact, but the EPSS of less than 1% suggests a low likelihood of exploitation in the wild. The issue is not listed in CISA’s KEV. The likely attack vector is an unauthenticated POST request to the vulnerable endpoint, which bypasses the write‑access check and permits unauthorized annotation changes.

Generated by OpenCVE AI on August 12, 2026 at 19:17 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to calibre 9.12.0 or later, which restores the missing authorization check.
  • If an upgrade is unavailable, restrict the "/book-update-annotations/" endpoint to authenticated users only using a firewall or reverse proxy.
  • Disable the Content Server or remove annotation functionality from the configuration to prevent write operations from unauthenticated sources.

Generated by OpenCVE AI on August 12, 2026 at 19:17 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 12 Aug 2026 13:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 12 Aug 2026 12:30:00 +0000

Type Values Removed Values Added
First Time appeared Kovidgoyal
Kovidgoyal calibre
Vendors & Products Kovidgoyal
Kovidgoyal calibre

Tue, 11 Aug 2026 22:15:00 +0000

Type Values Removed Values Added
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.
Title calibre Content Server `/book-update-annotations` Missing Write Authorization Check Allows Unauthorized Annotation Modification
Weaknesses CWE-862
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N'}


Subscriptions

Kovidgoyal Calibre
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-12T12:43:31.031Z

Reserved: 2026-08-11T17:18:01.597Z

Link: CVE-2026-73249

cve-icon Vulnrichment

Updated: 2026-08-12T12:43:27.235Z

cve-icon NVD

Status : Received

Published: 2026-08-11T22:19:05.687

Modified: 2026-08-12T13:17:26.097

Link: CVE-2026-73249

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-12T19:30:08Z

Weaknesses