CVE-2026-73249
Full vulnerability record from the local CVENow database.
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.
Severity
HIGH
CVSS score
7.5
(v3.1)
Vulnerability status
Deferred
Source identifier
Published
2026-08-11 22:19:05.687000
Last modified
2026-10-24 15:10:00.190000
View original CVE JSON
{
"id": "CVE-2026-73249",
"sourceIdentifier": "[email protected]",
"published": "2026-08-11T22:19:05.687",
"lastModified": "2026-10-24T15:10:00.190",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "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."
},
{
"lang": "es",
"value": "calibre es un gestor de libros electrónicos. Antes de 9.12.0, el endpoint del Content Server de calibre POST /book-update-annotations/{library_id}/{book_id}/{fmt} en src/calibre/srv/books.py omite needs_db_write=True, causando que Router.dispatch() omita ctx.check_for_write_access() antes de que update_annotations() pase JSON controlado por el atacante a db.merge_annotations_for_book(), lo que permite a un usuario de solo lectura o a un usuario anónimo en una implementación no autenticada persistir cambios no autorizados en las anotaciones de libros. Este problema está solucionado en la versión 9.12.0."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "kovidgoyal",
"product": "calibre",
"versions": [
{
"version": "< 9.12.0",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "[email protected]",
"type": "Secondary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N",
"baseScore": 7.5,
"baseSeverity": "HIGH",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "NONE",
"integrityImpact": "HIGH",
"availabilityImpact": "NONE"
},
"exploitabilityScore": 3.9,
"impactScore": 3.6
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-08-12T12:41:56.031175Z",
"id": "CVE-2026-73249",
"options": [
{
"exploitation": "poc"
},
{
"automatable": "yes"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "[email protected]",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-862"
}
]
}
],
"references": [
{
"url": "https://github.com/kovidgoyal/calibre/commit/71295e8b62801e1ccecaa4fac47e6942f11cfe1e",
"source": "[email protected]"
},
{
"url": "https://github.com/kovidgoyal/calibre/releases/tag/v9.12.0",
"source": "[email protected]"
},
{
"url": "https://github.com/kovidgoyal/calibre/security/advisories/GHSA-5x64-w63v-x2g6",
"source": "[email protected]"
},
{
"url": "https://github.com/kovidgoyal/calibre/security/advisories/GHSA-5x64-w63v-x2g6",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
}
]
}