Skip to main content

changedetection.io EUVDEUVD-2026-84359

| CVE-2026-95270 LOW
Observable Timing Discrepancy (CWE-208)
2026-09-22 VulDB GHSA-58w2-g99m-pr4w
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 login
  2. Delivery
    Submit many timed password guesses
  3. Exploit
    Measure response-time discrepancy (CWE-208)
  4. Execution
    Statistically recover secret characters
  5. Impact
    Authenticate and access monitored data

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V6 - Authentication Timing attack prevention
Exploitation Conditions

Requires that the target changedetection.io instance (<=0.60.7) exposes its password-protected login/UI to the attacker and that the attacker can measure response timing precisely enough to distinguish correct from incorrect password-character prefixes. Practical limiting factors are severe: the CVSS AC:H and vendor's 'difficult' rating reflect that network jitter, TLS/reverse-proxy layers, and interpreter noise force enormous sample counts to extract signal; the app must have password protection enabled (a single shared password/secret) for there to be anything to leak; and only that secret's confidentiality is at risk (no integrity or availability impact). No user interaction and no prior authentication are needed (PR:N/UI:N).

Impact

This is a low-real-risk issue despite a moderate 6.3 CVSS 4.0 score. The vector (AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N) tells the true story: while network-reachable and requiring no authentication, the attack complexity is high (AC:H) and only confidentiality is marginally impacted (VC:L, with VI/VA:N). The flaw is a classic CWE-208 non-constant-time password comparison in check_password (flask_app.py). Remote timing side-channels are notoriously unreliable in practice - network jitter, TLS/proxy layers, and Python interpreter noise typically swamp the microsecond-level timing signal being measured, requiring huge numbers of averaged samples per guessed character. The vendor itself rates exploitability as 'difficult.' A public PoC exists (herantong/cve on GitHub), so exploitation status is 'publicly available exploit code exists' - but there is NO CISA KEV listing and NO EPSS score provided, so there is no evidence of active or widespread exploitation. Note the intelligence is single-sourced from VulDB with no independent NVD/vendor advisory, and the vendor was contacted but did not respond, meaning affected-version and fix data are unconfirmed. Bottom line: prioritize normal patch cadence, not emergency response; the theoretical remote-unauth nature is heavily offset by the high complexity and the fact that only a low-severity secret-leak is achievable.

Exploit ScenarioDerived

A remote unauthenticated attacker repeatedly submits candidate passwords/shared-secrets to the changedetection.io login and measures server response latency, using statistical averaging over many samples to detect the tiny timing difference between correct and incorrect leading characters, gradually reconstructing the secret. A public proof-of-concept exists demonstrating the timing discrepancy, but the CVSS AC:H rating and the vendor's own 'difficult' assessment reflect how hard reliable extraction is over a real network.

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

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

Alert me

AnalysisAIv1 – Sep 22, 2026

A timing side-channel in the password comparison routine (check_password in changedetectionio/flask_app.py) of dgtlmoon changedetection.io through version 0.60.7 allows remote, unauthenticated attackers to infer the shared application password character-by-character by measuring response-time differences. Exploitation is rated difficult (CVSS AC:H) and publicly available exploit code exists, though the practical signal is heavily degraded by network jitter, TLS/reverse-proxy overhead, and interpreter noise; only confidentiality of the single shared login secret is at risk, with no integrity or availability impact. No vendor patch has been identified at time of analysis, and the vendor did not respond to the disclosure.

RemediationAI

No vendor-released patch has been identified at time of analysis (vendor contacted early but did not respond), so remediation must be compensating. Most effective is to replace the non-constant-time comparison in changedetectionio/flask_app.py's check_password with a constant-time primitive such as Python's hmac.compare_digest (or secrets.compare_digest) applied to fixed-length hash digests - this eliminates the timing signal with negligible side effects and can be applied as a local source patch or upstream PR. If code changes are not possible, front the instance with a reverse proxy that enforces rate limiting and a fixed minimum response delay for authentication requests; the trade-off is added latency for legitimate logins and only partial masking of the leak. Restricting the login endpoint to trusted networks, VPN, or IP allowlists removes remote exploitability entirely but limits usability for external users. Disabling the built-in password and relying instead on an authenticating reverse proxy (basic/OIDC) eliminates the vulnerable comparison but shifts the security burden to that proxy's own constant-time behavior. Finally, avoid exposing changedetection.io directly to the internet, since network jitter and TLS layers already make exploitation difficult but not impossible, and monitor the VulDB advisory (https://vuldb.com/vuln/408338) for an eventual upstream fix.

Affected VersionsENISA

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

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 the Hash Comparison logic inside changedetectionio/flask_app.py, specifically the check_password function that validates the single shared application password used to protect the web UI. The root cause is CWE-208 (Observable Timing Discrepancy): the comparison path short-circuits or otherwise performs work proportional to the number of matching leading characters, so the server's response time varies subtly depending on how much of a supplied guess matches the stored secret. Because the password is compared as a hash/secret rather than with a constant-time primitive (e.g., hmac.compare_digest), an attacker who submits many candidate strings over the network can, in principle, statistically recover the secret. The vulnerable package is tracked under the broad CPE cpe:2.3:a:dgtlmoon:changedetection.io (all versions up to 0.60.7 per the description), reachable over HTTP/HTTPS wherever the deployment exposes its login-protected interface. The severe practical constraints - high sample counts needed, noise from TLS termination and reverse proxies, and the requirement that password protection actually be enabled - are what drive the CVSS AC:H rating and the vendor's 'difficult' exploitability assessment.

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

Network-reachable and unauthenticated (AV:N/PR:N/UI:N) but timing extraction over a network is unreliable (AC:H); only partial secret disclosure so C:L with 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 - 12:22 NVD
MEDIUM LOW
CVSS changed
Sep 22, 2026 - 12:22 NVD
6.3 (MEDIUM) 2.9 (LOW)
CVE Published
Sep 22, 2026 - 11:15 cve.org
MEDIUM 6.3

DescriptionCVE.org

A flaw has been found in dgtlmoon changedetection.io up to 0.60.7. The affected element is the function check_password of the file changedetectionio/flask_app.py of the component Hash Comparison. This manipulation of the argument Password causes observable timing discrepancy. The attack is possible to be carried out remotely. A high degree of complexity is needed for the attack. The exploitability is described as difficult. The exploit has been published and may be used. The vendor was contacted early about this disclosure but did not respond in any way.

Threat Intelligence Overview

EPSS Score
0.4%
Top 62% exploitable
Prevalence
Low
niche self-hosted open-source web-change-monitor, mostly homelab/prosumer footprint
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.4%
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

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +14
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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