Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed changedetection.io instance
-
DeliveryCraft filename param with traversal payload
-
ExploitBypass static_content path handling
-
ExecutionRead file outside screenshot directory
-
ImpactLimited information 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 network reachability to a changedetection.io instance version 0.60.7 or earlier exposing the Screenshot Handler / static_content route; no authentication is required per the vector (PR:N) and no user interaction (UI:N). Exploitation is meaningfully LIMITED by high attack complexity (AC:H) and a 'difficult' exploitability rating per VulDB - implying encoding, path-normalization, or scope constraints - and by the confidentiality-only, low-magnitude impact (VC:L), so successful attacks disclose limited files rather than sensitive secrets or achieve write/RCE. Many deployments sit behind a reverse proxy or optional password/authentication, which further reduces exposure of the vulnerable endpoint. |
| Impact | This is a moderate, not high-priority, issue despite the CWE-22 label. The CVSS 4.0 vector (AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N) and the 6.3 medium score are internally consistent with the narrative: the path traversal is remote and pre-authentication (PR:N) but explicitly rated high complexity, and VulDB describes exploitability as 'difficult.' Crucially, impact is confidentiality-only and rated LOW (VC:L, no integrity or availability), meaning this yields constrained file disclosure rather than full arbitrary file read leading to secrets/RCE. The SSVC/threat signal E:P ('Proof-of-Concept') aligns with the public GitHub exploit - so exploit code exists, but this is NOT the same as active exploitation. No EPSS score is provided and there is no CISA KEV listing, so there is no evidence of widespread or targeted in-the-wild use. Signals are consistent (no conflict): public POC + medium CVSS + high attack complexity + confidentiality-only impact = a real but low-urgency bug. Note the sole intelligence source is VulDB (vendor did not respond and there is no NVD/vendor advisory), so version boundaries and impact severity are single-sourced and should be independently verified against the changedetection.io codebase before treating as confirmed. |
| Exploit ScenarioDerived | A remote attacker who can reach a self-hosted changedetection.io instance (<=0.60.7) crafts a request to the Screenshot Handler's static_content endpoint with a manipulated 'filename' parameter containing traversal sequences to read files outside the intended screenshot directory. A public proof-of-concept exists (GitHub herantong/cve), but the CVSS high attack complexity and 'difficult' exploitability rating suggest non-trivial preconditions (e.g., encoding/normalization hurdles or limited readable scope), and impact is confined to low-sensitivity confidentiality disclosure. |
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 allows remote attackers to read limited files outside the intended screenshot directory by manipulating the filename argument in the Screenshot Handler's static_content route in changedetectionio/flask_app.py, with no authentication or user interaction required per the vector (PR:N/UI:N). Exploitation is meaningfully constrained by high attack complexity (AC:H) and a 'difficult' exploitability rating, and the impact is confidentiality-only and low (VC:L), so this is a moderate-priority issue rather than a critical one. Publicly available exploit code exists, but there is no CISA KEV confirmation of active exploitation, and the vendor was contacted early about the disclosure but did not respond.
RemediationAI
No vendor-released patch was identified at time of analysis, and the vendor reportedly did not respond to early notification, so remediation must currently rely on compensating controls rather than an upgrade; there is no confirmed fixed version number to cite. The highest-value mitigation is to reduce reachability of the vulnerable Screenshot Handler static_content route: restrict the changedetection.io instance to trusted networks (bind to loopback or an internal interface), or place it behind a reverse proxy that enforces authentication and only forwards the routes you actually need - the trade-off is that browsers and any API clients must then carry credentials, and unauthenticated integrations will break. If the screenshot/visual-diff feature is not required, disable or block that handler and its static content path entirely, accepting the loss of screenshot functionality as the cost. Additional hardening with fewer functional side effects includes running the service as an unprivileged, non-root user in a container with a read-only root filesystem and narrowly scoped volume mounts so that even successful traversal cannot reach host files or application data - the trade-off is that legitimate writes (data directory, temp files) must be explicitly carved out, and overly tight mounts can cause application errors. Organizations able to maintain a fork should add strict filename sanitization (reject or canonicalize traversal sequences, enforce a whitelist and resolve the final path against the screenshot base directory) in static_content as a stopgap, while tracking the VulDB advisory at https://vuldb.com/vuln/408340 and the public exploit reference at https://github.com/herantong/cve/blob/main/changedetection.io_path-traversal_CWE-22.md for a future upstream fix.
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 affected component is a Flask application: changedetection.io uses Flask (changedetectionio/flask_app.py) to serve UI and asset routes, and the static_content function in the Screenshot Handler builds a filesystem path from a user-controlled filename argument. Because the code does not adequately restrict the resulting pathname to the intended screenshot directory, the classic CWE-22 (Improper Limitation of a Pathname to a Restricted Directory, i.e. path traversal) condition arises; traversal sequences or encoding/normalization tricks in the filename parameter can escape the intended base directory. The assigned CVSS 4.0 vector (AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P) and our independent CVSS 3.1 assessment (AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N) both characterize a network-reachable, unauthenticated read-only information disclosure whose exploitation is difficult, suggesting defenders should expect path-normalization workarounds or constrained target selection rather than trivial wide-open reads. The provided CPE cpe:2.3:a:dgtlmoon:changedetection.io:*:*:*:*:*:*:*:* indicates the vendor's entire tracked changedetection.io product line is flagged as affected, with the reported version ceiling being 0.60.7.
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:H/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P
Remote unauthenticated endpoint (AV:N/PR:N/UI:N) but high complexity per 'difficult' rating (AC:H); traversal yields only limited file read so C:L, no integrity/availability impact.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
3DescriptionCVE.org
A vulnerability was found in dgtlmoon changedetection.io up to 0.60.7. This affects the function static_content of the file changedetectionio/flask_app.py of the component Screenshot Handler. Performing a manipulation of the argument filename results in path traversal. It is possible to initiate the attack remotely. The attack is considered to have high complexity. The exploitability is reported as difficult. The exploit has been made public and could be used. 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
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
Path traversal in changedetection.io 0.60.7 and earlier lets an authenticated low-privilege user read files outside the
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-84365
GHSA-5vgh-cvpf-vgqh
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB