Raw vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HCVSS and EPSS are reproduced from their sources (NVD, FIRST EPSS). EPSS scores by FIRST (EPSS SIG), generated by Empirical Security. Risk Priority is our own derived reading, not an NVD score.
Summary
CVE-2026-35490 is a critical-severity Incorrect Authorization (CWE-863) vulnerability in Webtechnologies Changedetection. Its CVSS base score is 9.8 (Critical).
Operationally, ranked in the top 50% of CVEs by exploit likelihood; it is not currently listed in the CISA KEV catalog; a public proof-of-concept is referenced.
The strongest mitigations our analysis identified map to AC-24 (Access Control Decisions) and AC-25 (Reference Monitor) — see the control section below for these in your framework.
Deeper analysis AI-assisted summary
Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.
CVE-2026-35490 affects changedetection.io, a free open source web page change detection tool, in versions prior to 0.54.8. The vulnerability arises from incorrect decorator ordering in its Flask-based implementation: the @login_optionally_required decorator is placed before (outer to) @blueprint.route() instead of after it. In Flask, @route() must be the outermost decorator as it registers the function it receives; when reversed, @route() registers the original undecorated function, and the authentication wrapper is never invoked. This silently disables authentication on affected routes and is classified as CWE-863 (Incorrect Authorization), with a CVSS v3.1 base score of 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H).
Any remote attacker can exploit this vulnerability over the network with low complexity, no privileges, and no user interaction required. By accessing the affected routes directly, attackers bypass authentication entirely, gaining unauthorized access to functionality that should be protected, which can result in high impacts to confidentiality, integrity, and availability depending on the routes' privileges.
The GitHub security advisory (GHSA-jmrh-xmgh-x9j4) states that the issue is fixed in changedetection.io version 0.54.8 by correcting the decorator order to ensure the authentication wrapper is properly included in the call chain. Security practitioners should upgrade to this version or later to mitigate the vulnerability.
OWASP Top 10 for Web (2025)
EU & UK References
- 🇪🇺 ENISA EUVD: EUVD-2026-19675
Vulnerability Data
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…
more
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.
- CWE(s)
Related Threats
CVEs Like This One
Affected Assets
Mitigating Controls
Mitigating Controls (NIST 800-53 r5) AI
AC-3 directly requires correct enforcement of authorization decisions on every access request, structurally preventing incorrect checks.
AC-24 ensures access-control decisions are made and applied consistently, reducing the chance of an incorrect authorization result.
A reference monitor that is always invoked and tamper-proof forces every authorization decision through a verified, correct path.
Least-privilege assignments shrink the set of authorizations that must be checked correctly, limiting exposure to flawed checks.
Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI
Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.
A.5.18's provisioning, revocation, review and adjustment of access rights (incl. before role changes/termination, with segregation and owner approval) directly stops incorrect authorization decisions from being exploitable in the vast majority of cases; the bounded remainder is incorrectness inside the authorization logic itself (e.g. flawed conditional or missing check) rather than rights that were wrongly granted.
A.8.3 directly mandates restricting access to information per policies via configuration, identity/group controls, isolation, and dynamic techniques that enforce correct authorization decisions, addressing most but not all slices of CWE-863 (e.g., remainder in non-access-decision authorization errors like timing or environmental factors).
Requiring consistency between access rights and classification plus formal approval steps ensures that the authorization logic correctly distinguishes between entities that should and should not be granted access.
Hardening callouts derived
DISA STIG baselines are authored against specific weaknesses. Where this CVE cites a broad weakness class, the mapping is not asserted at that abstraction (owner ruling, 2026-09-25: grade only at Base and below), so no rule is shown here rather than a rule shown against the wrong grain.
- No fine-grained STIG row for CWE-863, a class-level weakness, and none of its children carries one either.