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. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →