Description
changedetection.io is a free open source web page change detection tool. Prior to 0.54.8, the @login_optionally_required decorator is placed before (outer to) @blueprint.route() instead of after it. In Flask, @route() must be the outermost decorator because it registers the function it receives. When the order is reversed, @route() registers the original undecorated function, and the auth wrapper is never in the call chain. This silently disables authentication on these routes. This vulnerability is fixed in 0.54.8.
Published: 2026-04-07
Score: 9.8 Critical
EPSS: < 1% Very Low
KEV: No
Impact: Authentication Bypass
Action: Patch Now
AI Analysis

Impact

A flaw in changedetection.io occurs when the login decorator is incorrectly ordered relative to the route registration. Because the authentication wrapper is placed inside the route decorator, Flask registers the original view without any authentication checks. The result is that protected routes can be accessed without credentials, allowing an attacker to obtain the full functionality of the application and any data it exposes. Based on the description, the likely attack vector is an unauthenticated HTTP request to a URL that should be protected. The vulnerability is limited to deployments that use a version older than 0.54.8; all earlier releases contain the decorator ordering bug. The CVSS score of 9.8 represents critical severity, while the EPSS score of less than 1% suggests that automated exploitation is unlikely at present. The vulnerability has not yet appeared in CISA’s KEV catalog. An attacker who discovers the fault can simply send a request to a previously protected endpoint and gain immediate access without providing any authentication. The most effective defense is to upgrade to 0.54.8 or later.

Affected Systems

Affected systems include installations of changedetection.io version 0.54.7 and earlier, which are maintained by dgtlmoon. These versions precede the fix introduced in 0.54.8. The vulnerability is not present in newer releases.

Risk and Exploitability

The CVSS score of 9.8 indicates critical severity. The EPSS score of less than 1% indicates low probability of automated exploitation at present. The vulnerability is not listed in KEV. Because the bypass removes authentication, a simple unauthenticated HTTP request to protected endpoint can trigger the exploitation. Attackers may gain full application access and data. The attack vector is likely remote via web request.

Generated by OpenCVE AI on April 14, 2026 at 22:37 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update to version 0.54.8 or later
  • If immediate update is not feasible, configure the web server or reverse proxy to require authentication for the application’s endpoints
  • Monitor access logs for unauthorized requests to protected routes

Generated by OpenCVE AI on April 14, 2026 at 22:37 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-jmrh-xmgh-x9j4 changedetection.io Vulnerable to Authentication Bypass via Decorator Ordering
History

Tue, 14 Apr 2026 20:30:00 +0000

Type Values Removed Values Added
First Time appeared Webtechnologies
Webtechnologies changedetection
CPEs cpe:2.3:a:webtechnologies:changedetection:*:*:*:*:*:*:*:*
Vendors & Products Webtechnologies
Webtechnologies changedetection

Thu, 09 Apr 2026 15:15:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Wed, 08 Apr 2026 20:15:00 +0000

Type Values Removed Values Added
First Time appeared Dgtlmoon
Dgtlmoon changedetection.io
Vendors & Products Dgtlmoon
Dgtlmoon changedetection.io

Tue, 07 Apr 2026 18:00:00 +0000

Type Values Removed Values Added
Description changedetection.io is a free open source web page change detection tool. Prior to 0.54.8, the @login_optionally_required decorator is placed before (outer to) @blueprint.route() instead of after it. In Flask, @route() must be the outermost decorator because it registers the function it receives. When the order is reversed, @route() registers the original undecorated function, and the auth wrapper is never in the call chain. This silently disables authentication on these routes. This vulnerability is fixed in 0.54.8.
Title changedetection.io has an Authentication Bypass via Decorator Ordering
Weaknesses CWE-863
References
Metrics cvssV3_1

{'score': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'}


Subscriptions

Dgtlmoon Changedetection.io
Webtechnologies Changedetection
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-04-09T14:37:01.267Z

Reserved: 2026-04-02T20:49:44.454Z

Link: CVE-2026-35490

cve-icon Vulnrichment

Updated: 2026-04-09T14:36:52.416Z

cve-icon NVD

Status : Analyzed

Published: 2026-04-07T16:16:27.317

Modified: 2026-04-14T20:27:38.793

Link: CVE-2026-35490

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-04-15T16:30:09Z

Weaknesses