Skip to main content

changedetection.io CVE-2026-95273

| EUVDEUVD-2026-84370 LOW
Path Traversal (CWE-22)
2026-09-22 VulDB GHSA-49hp-jpc5-93cf
2.1
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privilege user
  2. Delivery
    Send request to visual_selector_data endpoint
  3. Exploit
    Manipulate filename with traversal sequences
  4. Execution
    static_content serves out-of-scope file
  5. Impact
    Read sensitive files (info disclosure)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK

2 techniques across 2 tactics: Discovery, Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires a valid low-privilege authenticated session (PR:L) on a network-reachable changedetection.io instance at version 0.60.7 or earlier, plus the ability to reach the visual_selector_data / static_content endpoint. No user interaction is needed (UI:N). Exploitation is limited by the authentication requirement (not exploitable pre-auth) and by confidentiality-only impact (file read, no write/execution); actual value depends on what files the traversal can reach. No patched version is confirmed available since the vendor did not respond.

Impact

This is a genuine but modest-priority issue. The CVSS 4.0 base score of 5.3 (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N) describes a remotely reachable, low-complexity path traversal that requires low-privilege authentication (PR:L) and yields only limited confidentiality impact (VC:L) with no integrity or availability effect. The E:P (Proof-of-Concept) exploit maturity aligns with the reported publicly available exploit code (herantong GitHub POC), so exploitability is confirmed at the POC level but there is NO evidence of active exploitation - not listed in CISA KEV and no EPSS score was provided in the input. POC availability and active exploitation are distinct signals; only the former applies here. Two signals slightly elevate concern beyond the raw score: (1) this is an incomplete-fix sibling of CVE-2026-25527, which patched a different parameter (group) in the exact same static_content function, suggesting the fix surface was not fully hardened; and (2) the vendor was contacted but did not respond, so no patch is confirmed available. Conversely, the limited confidentiality-only impact and the requirement for an authenticated (PR:L) session keep real-world risk in the LOW-to-MEDIUM band. Data caveat: sourcing is VulDB-only with no independent NVD/vendor corroboration, and VC:L may understate impact if the traversal permits arbitrary file read (e.g., app secrets) rather than restricted file types - verify the actual read scope against the code.

Exploit ScenarioDerived

An authenticated low-privilege user of a changedetection.io instance sends a crafted request to the visual_selector_data endpoint with a manipulated filename argument containing path-traversal sequences, causing the static_content handler to serve a file outside the intended directory. A public proof-of-concept exists (herantong GitHub), lowering the barrier to reproduction. Because the CVSS vector is AV:N/AC:L, the request can be delivered remotely over the network with low complexity once the attacker holds any valid low-privilege account.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
No patch listed yet 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 22, 2026

Path traversal in changedetection.io 0.60.7 and earlier lets an authenticated low-privilege user read files outside the intended content directory by manipulating the filename argument handled by the static_content function in changedetectionio/flask_app.py (visual_selector_data component). Publicly available exploit code exists and the disclosure is documented by VulDB, but the maintainer did not respond, so no vendor-released patch has been confirmed; exploitation requires a valid low-privilege session (PR:L) and no user interaction. Impact is confidentiality-only - arbitrary file read with no file write, code execution, or availability effect - which keeps the CVSS 5.3 rating moderate and the value of the flaw dependent on which files the traversal can reach.

RemediationAI

No vendor-released patch identified at time of analysis - the maintainer was contacted early and did not respond, and no fixed version is referenced in the disclosure, so operators must rely on compensating controls. Until an upstream fix appears, the highest-value action is to avoid exposing changedetection.io instances to untrusted or non-administrative users, since exploitation requires a valid low-privilege session; if multi-user access is not essential, disable account registration and enforce single-admin access. Restrict network reachability of the web UI to trusted networks or a VPN/reverse proxy with authentication, which removes the remote attack surface at the cost of convenience for legitimate users. Add a reverse-proxy or WAF rule that rejects requests to the visual_selector_data/static_content endpoint containing path metacharacters (../, ..%2f, %2e%2e, absolute paths) - effective but brittle, since encodings can vary, and it may break the visual selector feature. Run the service in a container or under a dedicated unprivileged account with the filesystem mounted read-only and with no access to configuration, credential, or history datastore files, which limits what a successful traversal can read but does not eliminate the flaw. If you maintain a fork, apply the canonical containment fix in changedetectionio/flask_app.py: resolve the requested path with os.path.realpath, confirm it is prefixed by the expected realpath of the content directory via os.path.commonpath, and reject requests that escape that root. Monitor access logs for encoded traversal patterns against the visual selector endpoint as a detection backstop, and track the VulDB entry (https://vuldb.com/vuln/408341) for a future patched release before upgrading.

Affected VersionsENISA

changedetection.io 0.60.2
changedetection.io 0.60.1
changedetection.io 0.60.4
changedetection.io 0.60.7
changedetection.io 0.60.3
changedetection.io 0.60.0
changedetection.io 0.60.5
changedetection.io 0.60.6

Affected Packages

euvd changedetection_io no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The issue is a classic CWE-22 improper limitation of a pathname to a restricted directory. changedetection.io is a Flask-based web application (Python) that watches web pages for changes; its visual selector feature serves auxiliary static content through the static_content view in changedetectionio/flask_app.py. That view takes an attacker-controllable filename parameter from the request and resolves it against a content directory without normalizing the resulting path or verifying that it still resides within the expected root, so sequences such as ../ escape the intended directory and allow reads of arbitrary files readable by the application process. The affected component is visual_selector_data and the affected CPE is cpe:2.3:a:dgtlmoon:changedetection.io:*:*:*:*:*:*:*:* (versions up to and including 0.60.7). Note that this is a separate parameter from CVE-2026-25527, which addressed a different input (group) in the same function, meaning the earlier fix did not close this route. Because the endpoint sits behind the application's session handling, the CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N) and the independent CVSS 3.1 assessment (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N) both describe a network-reachable, authenticated, low-impact read primitive with no user interaction needed.

Know when Changedetection Io gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulDB) PRIMARY 2.1 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P
vuln.today AI 4.3 MEDIUM

Remote, low-complexity path traversal needing a low-privilege account (PR:L); confidentiality-only limited file read (C:L), no integrity or availability impact, consistent with vendor VC:L.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulDB).

CVSS VectorVendor: VulDB

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

3
Severity Changed
Sep 22, 2026 - 13:22 NVD
MEDIUM LOW
CVSS changed
Sep 22, 2026 - 13:22 NVD
5.3 (MEDIUM) 2.1 (LOW)
CVE Published
Sep 22, 2026 - 12:30 cve.org
MEDIUM 5.3

DescriptionCVE.org

A vulnerability was determined in dgtlmoon changedetection.io up to 0.60.7. This impacts the function static_content of the file changedetectionio/flask_app.py of the component visual_selector_data. Executing a manipulation of the argument filename can lead to path traversal. It is possible to launch the attack remotely. The exploit has been publicly disclosed and may be utilized. Distinct from CVE-2026-25527, which fixed a different parameter (group) in the same function. The vendor was contacted early about this disclosure but did not respond in any way.

Threat Intelligence Overview

EPSS Score
0.5%
Top 57% exploitable
Prevalence
Medium
popular self-hosted open-source website change-detection tool, common but not ubiquitous
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity LOW
CISA KEV No
Public POC Yes
EPSS 0.5%
Patch available No
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

31
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +10
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

CVE-2026-92815 HIGH POC
8.7 Sep 16

Unauthenticated attackers can coerce changedetection.io through 0.60.6 into fetching arbitrary internal network addresse

CVE-2026-95656 MEDIUM POC
5.5 Sep 22

Server-side request forgery in changedetection.io's Add Watch preview endpoint (/add_watch_ui/snapshot) allows remote at

CVE-2026-95271 MEDIUM POC
5.5 Sep 22

changedetection.io through 0.60.7 contains a timing side-channel in the check_authentication function of its Flask authe

CVE-2026-35000 HIGH
7.1 Apr 01

Arbitrary local file disclosure in ChangeDetection.io versions before 0.54.7 allows authenticated attackers to read sens

CVE-2026-95272 LOW POC
2.9 Sep 22

Path traversal in changedetection.io 0.60.7 and earlier allows remote attackers to read limited files outside the intend

CVE-2026-95270 LOW POC
2.9 Sep 22

A timing side-channel in the password comparison routine (check_password in changedetectionio/flask_app.py) of dgtlmoon

CVE-2026-71205 MEDIUM
6.5 Aug 05

Unrestricted brute-force against changedetection.io's /login endpoint allows a remote unauthenticated attacker to system

CVE-2026-92814 LOW POC
2.3 Sep 16

HTML markup injection in changedetection.io through 0.60.6 allows an attacker who controls the <title> of a page being m

CVE-2026-71204 MEDIUM
6.2 Aug 05

Authentication bypass in changedetection.io's /settings endpoint silently disables REST API key enforcement when a privi

CVE-2026-95657 LOW POC
2.0 Sep 22

Stored cross-site scripting in changedetection.io up to and including 0.55.8 lets a malicious or compromised monitored w

CVE-2026-71203 MEDIUM
5.3 Aug 05

Unauthenticated retrieval of the full OpenAPI schema is possible in changedetection.io because the /api/v1/full-spec end

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy