VYPR
Critical severityNVD Advisory· Published Mar 7, 2022· Updated Aug 2, 2024

Server-Side Request Forgery (SSRF) in janeczku/calibre-web

CVE-2022-0766

Description

Server-Side Request Forgery (SSRF) in GitHub repository janeczku/calibre-web prior to 0.6.17.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

SSRF vulnerability in calibre-web's cover upload function allows attackers to make requests to internal networks.

Vulnerability

Server-Side Request Forgery (SSRF) vulnerability exists in the cover upload functionality of calibre-web versions prior to 0.6.17 [2]. The save_cover_from_url function in cps/cover.py does not properly validate redirects or block all localhost IP addresses, allowing an attacker to craft a URL that redirects to internal network resources [3].

Exploitation

An attacker with the ability to upload a book cover from a URL can provide a malicious URL that, when fetched by the server, redirects to an internal IP address (e.g., 127.0.0.1, 0.0.0.0, or IPv6 loopback). The server follows the redirect without checking the final destination, enabling requests to internal services [3][4].

Impact

Successful exploitation allows the attacker to perform SSRF attacks, potentially accessing internal services, reading sensitive data, or interacting with other systems on the internal network that are not intended to be exposed [2][4].

Mitigation

The vulnerability is fixed in calibre-web version 0.6.17 [2]. The fix, implemented in commit 965352c, disallows redirects on cover uploads and adds additional IP address checks (0.0.0.0 and ::) to the localhost blocklist [3]. Users should upgrade to 0.6.17 or later. No workaround is documented.

AI Insight generated on May 21, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
calibrewebPyPI
< 0.6.170.6.17

Affected products

2

Patches

1
965352c8d96c

Don't allow redirects on cover uploads, catch more addresses which resolve to localhost

https://github.com/janeczku/calibre-webOzzie IsaacsFeb 26, 2022via ghsa
1 file changed · +2 2
  • cps/helper.py+2 2 modified
    @@ -734,10 +734,10 @@ def save_cover_from_url(url, book_path):
             if not cli.allow_localhost:
                 # 127.0.x.x, localhost, [::1], [::ffff:7f00:1]
                 ip = socket.getaddrinfo(urlparse(url).hostname, 0)[0][4][0]
    -            if ip.startswith("127.") or ip.startswith('::ffff:7f') or ip == "::1":
    +            if ip.startswith("127.") or ip.startswith('::ffff:7f') or ip == "::1" or ip == "0.0.0.0" or ip == "::":
                     log.error("Localhost was accessed for cover upload")
                     return False, _("You are not allowed to access localhost for cover uploads")
    -        img = requests.get(url, timeout=(10, 200))      # ToDo: Error Handling
    +        img = requests.get(url, timeout=(10, 200), allow_redirects=False)      # ToDo: Error Handling
             img.raise_for_status()
             return save_cover(img, book_path)
         except (socket.gaierror,
    

Vulnerability mechanics

Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

4

News mentions

0

No linked articles in our index yet.