changedetection.io XXE Vulnerability
A vulnerability in changedetection.io versions 0.54.9 and earlier allows a remote attacker to perform XML External Entity (XXE) attacks, potentially exposing sensitive local files.
An XML External Entity (XXE) vulnerability exists in changedetection.io version 0.54.9 and earlier. The vulnerability resides within the xpath_filter() function in changedetectionio/html_tools.py:287. This function creates an XML parser without disabling external entity resolution, external DTD loading, or network-backed entity lookup. An attacker can exploit this by controlling a watched XML/RSS response body and using an XPath include filter. Successful exploitation allows the attacker to read arbitrary local files from the system running changedetection.io, potentially leading to information disclosure. This issue was reported on May 4, 2026 (GHSA-v7cp-2cx9-x793) and assigned CVE-2026-41895.
Attack Chain
- Attacker identifies a changedetection.io instance monitoring an XML/RSS feed.
- Attacker crafts a malicious XML/RSS response containing an external entity declaration referencing a local file (e.g.,
/etc/passwd). - Attacker ensures the watched URL returns the malicious XML/RSS content.
- The changedetection.io instance fetches the XML/RSS content from the monitored URL.
- The application’s stream detection identifies the content as XML/RSS.
- The XPath include filter is triggered, invoking the vulnerable
xpath_filter()function. etree.fromstring()parses the untrusted XML bytes, resolving the external entity and reading the referenced local file.- The contents of the local file are exposed in extracted watch output, diff history, or downstream notification channels.
Impact
Successful exploitation of this XXE vulnerability (CVE-2026-41895) can lead to the disclosure of sensitive local files on the server running changedetection.io. The impact includes potential exposure of configuration files, credentials, or other sensitive data, which could be leveraged for further attacks or unauthorized access. While the number of affected installations is unknown, any instance of changedetection.io version 0.54.9 or earlier that monitors attacker-controlled XML/RSS feeds using XPath filters is potentially vulnerable.
Recommendation
- Upgrade changedetection.io to a version beyond 0.54.9 to remediate the vulnerability.
- Apply the remediation steps suggested by the original report: Harden XML parser construction with
resolve_entities=False,load_dtd=False, andno_network=True. - Implement the Sigma rule
Detect Changedetection.io XXE Vulnerability Attemptto detect potential XXE attacks against changedetection.io instances by monitoring for suspicious XML parsing events. - Enable webserver logging to activate the rule above (logsource: category: webserver, product: linux).
Detection coverage 2
Detect Changedetection.io XXE Vulnerability Attempt
highDetects potential XXE attacks against changedetection.io instances by monitoring web server logs for requests containing XML documents with suspicious entity declarations.
Detect Changedetection.io XPath Filter Usage
infoDetects requests that may be triggering the XPath filter within changedetection.io.
Detection queries are kept inside the platform. Get full rules →