{"id":"DEBIAN-CVE-2026-73249","details":"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.","modified":"2026-09-10T08:47:33.019888498Z","published":"2026-08-11T22:19:05.687Z","upstream":["CVE-2026-73249"],"references":[{"type":"ADVISORY","url":"https://security-tracker.debian.org/tracker/CVE-2026-73249"}],"affected":[{"package":{"name":"calibre","ecosystem":"Debian:12","purl":"pkg:deb/debian/calibre?arch=source&distro=bookworm"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["6.13.0+repack-2","6.13.0+repack-2+deb12u1","6.13.0+repack-2+deb12u10","6.13.0+repack-2+deb12u2","6.13.0+repack-2+deb12u3","6.13.0+repack-2+deb12u4","6.13.0+repack-2+deb12u5","6.13.0+repack-2+deb12u6","6.13.0+repack-2+deb12u7","6.13.0+repack-2+deb12u8","6.13.0+repack-2+deb12u9","6.14.0-1","6.14.1-1","6.15.0-1","6.15.1-1","6.15.1-2","6.15.1-3","6.15.1-4","6.16.0-1","6.17.0-1","6.18.1-1","6.18.1-2","6.18.1-3","6.19.1-1","6.20.0-1","6.21.0-1","6.21.0-2","6.22.0-1","6.23.0-1","6.23.0-2","6.24.0+ds-1","6.24.0-1","6.24.0-2","6.25.0+ds-1","6.26.0+ds-1","6.27.0+ds-1","6.28.0+ds-1","6.28.1+ds-1","6.29.0+ds-1","7.0.0+ds-1","7.1.0+ds-1","7.1.0+ds-2","7.10.0+ds-1","7.11.0+ds-1","7.12.0+ds-1","7.12.0+ds-2","7.12.0+ds-3","7.13.0+ds-1","7.13.0+ds-2","7.14.0+ds-1","7.15.0+ds-1","7.16.0+ds-1","7.16.0+ds-2","7.16.0+ds-3","7.17.0+ds-1","7.17.0+ds-2","7.17.0+ds-3","7.17.0+ds-4","7.18.0+ds-1","7.19.0+ds-1","7.19.0+ds-2","7.2.0+ds-1","7.20.0+ds-1","7.21.0+ds-1","7.21.0+ds-2","7.22.0+ds-1","7.22.0+ds-2","7.23.0+ds-1","7.23.0+ds-2","7.24.0+ds-1","7.24.0+ds-2","7.25.0+ds-1","7.26.0+ds-1","7.26.0+ds-2","7.26.0+ds-3","7.26.0+ds-4","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.7.0+ds-1","7.7.0+ds-2","7.8.0+ds1-1","7.8.0+ds1-2","7.8.0+ds2-1","7.9.0+ds-1","7.9.0+ds-2","8.0.0+ds-1","8.0.1+ds-1","8.1.0+ds-1","8.1.1+ds-1","8.10.0+ds-1","8.10.0+ds-2","8.10.0+ds-3","8.11.0+ds+~0.10.5-1","8.11.1+ds+~0.10.5-1","8.11.1+ds+~0.10.5-2","8.11.1+ds+~0.10.5-3","8.12.0+ds+~0.10.5-1","8.13.0+ds+~0.10.5-1","8.13.0+ds+~0.10.5-2","8.13.0+ds+~0.10.5-3","8.14.0+ds+~0.10.5-1","8.14.0+ds+~0.10.5-1~bpo13+1","8.15.0+ds+~0.10.5-1","8.15.0+ds+~0.10.5-1~bpo13+1","8.15.0+ds+~0.10.5-2","8.16.0+ds+~0.10.5-1","8.16.0+ds+~0.10.5-2","8.16.1+ds+~0.10.5-1","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.16.2+ds+~0.10.5-3~bpo13+1","8.2.1+ds-1","8.2.100+ds-1","8.3.0+ds-1","8.4.0+ds-1","8.4.0+ds1-1~exp1","8.5.0+ds-1","8.6.0+ds-1","8.7.0+ds-1","8.8.0+ds-1","8.8.0+ds-2","8.8.0+ds-2+gcc15","8.8.0+ds-3","8.9.0+ds-1","8.9.0+ds-2","8.9.0+ds-3","8.9.0+ds-4","9.0.0+ds+~0.10.5-1","9.1.0+ds+~0.10.5-1","9.10.0+ds+~0.10.6-1","9.10.0+ds+~0.10.6-2","9.11.0+ds+~0.10.6-1","9.11.0+ds+~0.10.6-2","9.12.0+ds+~0.10.6-1","9.13.0+ds+~0.10.6-1","9.14.0+ds+~0.10.6-1","9.14.0+ds+~0.10.6-2","9.2.0+ds+~0.10.5-1","9.2.1+ds+~0.10.5-1","9.2.1+ds+~0.10.5-2","9.3.0+ds+~0.10.5-1","9.3.1+ds+~0.10.5-1","9.4.0+ds+~0.10.5-1","9.5.0+ds+~0.10.5-1","9.6.0+ds+~0.10.5-1","9.6.0+ds+~0.10.5-2","9.6.0+ds+~0.10.5-3","9.6.0+ds+~0.10.5-4","9.6.0+ds+~0.10.5-5","9.6.0+ds+~0.10.5-6","9.7.0+ds+~0.10.5-1","9.7.0+ds+~0.10.5-2","9.8.0+ds+~0.10.5-1","9.8.0+ds+~0.10.5-2","9.8.0+ds+~0.10.5-3","9.8.0+ds+~0.10.5-4","9.8.0+ds+~0.10.5-5","9.8.0+ds+~0.10.6-1","9.8.0+ds+~0.10.6-2","9.9.0+ds+~0.10.6-1"],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-73249.json"}},{"package":{"name":"calibre","ecosystem":"Debian:13","purl":"pkg:deb/debian/calibre?arch=source&distro=trixie"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["8.10.0+ds-1","8.10.0+ds-2","8.10.0+ds-3","8.11.0+ds+~0.10.5-1","8.11.1+ds+~0.10.5-1","8.11.1+ds+~0.10.5-2","8.11.1+ds+~0.10.5-3","8.12.0+ds+~0.10.5-1","8.13.0+ds+~0.10.5-1","8.13.0+ds+~0.10.5-2","8.13.0+ds+~0.10.5-3","8.14.0+ds+~0.10.5-1","8.14.0+ds+~0.10.5-1~bpo13+1","8.15.0+ds+~0.10.5-1","8.15.0+ds+~0.10.5-1~bpo13+1","8.15.0+ds+~0.10.5-2","8.16.0+ds+~0.10.5-1","8.16.0+ds+~0.10.5-2","8.16.1+ds+~0.10.5-1","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.16.2+ds+~0.10.5-3~bpo13+1","8.5.0+ds-1","8.5.0+ds-1+deb13u1","8.5.0+ds-1+deb13u2","8.5.0+ds-1+deb13u3","8.6.0+ds-1","8.7.0+ds-1","8.8.0+ds-1","8.8.0+ds-2","8.8.0+ds-2+gcc15","8.8.0+ds-3","8.9.0+ds-1","8.9.0+ds-2","8.9.0+ds-3","8.9.0+ds-4","9.0.0+ds+~0.10.5-1","9.1.0+ds+~0.10.5-1","9.10.0+ds+~0.10.6-1","9.10.0+ds+~0.10.6-2","9.11.0+ds+~0.10.6-1","9.11.0+ds+~0.10.6-2","9.12.0+ds+~0.10.6-1","9.13.0+ds+~0.10.6-1","9.14.0+ds+~0.10.6-1","9.14.0+ds+~0.10.6-2","9.2.0+ds+~0.10.5-1","9.2.1+ds+~0.10.5-1","9.2.1+ds+~0.10.5-2","9.3.0+ds+~0.10.5-1","9.3.1+ds+~0.10.5-1","9.4.0+ds+~0.10.5-1","9.5.0+ds+~0.10.5-1","9.6.0+ds+~0.10.5-1","9.6.0+ds+~0.10.5-2","9.6.0+ds+~0.10.5-3","9.6.0+ds+~0.10.5-4","9.6.0+ds+~0.10.5-5","9.6.0+ds+~0.10.5-6","9.7.0+ds+~0.10.5-1","9.7.0+ds+~0.10.5-2","9.8.0+ds+~0.10.5-1","9.8.0+ds+~0.10.5-2","9.8.0+ds+~0.10.5-3","9.8.0+ds+~0.10.5-4","9.8.0+ds+~0.10.5-5","9.8.0+ds+~0.10.6-1","9.8.0+ds+~0.10.6-2","9.9.0+ds+~0.10.6-1"],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-73249.json"}},{"package":{"name":"calibre","ecosystem":"Debian:14","purl":"pkg:deb/debian/calibre?arch=source&distro=forky"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"9.12.0+ds+~0.10.6-1"}]}],"versions":["8.10.0+ds-1","8.10.0+ds-2","8.10.0+ds-3","8.11.0+ds+~0.10.5-1","8.11.1+ds+~0.10.5-1","8.11.1+ds+~0.10.5-2","8.11.1+ds+~0.10.5-3","8.12.0+ds+~0.10.5-1","8.13.0+ds+~0.10.5-1","8.13.0+ds+~0.10.5-2","8.13.0+ds+~0.10.5-3","8.14.0+ds+~0.10.5-1","8.14.0+ds+~0.10.5-1~bpo13+1","8.15.0+ds+~0.10.5-1","8.15.0+ds+~0.10.5-1~bpo13+1","8.15.0+ds+~0.10.5-2","8.16.0+ds+~0.10.5-1","8.16.0+ds+~0.10.5-2","8.16.1+ds+~0.10.5-1","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.16.2+ds+~0.10.5-3~bpo13+1","8.5.0+ds-1","8.6.0+ds-1","8.7.0+ds-1","8.8.0+ds-1","8.8.0+ds-2","8.8.0+ds-2+gcc15","8.8.0+ds-3","8.9.0+ds-1","8.9.0+ds-2","8.9.0+ds-3","8.9.0+ds-4","9.0.0+ds+~0.10.5-1","9.1.0+ds+~0.10.5-1","9.10.0+ds+~0.10.6-1","9.10.0+ds+~0.10.6-2","9.11.0+ds+~0.10.6-1","9.11.0+ds+~0.10.6-2","9.2.0+ds+~0.10.5-1","9.2.1+ds+~0.10.5-1","9.2.1+ds+~0.10.5-2","9.3.0+ds+~0.10.5-1","9.3.1+ds+~0.10.5-1","9.4.0+ds+~0.10.5-1","9.5.0+ds+~0.10.5-1","9.6.0+ds+~0.10.5-1","9.6.0+ds+~0.10.5-2","9.6.0+ds+~0.10.5-3","9.6.0+ds+~0.10.5-4","9.6.0+ds+~0.10.5-5","9.6.0+ds+~0.10.5-6","9.7.0+ds+~0.10.5-1","9.7.0+ds+~0.10.5-2","9.8.0+ds+~0.10.5-1","9.8.0+ds+~0.10.5-2","9.8.0+ds+~0.10.5-3","9.8.0+ds+~0.10.5-4","9.8.0+ds+~0.10.5-5","9.8.0+ds+~0.10.6-1","9.8.0+ds+~0.10.6-2","9.9.0+ds+~0.10.6-1"],"ecosystem_specific":{"urgency":"not yet assigned"},"database_specific":{"source":"https://storage.googleapis.com/debian-osv/debian-cve-osv/DEBIAN-CVE-2026-73249.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N"}]}