CVE-2026-35490: changedetection.io Vulnerable to Authentication Bypass via Decorator Ordering
(updated )
On 13 routes across 5 blueprint files, 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.
The developer correctly uses the decorator on 30+ other routes with the proper order, making this a classic consistency gap.
References
- github.com/advisories/GHSA-jmrh-xmgh-x9j4
- github.com/dgtlmoon/changedetection.io
- github.com/dgtlmoon/changedetection.io/commit/31a760c2147e3e73a403baf6d7de34dc50429c85
- github.com/dgtlmoon/changedetection.io/releases/tag/0.54.8
- github.com/dgtlmoon/changedetection.io/security/advisories/GHSA-jmrh-xmgh-x9j4
- nvd.nist.gov/vuln/detail/CVE-2026-35490
Code Behaviors & Features
Detect and mitigate CVE-2026-35490 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →