calibre — security advisory
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.
- Products
- calibre
- Affected versions
- 2.33.0+dfsg-1build1, 2.38.0+dfsg-1, 2.45.0+dfsg-1, 2.45.0+dfsg-1build1, 2.48.0+dfsg-1, 2.48.0+dfsg-1build1, 2.54.0+dfsg-1, 2.55.0+dfsg-1, 2.55.0+dfsg-1ubuntu0.2, 3.12.0+dfsg-1, 3.13.0+dfsg-1, 3.14.0+dfsg-1, 3.15.0.1+dfsg-1, 3.16.0+dfsg-1, 3.16.0+dfsg-1build1, 3.17.0+dfsg-1, 3.17.0+dfsg-2, 3.18.0+dfsg-1build1, 3.19.0+dfsg-1, 3.20.0+dfsg-1, 3.21.0+dfsg-1, 3.21.0+dfsg-1build1, 3.46.0+dfsg-1, 3.7.0+dfsg-2, 3.7.0+dfsg-2build1, 4.2.0+dfsg-2, 4.3.0+dfsg-1, 4.3.0+dfsg-2, 4.4.0+dfsg-1, 4.5.0+dfsg-1, 4.5.0+dfsg-2, 4.5.0+dfsg-3, 4.6.0+dfsg-1, 4.7.0+dfsg-1, 4.99.3+dfsg-2, 4.99.4+dfsg+really4.10.0+py3-2, 4.99.4+dfsg+really4.11.2-1, 4.99.4+dfsg+really4.11.2-1build1, 4.99.4+dfsg+really4.12.0-1, 4.99.4+dfsg+really4.12.0-1build1, 4.99.4+dfsg+really4.12.0-1ubuntu1, 4.99.4+dfsg-1, 4.99.4+dfsg-1build1, 5.25.0+dfsg-2, 5.33.2+dfsg-1, 5.34.0+dfsg-1, 5.35.0+dfsg-1ubuntu2, 5.37.0+dfsg-1, 5.37.0+dfsg-1build1, 6.24.0+ds-1, 6.29.0+ds-1, 7.0.0+ds-1, 7.1.0+ds-1, 7.1.0+ds-2, 7.2.0+ds-1, 7.2.0+ds-1build1, 7.3.0+ds-1, 7.4.0+ds-1, 7.5.1+ds-1, 7.5.1+ds-2, 7.5.1+ds-3, 7.6.0+ds-1, 7.6.0+ds-1build1, 8.13.0+ds+~0.10.5-3, 8.14.0+ds+~0.10.5-1, 8.15.0+ds+~0.10.5-1, 8.16.0+ds+~0.10.5-2, 8.16.2+ds+~0.10.5-1, 8.16.2+ds+~0.10.5-2, 8.16.2+ds+~0.10.5-3, 8.8.0+ds-3build1, 9.11.0+ds+~0.10.6-1, 9.11.0+ds+~0.10.6-2, 9.13.0+ds+~0.10.6-1, 9.14.0+ds+~0.10.6-2build1, 9.2.1+ds+~0.10.5-2build1, 9.9.0+ds+~0.10.6-1
- Fixed versions
- Not specified
- CVEs
- CVE-2026-73249
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 00:30 UTC · Revision 1
Source evidence
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.
osv:UBUNTU-CVE-2026-73249
calibre
Fixed versions: Not specified
calibre
Fixed versions: Not specified
calibre
Fixed versions: Not specified
calibre
Fixed versions: Not specified
calibre
Fixed versions: Not specified
calibre
Fixed versions: Not specified
calibre
Fixed versions: Not specified
Complete source record
{
"id": "2f42192d601aaa9bd262cf487c7997cdd82221b421d617c640c381004b0b5512",
"url": "https://osv.dev/vulnerability/UBUNTU-CVE-2026-73249",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "UBUNTU-CVE-2026-73249",
"summary": "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.",
"evidence": "osv:UBUNTU-CVE-2026-73249",
"products": [
{
"name": {
"value": "calibre",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "2.33.0+dfsg-1build1",
"evidence": "/affected/0/versions"
},
{
"value": "2.38.0+dfsg-1",
"evidence": "/affected/0/versions"
},
{
"value": "2.45.0+dfsg-1",
"evidence": "/affected/0/versions"
},
{
"value": "2.45.0+dfsg-1build1",
"evidence": "/affected/0/versions"
},
{
"value": "2.48.0+dfsg-1",
"evidence": "/affected/0/versions"
},
{
"value": "2.48.0+dfsg-1build1",
"evidence": "/affected/0/versions"
},
{
"value": "2.54.0+dfsg-1",
"evidence": "/affected/0/versions"
},
{
"value": "2.55.0+dfsg-1",
"evidence": "/affected/0/versions"
},
{
"value": "2.55.0+dfsg-1ubuntu0.2",
"evidence": "/affected/0/versions"
}
]
},
{
"name": {
"value": "calibre",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "3.7.0+dfsg-2",
"evidence": "/affected/1/versions"
},
{
"value": "3.7.0+dfsg-2build1",
"evidence": "/affected/1/versions"
},
{
"value": "3.12.0+dfsg-1",
"evidence": "/affected/1/versions"
},
{
"value": "3.13.0+dfsg-1",
"evidence": "/affected/1/versions"
},
{
"value": "3.14.0+dfsg-1",
"evidence": "/affected/1/versions"
},
{
"value": "3.15.0.1+dfsg-1",
"evidence": "/affected/1/versions"
},
{
"value": "3.16.0+dfsg-1",
"evidence": "/affected/1/versions"
},
{
"value": "3.16.0+dfsg-1build1",
"evidence": "/affected/1/versions"
},
{
"value": "3.17.0+dfsg-1",
"evidence": "/affected/1/versions"
},
{
"value": "3.17.0+dfsg-2",
"evidence": "/affected/1/versions"
},
{
"value": "3.18.0+dfsg-1build1",
"evidence": "/affected/1/versions"
},
{
"value": "3.19.0+dfsg-1",
"evidence": "/affected/1/versions"
},
{
"value": "3.20.0+dfsg-1",
"evidence": "/affected/1/versions"
},
{
"value": "3.21.0+dfsg-1",
"evidence": "/affected/1/versions"
},
{
"value": "3.21.0+dfsg-1build1",
"evidence": "/affected/1/versions"
}
]
},
{
"name": {
"value": "calibre",
"evidence": "/affected/2/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "3.46.0+dfsg-1",
"evidence": "/affected/2/versions"
},
{
"value": "4.2.0+dfsg-2",
"evidence": "/affected/2/versions"
},
{
"value": "4.3.0+dfsg-1",
"evidence": "/affected/2/versions"
},
{
"value": "4.3.0+dfsg-2",
"evidence": "/affected/2/versions"
},
{
"value": "4.4.0+dfsg-1",
"evidence": "/affected/2/versions"
},
{
"value": "4.5.0+dfsg-1",
"evidence": "/affected/2/versions"
},
{
"value": "4.5.0+dfsg-2",
"evidence": "/affected/2/versions"
},
{
"value": "4.5.0+dfsg-3",
"evidence": "/affected/2/versions"
},
{
"value": "4.6.0+dfsg-1",
"evidence": "/affected/2/versions"
},
{
"value": "4.7.0+dfsg-1",
"evidence": "/affected/2/versions"
},
{
"value": "4.99.3+dfsg-2",
"evidence": "/affected/2/versions"
},
{
"value": "4.99.4+dfsg-1",
"evidence": "/affected/2/versions"
},
{
"value": "4.99.4+dfsg-1build1",
"evidence": "/affected/2/versions"
},
{
"value": "4.99.4+dfsg+really4.10.0+py3-2",
"evidence": "/affected/2/versions"
},
{
"value": "4.99.4+dfsg+really4.11.2-1",
"evidence": "/affected/2/versions"
},
{
"value": "4.99.4+dfsg+really4.11.2-1build1",
"evidence": "/affected/2/versions"
},
{
"value": "4.99.4+dfsg+really4.12.0-1",
"evidence": "/affected/2/versions"
},
{
"value": "4.99.4+dfsg+really4.12.0-1build1",
"evidence": "/affected/2/versions"
},
{
"value": "4.99.4+dfsg+really4.12.0-1ubuntu1",
"evidence": "/affected/2/versions"
}
]
},
{
"name": {
"value": "calibre",
"evidence": "/affected/3/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "5.25.0+dfsg-2",
"evidence": "/affected/3/versions"
},
{
"value": "5.33.2+dfsg-1",
"evidence": "/affected/3/versions"
},
{
"value": "5.34.0+dfsg-1",
"evidence": "/affected/3/versions"
},
{
"value": "5.35.0+dfsg-1ubuntu2",
"evidence": "/affected/3/versions"
},
{
"value": "5.37.0+dfsg-1",
"evidence": "/affected/3/versions"
},
{
"value": "5.37.0+dfsg-1build1",
"evidence": "/affected/3/versions"
}
]
},
{
"name": {
"value": "calibre",
"evidence": "/affected/4/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "6.24.0+ds-1",
"evidence": "/affected/4/versions"
},
{
"value": "6.29.0+ds-1",
"evidence": "/affected/4/versions"
},
{
"value": "7.0.0+ds-1",
"evidence": "/affected/4/versions"
},
{
"value": "7.1.0+ds-1",
"evidence": "/affected/4/versions"
},
{
"value": "7.1.0+ds-2",
"evidence": "/affected/4/versions"
},
{
"value": "7.2.0+ds-1",
"evidence": "/affected/4/versions"
},
{
"value": "7.2.0+ds-1build1",
"evidence": "/affected/4/versions"
},
{
"value": "7.3.0+ds-1",
"evidence": "/affected/4/versions"
},
{
"value": "7.4.0+ds-1",
"evidence": "/affected/4/versions"
},
{
"value": "7.5.1+ds-1",
"evidence": "/affected/4/versions"
},
{
"value": "7.5.1+ds-2",
"evidence": "/affected/4/versions"
},
{
"value": "7.5.1+ds-3",
"evidence": "/affected/4/versions"
},
{
"value": "7.6.0+ds-1",
"evidence": "/affected/4/versions"
},
{
"value": "7.6.0+ds-1build1",
"evidence": "/affected/4/versions"
}
]
},
{
"name": {
"value": "calibre",
"evidence": "/affected/5/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "9.2.1+ds+~0.10.5-2build1",
"evidence": "/affected/5/versions"
},
{
"value": "9.9.0+ds+~0.10.6-1",
"evidence": "/affected/5/versions"
},
{
"value": "9.11.0+ds+~0.10.6-1",
"evidence": "/affected/5/versions"
},
{
"value": "9.11.0+ds+~0.10.6-2",
"evidence": "/affected/5/versions"
},
{
"value": "9.13.0+ds+~0.10.6-1",
"evidence": "/affected/5/versions"
},
{
"value": "9.14.0+ds+~0.10.6-2build1",
"evidence": "/affected/5/versions"
}
]
},
{
"name": {
"value": "calibre",
"evidence": "/affected/6/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "8.8.0+ds-3build1",
"evidence": "/affected/6/versions"
},
{
"value": "8.13.0+ds+~0.10.5-3",
"evidence": "/affected/6/versions"
},
{
"value": "8.14.0+ds+~0.10.5-1",
"evidence": "/affected/6/versions"
},
{
"value": "8.15.0+ds+~0.10.5-1",
"evidence": "/affected/6/versions"
},
{
"value": "8.16.0+ds+~0.10.5-2",
"evidence": "/affected/6/versions"
},
{
"value": "8.16.2+ds+~0.10.5-1",
"evidence": "/affected/6/versions"
},
{
"value": "8.16.2+ds+~0.10.5-2",
"evidence": "/affected/6/versions"
},
{
"value": "8.16.2+ds+~0.10.5-3",
"evidence": "/affected/6/versions"
},
{
"value": "9.2.1+ds+~0.10.5-2build1",
"evidence": "/affected/6/versions"
}
]
}
],
"severity": "high",
"structured": {
"id": "UBUNTU-CVE-2026-73249",
"aliases": [
"UBUNTU-CVE-2026-73249"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"
},
{
"type": "Ubuntu",
"score": "medium"
}
],
"affected": [
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "calibre",
"purl": "pkg:deb/ubuntu/calibre?arch=source&distro=xenial",
"ecosystem": "Ubuntu:16.04:LTS"
},
"versions": [
"2.33.0+dfsg-1build1",
"2.38.0+dfsg-1",
"2.45.0+dfsg-1",
"2.45.0+dfsg-1build1",
"2.48.0+dfsg-1",
"2.48.0+dfsg-1build1",
"2.54.0+dfsg-1",
"2.55.0+dfsg-1",
"2.55.0+dfsg-1ubuntu0.2"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-73249.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "calibre",
"binary_version": "2.55.0+dfsg-1ubuntu0.2"
},
{
"binary_name": "calibre-bin",
"binary_version": "2.55.0+dfsg-1ubuntu0.2"
}
]
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "calibre",
"purl": "pkg:deb/ubuntu/calibre?arch=source&distro=bionic",
"ecosystem": "Ubuntu:18.04:LTS"
},
"versions": [
"3.7.0+dfsg-2",
"3.7.0+dfsg-2build1",
"3.12.0+dfsg-1",
"3.13.0+dfsg-1",
"3.14.0+dfsg-1",
"3.15.0.1+dfsg-1",
"3.16.0+dfsg-1",
"3.16.0+dfsg-1build1",
"3.17.0+dfsg-1",
"3.17.0+dfsg-2",
"3.18.0+dfsg-1build1",
"3.19.0+dfsg-1",
"3.20.0+dfsg-1",
"3.21.0+dfsg-1",
"3.21.0+dfsg-1build1"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-73249.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "calibre",
"binary_version": "3.21.0+dfsg-1build1"
},
{
"binary_name": "calibre-bin",
"binary_version": "3.21.0+dfsg-1build1"
}
]
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "calibre",
"purl": "pkg:deb/ubuntu/calibre?arch=source&distro=focal",
"ecosystem": "Ubuntu:20.04:LTS"
},
"versions": [
"3.46.0+dfsg-1",
"4.2.0+dfsg-2",
"4.3.0+dfsg-1",
"4.3.0+dfsg-2",
"4.4.0+dfsg-1",
"4.5.0+dfsg-1",
"4.5.0+dfsg-2",
"4.5.0+dfsg-3",
"4.6.0+dfsg-1",
"4.7.0+dfsg-1",
"4.99.3+dfsg-2",
"4.99.4+dfsg-1",
"4.99.4+dfsg-1build1",
"4.99.4+dfsg+really4.10.0+py3-2",
"4.99.4+dfsg+really4.11.2-1",
"4.99.4+dfsg+really4.11.2-1build1",
"4.99.4+dfsg+really4.12.0-1",
"4.99.4+dfsg+really4.12.0-1build1",
"4.99.4+dfsg+really4.12.0-1ubuntu1"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-73249.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "calibre",
"binary_version": "4.99.4+dfsg+really4.12.0-1ubuntu1"
},
{
"binary_name": "calibre-bin",
"binary_version": "4.99.4+dfsg+really4.12.0-1ubuntu1"
}
]
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "calibre",
"purl": "pkg:deb/ubuntu/calibre?arch=source&distro=jammy",
"ecosystem": "Ubuntu:22.04:LTS"
},
"versions": [
"5.25.0+dfsg-2",
"5.33.2+dfsg-1",
"5.34.0+dfsg-1",
"5.35.0+dfsg-1ubuntu2",
"5.37.0+dfsg-1",
"5.37.0+dfsg-1build1"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-73249.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "calibre",
"binary_version": "5.37.0+dfsg-1build1"
},
{
"binary_name": "calibre-bin",
"binary_version": "5.37.0+dfsg-1build1"
}
]
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "calibre",
"purl": "pkg:deb/ubuntu/calibre?arch=source&distro=noble",
"ecosystem": "Ubuntu:24.04:LTS"
},
"versions": [
"6.24.0+ds-1",
"6.29.0+ds-1",
"7.0.0+ds-1",
"7.1.0+ds-1",
"7.1.0+ds-2",
"7.2.0+ds-1",
"7.2.0+ds-1build1",
"7.3.0+ds-1",
"7.4.0+ds-1",
"7.5.1+ds-1",
"7.5.1+ds-2",
"7.5.1+ds-3",
"7.6.0+ds-1",
"7.6.0+ds-1build1"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-73249.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "calibre",
"binary_version": "7.6.0+ds-1build1"
},
{
"binary_name": "calibre-bin",
"binary_version": "7.6.0+ds-1build1"
}
]
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "calibre",
"purl": "pkg:deb/ubuntu/calibre?arch=source&distro=stonking",
"ecosystem": "Ubuntu:26.10"
},
"versions": [
"9.2.1+ds+~0.10.5-2build1",
"9.9.0+ds+~0.10.6-1",
"9.11.0+ds+~0.10.6-1",
"9.11.0+ds+~0.10.6-2",
"9.13.0+ds+~0.10.6-1",
"9.14.0+ds+~0.10.6-2build1"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-73249.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "calibre",
"binary_version": "9.14.0+ds+~0.10.6-2build1"
},
{
"binary_name": "calibre-bin",
"binary_version": "9.14.0+ds+~0.10.6-2build1"
}
]
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "calibre",
"purl": "pkg:deb/ubuntu/calibre?arch=source&distro=resolute",
"ecosystem": "Ubuntu:26.04:LTS"
},
"versions": [
"8.8.0+ds-3build1",
"8.13.0+ds+~0.10.5-3",
"8.14.0+ds+~0.10.5-1",
"8.15.0+ds+~0.10.5-1",
"8.16.0+ds+~0.10.5-2",
"8.16.2+ds+~0.10.5-1",
"8.16.2+ds+~0.10.5-2",
"8.16.2+ds+~0.10.5-3",
"9.2.1+ds+~0.10.5-2build1"
],
"database_specific": {
"source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-73249.json"
},
"ecosystem_specific": {
"binaries": [
{
"binary_name": "calibre",
"binary_version": "9.2.1+ds+~0.10.5-2build1"
},
{
"binary_name": "calibre-bin",
"binary_version": "9.2.1+ds+~0.10.5-2build1"
}
]
}
}
],
"modified": "2026-10-17T12:55:30.707157221Z",
"provider": "osv",
"upstream": [
"CVE-2026-73249"
],
"references": [
"https://ubuntu.com/security/CVE-2026-73249",
"https://www.cve.org/CVERecord?id=CVE-2026-73249",
"https://github.com/kovidgoyal/calibre/security/advisories/GHSA-5x64-w63v-x2g6",
"https://github.com/kovidgoyal/calibre/commit/71295e8b62801e1ccecaa4fac47e6942f11cfe1e",
"https://github.com/kovidgoyal/calibre/releases/tag/v9.12.0"
]
},
"related_cves": [
{
"value": "CVE-2026-73249",
"evidence": "/upstream"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 353843,
"published_at": "2026-08-11T22:19:00+00:00"
}