{"id":"CVE-2022-0767","kind":"vulnerability","aliases":["CVE-2022-0767","GHSA-h65g-jfqg-2w6m"],"related":[],"title":"Server-Side Request Forgery in calibreweb","description":"calibreweb prior to version 0.6.17 is vulnerable to server-side request forgery (SSRF). This is a result of incomplete SSRF protection that can be bypassed via an HTTP redirect. An HTTP server set up to respond with a 302 redirect may redirect a request to `localhost`.","summary":"Calibre-Web before 0.6.17 has incomplete server-side request forgery protection that an attacker can bypass with an HTTP 302 redirect. The redirect can point the server at localhost, letting an attacker reach services only the server itself can see.","severity":"critical","cvss":9.9,"epss":0.00985,"exploited":false,"exploited_at":null,"products":[{"name":"calibreweb","fixed":["0.6.17"],"affected":"< 0.6.17","ecosystem":"pypi"},{"name":"janeczku calibre-web","fixed":["0.6.17"],"affected":"< 0.6.17","ecosystem":"vendor"}],"ecosystems":["pypi","vendor"],"tags":["calibreweb","cwe-918","package","python","self-hosted"],"not_affected_if":["fixed-version"],"how_to_check":"- Check the installed version with `pip show calibreweb` and compare it to `0.6.17`.\n- Look for `calibreweb` in `requirements.txt`, `pyproject.toml` or the Docker image tag.","fix":"- Upgrade the `calibreweb` package to `0.6.17` or later.","status":"open","published_at":"2022-03-07T07:15:07+00:00","first_seen_at":"2026-10-27T16:20:27+00:00","triaged_at":"2026-10-27T16:21:24+00:00","updated_at":"2026-10-27T16:33:07+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-27T16:21:24Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade the `calibreweb` package to `0.6.17` or later.","reach":"internet","title":"calibreweb: SSRF protection bypassed by HTTP redirect to localhost","impact":"medium","summary":"Calibre-Web before 0.6.17 has incomplete server-side request forgery protection that an attacker can bypass with an HTTP 302 redirect. The redirect can point the server at localhost, letting an attacker reach services only the server itself can see.","category":"package","nicknames":[],"who_cares":["calibreweb","python","self-hosted"],"confidence":0.7,"needs_auth":"unknown","worst_case":"Attacker reaches internal localhost services through the server","analyst_note":"","how_to_check":"- Check the installed version with `pip show calibreweb` and compare it to `0.6.17`.\n- Look for `calibreweb` in `requirements.txt`, `pyproject.toml` or the Docker image tag.","needs_analyst":false,"not_affected_if":["fixed-version"],"who_is_affected":"Any Calibre-Web instance below 0.6.17 that fetches remote URLs on behalf of users is in scope, since the SSRF is reachable through the server's outbound request path. Deployments that are pinned at 0.6.17 or newer, or that do not make outbound requests, are not affected. The sources do not say which features trigger the outbound request.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"critical"},"cost_usd":0.000594,"input_tokens":3356,"output_tokens":516,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-0767':10A,18A '-2022':9A,17A '-918':26B '0.6.17':36B,78C '2w6m':15A '302':53B,113C 'attack':47B,65B 'bypass':49B,99C 'calibr':33B 'calibre':22A 'calibre-web':21A,32B 'calibreweb':7A,19A,24B,74C 'cve':8A,16A 'cwe':25B 'forgeri':5A,43B,86C 'ghsa':12A 'ghsa-h65g-jfqg-2w6m':11A 'h65g':13A 'host':31B 'http':52B,102C,105C 'incomplet':38B,93C 'janeczku':20A 'jfqg':14A 'let':63B 'localhost':62B,120C 'may':115C 'packag':27B 'point':58B 'prior':75C 'protect':44B,95C 'python':28B 'reach':66B 'redirect':54B,56B,103C,114C,116C 'request':4A,42B,85C,118C 'respond':110C 'result':91C 'see':73B 'self':30B 'self-host':29B 'server':2A,40B,60B,70B,83C,106C 'server-sid':1A,39B,82C 'servic':67B 'set':107C 'side':3A,41B,84C 'ssrf':87C,94C 'version':77C 'via':100C 'vulner':80C 'web':23A,34B","nicknames":[],"mitigations":[],"who_affected":"Any Calibre-Web instance below 0.6.17 that fetches remote URLs on behalf of users is in scope, since the SSRF is reachable through the server's outbound request path. Deployments that are pinned at 0.6.17 or newer, or that do not make outbound requests, are not affected. The sources do not say which features trigger the outbound request.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2022-03-07T07:15:07+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:H","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-h65g-jfqg-2w6m","url":"https://github.com/advisories/GHSA-h65g-jfqg-2w6m","severity":"critical","published_at":"2022-03-08T00:00:31+00:00","modified_at":"2026-10-27T16:16:54+00:00","first_seen_at":"2026-10-27T16:20:27+00:00","fetched_at":"2026-10-27T16:20:27+00:00","note":null},{"source":"nvd","external_id":"CVE-2022-0767","url":"https://nvd.nist.gov/vuln/detail/CVE-2022-0767","severity":null,"published_at":"2022-03-07T07:15:07+00:00","modified_at":"2026-06-17T04:21:12+00:00","first_seen_at":"2026-10-27T16:33:07+00:00","fetched_at":"2026-10-27T16:33:07+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}