<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://cve.radiocsirt.org/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-03T00:19:40.222241+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>csirt@opendfir.org</email>
  </author>
  <link href="https://cve.radiocsirt.org" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/cve-2026-29039</id>
    <title>CVE-2026-29039 — changedetection.io: XPath - Arbitrary File Read via unparsed-text()</title>
    <updated>2026-10-03T00:19:40.223958+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> dgtlmoon changedetection.io</p>
<p>changedetection.io is a free open source web page change detection tool. Prior to version 0.54.4, the changedetection.io application allows users to specify XPath expressions as content filters via the include_filters field. These XPath expressions are processed using the elementpath library which implements XPath 3.0/3.1 specification. XPath 3.0 includes the unparsed-text() function which can read arbitrary files from the filesystem. The application does not validate or sanitize XPath expressions to block dangerous functions, allowing an attacker to read any file accessible to the application process. This issue has been patched in version 0.54.4.</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/cve-2026-29039"/>
  </entry>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/ghsa-6fmw-82m7-jq6p</id>
    <title>GHSA-6fmw-82m7-jq6p — changedetection.io vulnerable to XPath - Arbitrary File Read via unparsed-text()</title>
    <updated>2026-10-03T00:19:40.224011+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: changedetection.io</p>
<p>### Summary
- The changedetection.io application allows users to specify XPath expressions as content filters via the include_filters field. These XPath expressions are processed using the elementpath library which implements XPath 3.0/3.1 specification.</p>
<p>- XPath 3.0 includes the unparsed-text() function which can read arbitrary files from the filesystem. The application does not validate or sanitize XPath expressions to block dangerous functions, allowing an attacker to read any file accessible to the application process.</p>
<p>### Data Flow</p>
<p>```
User Input (include_filters field)
    ↓
forms.py:ValidateCSSJSONXPATHInput() - Only validates syntax, NOT function safety
    ↓
Watch configuration stored in datastore
    ↓
Scheduled fetch triggers html_tools.py processing
    ↓
html_tools.py:xpath_filter() at line 213
    ↓
elementpath.select(root, xpath_expression, parser=XPath3Parser)
    ↓
XPath 3.0 unparsed-text('file:///etc/passwd') executed
    ↓
File contents returned as "filtered content"
    ↓
Stored as snapshot, viewable in UI</p>
<p>```</p>
<p>**Affected Code**
**File:** changedetectionio/html_tools.py
**Function:** xpath_filter()
**Lines:** 187-220</p>
<p>```
def xpath_filter(xpath_filter, html_content, append_pretty_line_formatting=False, is_rss=False):
    # ...
    from elementpath import XPath3Parser  # XPath 3.0 with dangerous functions
    # ...
    r = elementpath.select(root, xpath_filter.strip(), parser=XPath3Parser)  # Line 213</p>
<p>```</p>
<p>Validation (forms.py):</p>
<p>```
class ValidateCSS…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/ghsa-6fmw-82m7-jq6p"/>
  </entry>
</feed>
