Skip to main content

changedetection.io EUVDEUVD-2026-84365

| CVE-2026-95272 LOW
Path Traversal (CWE-22)
2026-09-22 VulDB GHSA-5vgh-cvpf-vgqh
2.9
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

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

  1. Access
    Reach exposed changedetection.io instance
  2. Delivery
    Craft filename param with traversal payload
  3. Exploit
    Bypass static_content path handling
  4. Execution
    Read file outside screenshot directory
  5. Impact
    Limited 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.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
No patch listed yet 0.7% 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 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

changedetection.io 0.60.5
changedetection.io 0.60.1
changedetection.io 0.60.4
changedetection.io 0.60.0
changedetection.io 0.60.7
changedetection.io 0.60.3
changedetection.io 0.60.2
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 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

Vendor (VulDB) PRIMARY 2.9 MEDIUM
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
vuln.today AI 3.7 LOW

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:H/AT:N/PR:N/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
High
Attack Requirements
None
Privileges Required
None
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
6.3 (MEDIUM) 2.9 (LOW)
CVE Published
Sep 22, 2026 - 12:15 cve.org
MEDIUM 6.3

DescriptionCVE.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

EPSS Score
0.7%
Top 50% exploitable
Prevalence
Medium
popular open-source self-hosted website change-monitoring tool, common among self-hosters
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.7%
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
Medium
Technical Impact
Partial

Priority Score

35
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +14
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-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-95273 LOW POC
2.1 Sep 22

Path traversal in changedetection.io 0.60.7 and earlier lets an authenticated low-privilege user read files outside the

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