CVE-2026-27696

8.6 HIGH

📋 TL;DR

This SSRF vulnerability in changedetection.io allows authenticated users (or any user when no password is configured, which is the default) to make the server fetch internal network URLs. This enables data exfiltration from internal services by viewing the stored responses through the web UI. All instances running versions prior to 0.54.1 are affected.

💻 Affected Systems

Products:
  • changedetection.io
Versions: All versions prior to 0.54.1
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Default installation without password protection is vulnerable to unauthenticated exploitation.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete data exfiltration from internal services, including sensitive systems on private networks, potentially leading to full network compromise.

🟠

Likely Case

Unauthorized access to internal HTTP/HTTPS services, credential harvesting from internal APIs, and reconnaissance of internal network infrastructure.

🟢

If Mitigated

Limited impact if proper network segmentation and authentication are in place, but still allows internal service enumeration.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires adding a watch with internal URL; trivial for attackers with access to the web interface.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 0.54.1

Vendor Advisory: https://github.com/dgtlmoon/changedetection.io/security/advisories/GHSA-3c45-4pj5-ch7m

Restart Required: Yes

Instructions:

1. Stop changedetection.io service. 2. Update to version 0.54.1 via package manager or manual installation. 3. Restart the service.

🔧 Temporary Workarounds

Enable Authentication

all

Configure password protection to prevent unauthenticated access.

Set password via environment variable or configuration file

Network Segmentation

all

Restrict changedetection.io container/VM network access to only required external endpoints.

Configure firewall rules to block outbound connections to private IP ranges

🧯 If You Can't Patch

  • Implement strict network egress filtering to block connections to private IP ranges
  • Enable authentication with strong passwords and monitor for unauthorized access attempts

🔍 How to Verify

Check if Vulnerable:

Check if version is below 0.54.1 and test by attempting to add a watch for internal URL like http://127.0.0.1

Check Version:

docker exec changedetection python -c "import changedetection; print(changedetection.__version__)" or check web interface footer

Verify Fix Applied:

After updating to 0.54.1, attempt to add a watch for internal URL and verify it's rejected

📡 Detection & Monitoring

Log Indicators:

  • Failed URL validation logs
  • Watch creation for internal IP addresses
  • Unusual outbound HTTP requests from changedetection.io

Network Indicators:

  • Outbound HTTP requests from changedetection.io to private IP ranges
  • Unusual traffic patterns to internal services

SIEM Query:

source="changedetection.log" AND ("127.0.0.1" OR "192.168." OR "10." OR "172.16." OR "169.254.")

🔗 References

📤 Share & Export