{"id":"CVE-2026-27824","aliases":["DEBIAN-CVE-2026-27824","EUVD-2026-9057","GHSA-vhxc-r7v8-2xrw","UBUNTU-CVE-2026-27824","openSUSE-SU-2026:10587-1"],"status":"published","title":"calibre has IP Ban Bypass via X-Forwarded-For Header Spoofing","description":"calibre is a cross-platform e-book manager for viewing, converting, editing, and cataloging e-books. Prior to version 9.4.0, the calibre Content Server's brute-force protection mechanism uses a ban key derived from both `remote_addr` and the `X-Forwarded-For` header. Since the `X-Forwarded-For` header is read directly from the HTTP request without any validation or trusted-proxy configuration, an attacker can bypass IP-based bans by simply changing or adding this header, rendering the brute-force protection completely ineffective. This is particularly dangerous for calibre servers exposed to the internet, where brute-force protection is the primary defense against credential stuffing and password guessing attacks. Version 9.4.0 contains a fix for the issue.","severity":{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00174,"percentile":0.06923,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-307","CWE-346"],"published":"2026-02-27T19:46:07Z","modified":"2026-10-28T02:30:57Z","fixes":[{"ecosystem":"Debian:12","package":"calibre","fixed_in":["6.13.0+repack-2+deb12u6"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"calibre","fixed_in":["8.5.0+ds-1+deb13u2"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"calibre","fixed_in":["9.4.0+ds+~0.10.5-1"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Debian:12","package":"calibre","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"6.13.0+repack-2+deb12u6"}]}],"versions":["6.13.0+repack-2","6.13.0+repack-2+deb12u1","6.13.0+repack-2+deb12u2","6.13.0+repack-2+deb12u3","6.13.0+repack-2+deb12u4","6.13.0+repack-2+deb12u5"]},{"source":"osv","ecosystem":"Debian:13","package":"calibre","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.5.0+ds-1+deb13u2"}]}],"versions":["8.5.0+ds-1","8.5.0+ds-1+deb13u1"]},{"source":"osv","ecosystem":"Debian:14","package":"calibre","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"9.4.0+ds+~0.10.5-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.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"]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"calibre","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"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"]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"calibre","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"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"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"calibre","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"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"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"calibre","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"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"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"calibre","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"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"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"calibre","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["7.26.0+ds-4build1","8.3.0+ds-1","8.4.0+ds-1","8.5.0+ds-1","8.6.0+ds-1","8.7.0+ds-1","8.8.0+ds-2","8.8.0+ds-3","8.8.0+ds-3build1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"calibre","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"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"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"calibre","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"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"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"calibre","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"9.7.0-1.1"}]}],"bundled":10}],"products":[{"vendor":"calibre-ebook","product":"calibre"},{"vendor":"kovidgoyal","product":"calibre"}],"references":[{"url":"https://github.com/kovidgoyal/calibre/security/advisories/GHSA-vhxc-r7v8-2xrw","tags":["x_refsource_CONFIRM","Exploit","Vendor Advisory","advisory","report"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/27xxx/CVE-2026-27824.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-27824","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-27824","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-27824","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-27824","tags":["report"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2026-25635","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-25636","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-25731","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-26064","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-26065","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-27810","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-27824","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-30853","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-33205","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-33206","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2026-27824","title":"calibre has IP Ban Bypass via X-Forwarded-For Header Spoofing","description":"calibre is a cross-platform e-book manager for viewing, converting, editing, and cataloging e-books. Prior to version 9.4.0, the calibre Content Server's brute-force protection mechanism uses a ban key derived from both `remote_addr` and the `X-Forwarded-For` header. Since the `X-Forwarded-For` header is read directly from the HTTP request without any validation or trusted-proxy configuration, an attacker can bypass IP-based bans by simply changing or adding this header, rendering the brute-force protection completely ineffective. This is particularly dangerous for calibre servers exposed to the internet, where brute-force protection is the primary defense against credential stuffing and password guessing attacks. Version 9.4.0 contains a fix for the issue.","status":"published","published":"2026-02-27T19:46:07.612Z","modified":"2026-03-02T12:54:32.182Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-307","CWE-346"],"updated_at":"2026-11-02T14:19:49.199185Z"}],"euvd":[{"id":"EUVD-2026-9057","description":"calibre is a cross-platform e-book manager for viewing, converting, editing, and cataloging e-books. Prior to version 9.4.0, the calibre Content Server's brute-force protection mechanism uses a ban key derived from both `remote_addr` and the `X-Forwarded-For` header. Since the `X-Forwarded-For` header is read directly from the HTTP request without any validation or trusted-proxy configuration, an attacker can bypass IP-based bans by simply changing or adding this header, rendering the brute-force protection completely ineffective. This is particularly dangerous for calibre servers exposed to the internet, where brute-force protection is the primary defense against credential stuffing and password guessing attacks. Version 9.4.0 contains a fix for the issue.","status":"published","published":"2026-02-27T19:46:07Z","modified":"2026-03-02T12:54:32Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T19:48:13.147525Z"}],"nvd":[{"id":"CVE-2026-27824","description":"calibre is a cross-platform e-book manager for viewing, converting, editing, and cataloging e-books. Prior to version 9.4.0, the calibre Content Server's brute-force protection mechanism uses a ban key derived from both `remote_addr` and the `X-Forwarded-For` header. Since the `X-Forwarded-For` header is read directly from the HTTP request without any validation or trusted-proxy configuration, an attacker can bypass IP-based bans by simply changing or adding this header, rendering the brute-force protection completely ineffective. This is particularly dangerous for calibre servers exposed to the internet, where brute-force protection is the primary defense against credential stuffing and password guessing attacks. Version 9.4.0 contains a fix for the issue.","status":"published","published":"2026-02-27T20:21:39.973Z","modified":"2026-06-17T10:27:44.763Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"secondary"},{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"primary"}],"cwes":["CWE-307","CWE-346"],"updated_at":"2026-11-02T14:12:07.420927Z"}],"osv":[{"id":"CVE-2026-27824","title":"calibre has IP Ban Bypass via X-Forwarded-For Header Spoofing","description":"calibre is a cross-platform e-book manager for viewing, converting, editing, and cataloging e-books. Prior to version 9.4.0, the calibre Content Server's brute-force protection mechanism uses a ban key derived from both `remote_addr` and the `X-Forwarded-For` header. Since the `X-Forwarded-For` header is read directly from the HTTP request without any validation or trusted-proxy configuration, an attacker can bypass IP-based bans by simply changing or adding this header, rendering the brute-force protection completely ineffective. This is particularly dangerous for calibre servers exposed to the internet, where brute-force protection is the primary defense against credential stuffing and password guessing attacks. Version 9.4.0 contains a fix for the issue.","status":"published","published":"2026-02-27T19:46:07.612Z","modified":"2026-10-28T02:30:57.400289087Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"cwes":["CWE-307","CWE-346"],"updated_at":"2026-11-02T15:45:00.180685Z"},{"id":"DEBIAN-CVE-2026-27824","description":"calibre is a cross-platform e-book manager for viewing, converting, editing, and cataloging e-books. Prior to version 9.4.0, the calibre Content Server's brute-force protection mechanism uses a ban key derived from both `remote_addr` and the `X-Forwarded-For` header. Since the `X-Forwarded-For` header is read directly from the HTTP request without any validation or trusted-proxy configuration, an attacker can bypass IP-based bans by simply changing or adding this header, rendering the brute-force protection completely ineffective. This is particularly dangerous for calibre servers exposed to the internet, where brute-force protection is the primary defense against credential stuffing and password guessing attacks. Version 9.4.0 contains a fix for the issue.","status":"published","published":"2026-02-27T20:21:39.973Z","modified":"2026-10-01T03:03:07.850558262Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T15:45:53.877573Z"},{"id":"UBUNTU-CVE-2026-27824","description":"calibre is a cross-platform e-book manager for viewing, converting, editing, and cataloging e-books. Prior to version 9.4.0, the calibre Content Server's brute-force protection mechanism uses a ban key derived from both `remote_addr` and the `X-Forwarded-For` header. Since the `X-Forwarded-For` header is read directly from the HTTP request without any validation or trusted-proxy configuration, an attacker can bypass IP-based bans by simply changing or adding this header, rendering the brute-force protection completely ineffective. This is particularly dangerous for calibre servers exposed to the internet, where brute-force protection is the primary defense against credential stuffing and password guessing attacks. Version 9.4.0 contains a fix for the issue.","status":"published","published":"2026-02-27T20:21:00Z","modified":"2026-10-17T12:58:07.6179924Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium"},{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T16:56:08.726452Z"},{"id":"openSUSE-SU-2026:10587-1","title":"calibre-9.7.0-1.1 on GA media","description":"These are all security issues fixed in the calibre-9.7.0-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-04-21T00:00:00Z","modified":"2026-04-22T08:17:17.617311Z","updated_at":"2026-11-02T16:58:38.415593Z"}]}}
