Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege user
-
DeliverySend request to visual_selector_data endpoint
-
ExploitManipulate filename with traversal sequences
-
Executionstatic_content serves out-of-scope file
-
ImpactRead 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
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.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
3DescriptionCVE.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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
More in Changedetection Io
View allUnauthenticated attackers can coerce changedetection.io through 0.60.6 into fetching arbitrary internal network addresse
Server-side request forgery in changedetection.io's Add Watch preview endpoint (/add_watch_ui/snapshot) allows remote at
changedetection.io through 0.60.7 contains a timing side-channel in the check_authentication function of its Flask authe
Arbitrary local file disclosure in ChangeDetection.io versions before 0.54.7 allows authenticated attackers to read sens
Path traversal in changedetection.io 0.60.7 and earlier allows remote attackers to read limited files outside the intend
A timing side-channel in the password comparison routine (check_password in changedetectionio/flask_app.py) of dgtlmoon
Unrestricted brute-force against changedetection.io's /login endpoint allows a remote unauthenticated attacker to system
HTML markup injection in changedetection.io through 0.60.6 allows an attacker who controls the <title> of a page being m
Authentication bypass in changedetection.io's /settings endpoint silently disables REST API key enforcement when a privi
Stored cross-site scripting in changedetection.io up to and including 0.55.8 lets a malicious or compromised monitored w
Unauthenticated retrieval of the full OpenAPI schema is possible in changedetection.io because the /api/v1/full-spec end
EUVD-2026-84370
GHSA-49hp-jpc5-93cf
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB