CVE-2022-0990
📋 TL;DR
This CVE describes a Server-Side Request Forgery (SSRF) vulnerability in Calibre-Web, an open-source web application for managing eBook collections. The vulnerability allows attackers to make unauthorized requests from the server to internal network resources or external systems. All users running Calibre-Web versions prior to 0.6.18 are affected.
💻 Affected Systems
- Calibre-Web
📦 What is this software?
Calibre Web by Janeczku
⚠️ Risk & Real-World Impact
Worst Case
Attackers could access internal services, exfiltrate sensitive data, perform port scanning of internal networks, or chain with other vulnerabilities to achieve remote code execution.
Likely Case
Unauthorized access to internal HTTP services, metadata exposure from internal systems, or abuse of the server as a proxy for malicious requests.
If Mitigated
Limited impact with proper network segmentation, egress filtering, and input validation controls in place.
🎯 Exploit Status
Exploitation requires authentication to the Calibre-Web application. The vulnerability is well-documented in public bug bounty reports.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 0.6.18
Vendor Advisory: https://github.com/janeczku/calibre-web/commit/4545f4a20d9ff90b99bbd4e3e34b6de4441d6367
Restart Required: Yes
Instructions:
1. Backup your Calibre-Web database and configuration. 2. Stop the Calibre-Web service. 3. Update to version 0.6.18 or later using your package manager or by downloading from GitHub. 4. Restart the Calibre-Web service. 5. Verify the update was successful.
🔧 Temporary Workarounds
Network Segmentation
linuxRestrict outbound network access from the Calibre-Web server using firewall rules.
iptables -A OUTPUT -p tcp --dport 80 -j DROP
iptables -A OUTPUT -p tcp --dport 443 -j DROP
Input Validation
allImplement web application firewall rules to block SSRF patterns in URL parameters.
🧯 If You Can't Patch
- Implement strict network egress filtering to limit the server's outbound connections
- Deploy a reverse proxy with URL validation to intercept and sanitize requests
🔍 How to Verify
Check if Vulnerable:
Check the Calibre-Web version in the web interface or configuration files. If version is below 0.6.18, the system is vulnerable.
Check Version:
grep -i version /path/to/calibre-web/version.py || check web interface footer
Verify Fix Applied:
After updating, verify the version shows 0.6.18 or higher in the web interface or via the version check command.
📡 Detection & Monitoring
Log Indicators:
- Unusual outbound HTTP requests from the Calibre-Web server
- Requests to internal IP addresses or localhost from the application
Network Indicators:
- HTTP traffic from Calibre-Web server to unexpected destinations
- Port scanning activity originating from the server
SIEM Query:
source="calibre-web" AND (dest_ip=10.0.0.0/8 OR dest_ip=172.16.0.0/12 OR dest_ip=192.168.0.0/16 OR dest_ip=127.0.0.0/8)
🔗 References
- https://github.com/janeczku/calibre-web/commit/4545f4a20d9ff90b99bbd4e3e34b6de4441d6367
- https://huntr.dev/bounties/31649903-c19c-4dae-aee0-a04b095855c5
- https://github.com/janeczku/calibre-web/commit/4545f4a20d9ff90b99bbd4e3e34b6de4441d6367
- https://huntr.dev/bounties/31649903-c19c-4dae-aee0-a04b095855c5