Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessHold valid Access token for another team app
-
ExploitReach Backstage auth endpoint lacking upstream audience enforcement
-
ExecutionPass signature and team-issuer checks only
-
ImpactAuthenticate to Backstage as that identity
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication mechanism validation
MITRE ATT&CK
2 techniques across 2 tactics: Defense Evasion, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires ALL of: (1) the attacker possesses a valid Cloudflare Access JWT issued for a DIFFERENT Access application within the SAME Cloudflare Zero Trust team; (2) that token can reach the Backstage @backstage/plugin-auth-backend-module-cloudflare-access-provider auth endpoint on a request path where Cloudflare Access has NOT already enforced the Backstage application's own Audience (AUD) tag upstream; and (3) a vulnerable version (>=0.1.0 and <0.5.0) is in use. Limiting factors: Cloudflare Access normally evaluates the protected application and enforces audience before forwarding, so a properly fronted deployment is not exploitable; the attacker must already be an authenticated member of the shared Zero Trust team; and the fixed version makes the 'audience' config value mandatory so the AUD claim is checked. |
| Impact | This is a moderate, conditional authentication-bypass issue (CWE-287) rather than a top-tier priority. The provided CVSS 3.1 vector (AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N, 6.8 MEDIUM) is internally consistent with the description: network-reachable, but high attack complexity because success depends on a condition outside the attacker's direct control (the token reaching the Backstage auth endpoint without the Backstage application's audience already being enforced upstream by Cloudflare Access), and PR:L because the attacker must already hold a valid Cloudflare Access token for some other application in the same Zero Trust team. No EPSS score, KEV listing, or POC was supplied in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation - the risk is driven by the structural auth weakness, not by observed attack activity. The key mitigating reality, stated by the vendor, is that Cloudflare Access normally evaluates the protected application before forwarding requests, so in a correctly fronted deployment the bypass does not trigger; exposure is highest where the auth endpoint can be reached on a path that skips per-application audience enforcement. Net: treat as a prompt-but-not-emergency patch, weighted up for engineering orgs that run this provider and front Backstage with a shared Zero Trust team. |
| Exploit ScenarioDerived | An attacker who is a legitimate user of a different application within the same Cloudflare Zero Trust team obtains their own valid Access JWT. They submit that token to the Backstage auth endpoint on a path where Cloudflare Access has not already enforced the Backstage application's audience; affected versions (0.1.0-pre-0.5.0) validate only the token signature and team issuer, so authentication to Backstage succeeds. No public exploit code was identified in the provided data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 06, 2026
Insufficient audience validation in Backstage's Cloudflare Access auth provider package (@backstage/plugin-auth-backend-module-cloudflare-access-provider 0.1.0 through 0.4.x) lets a user who already holds a valid Cloudflare Access JWT issued for a different Access application inside the same Cloudflare Zero Trust team authenticate to Backstage, because the provider verifies the token signature and team issuer but never checks the token's audience (AUD) claim. Exploitation is conditional: the forged-context token must actually reach the Backstage auth endpoint on a path where Cloudflare Access has not already enforced the Backstage application's own AUD tag upstream, and the attacker must be an authenticated member of the shared Zero Trust team, which is why the assessed vector carries AC:H and PR:L and the resulting rating is a moderate, conditional authentication bypass rather than a top-tier priority. No public exploit code has been identified at time of analysis, and the issue is fixed in plugin version 0.5.0 (shipped with Backstage v1.55.0), where the 'audience' configuration value becomes mandatory.
RemediationAI
Upgrade @backstage/plugin-auth-backend-module-cloudflare-access-provider to version 0.5.0 or later, which is delivered with the Backstage v1.55.0 release (https://github.com/backstage/backstage/releases/tag/v1.55.0); the fix commit is https://github.com/backstage/backstage/commit/ed9034cacd9def3b3674f0a764fe992f751e204d and the advisory is https://github.com/backstage/backstage/security/advisories/GHSA-q333-f498-w2x7. Because 0.5.0 is a BREAKING change, the upgrade will fail at startup unless you first set auth.providers.cfaccess.audience to the Application Audience (AUD) tag of your Backstage application, which you can copy from the Cloudflare Zero Trust dashboard under Access controls > Applications by selecting the Backstage application and reading Additional settings; store it as a secret (for example ${AUTH_CFACCESS_AUDIENCE}) alongside the existing teamName value. If you cannot upgrade immediately, the effective compensating control is to guarantee that Cloudflare Access always evaluates the Backstage application itself before any request reaches the plugin's auth endpoint, so that a token minted for another application in the team is blocked upstream and never reaches the provider; concretely, keep the auth endpoint behind its Cloudflare Access application policy, do not expose the Backstage backend auth route on internal, direct-IP, or alternate hostname paths that bypass Cloudflare, and treat any such bypass path as equivalent to an unauthenticated exposure of the login flow. Note that this workaround depends entirely on correct edge configuration and offers no defense if the endpoint is reachable without Cloudflare Access in front of it, whereas the 0.5.0 upgrade enforces the AUD claim in the application layer and therefore remains the durable fix.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Backstage is an open-source developer-portal framework whose authentication providers are packaged as separate modules; one of them, @backstage/plugin-auth-backend-module-cloudflare-access-provider, integrates Backstage with Cloudflare Access (Cloudflare Zero Trust). Cloudflare Access issues short-lived JWTs to users it has authenticated for a specific protected application; those tokens carry a signature chainable to the team's signing keys, an issuer identifying the Zero Trust team, and an 'aud' claim containing the Application Audience (AUD) tag of the application the token was minted for. The vulnerable code path performed signature and team-issuer validation but omitted verification of the 'aud' claim, a root cause in the CWE-287 (Improper Authentication) class: the token was accepted as proof of identity without confirming that it was issued for the Backstage application specifically. The upstream fix (commit ed9034cacd9def3b3674f0a764fe992f751e204d) adds a required 'auth.providers.cfaccess.audience' configuration setting, threads it into the JWT verification options, and returns errors such as 'missing required "aud" claim' and 'unexpected "aud" claim value' when the claim is absent or belongs to another application; corresponding tests were added in helpers.test.ts. Because the change makes a previously optional configuration value mandatory and validated at startup (AuthHelper.fromConfig throws when audience is absent), it is documented as a BREAKING change for upgrading deployments. Affected CPEs include cpe:2.3:a:backstage:backstage:*:*:*:*:*:*:*:* and cpe:2.3:a:@backstage:plugin-auth-backend-module-cloudflare-access-provider:*:*:*:*:*:*:*:*, confirming that the component in scope is the Backstage auth-backend plugin rather than the Cloudflare Access product itself.
Know when Backstage 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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
AC:H because success needs upstream audience enforcement to be absent, PR:L because the attacker must already hold a valid same-team Access token; no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorNVD
Lifecycle Timeline
3DescriptionNVD
Backstage is an open framework for building developer portals. From 0.1.0 until 0.5.0, the @backstage/plugin-auth-backend-module-cloudflare-access-provider package is affected by insufficient audience validation in the cloudflare access auth provider. The Cloudflare Access auth provider verifies a token's signature and team issuer, but affected versions do not verify that the token was issued for the Backstage application. A user holding a valid token for another Access application in the same Cloudflare Zero Trust team may therefore be able to authenticate to Backstage if that token reaches the auth endpoint without the Backstage application's audience already being enforced upstream. Cloudflare Access normally evaluates the protected application before forwarding requests. This issue is fixed in version 0.5.0.
Technical POC Analysis
CWE-287 (Improper Authentication): the Cloudflare Access authenticator in @backstage/plugin-auth-backend-module-cloudflare-access-provider performs only two-thirds of the token validation Cloudflare'…
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
The Bitbucket pull-request Scaffolder actions in Backstage can be abused by an authenticated user with template-executio
Backstage is an open platform for building developer portals. Rated critical severity (CVSS 9.9), this vulnerability is
Authenticated Backstage users can retrieve the internal execution data of other users' Scaffolder tasks - notably the Se
Authenticated users who can register or modify a TechDocs documentation source can achieve code execution inside the Bac
Authenticated remote code execution in the @backstage/plugin-techdocs-node package shipped with the Backstage developer
Arbitrary code execution in Backstage TechDocs documentation builds allows an authenticated user with write access to a
Arbitrary Python code execution in Backstage's @backstage/plugin-techdocs-node (versions < 1.13.11 and = 1.14.0) lets a
Improper task-state validation in the @backstage/plugin-scaffolder-backend plugin (Backstage versions prior to 3.3.1, 3.
Arbitrary code execution on the TechDocs backend host is achievable through a sanitizer bypass in the @backstage/plugin-
Improper input validation in the @backstage/plugin-scaffolder-backend-module-sentry scaffolder actions (Backstage 0.3.0
@backstage/plugin-scaffolder-backend is the backend for the default Backstage software templates. Rated high severity (C
Authenticated users of Backstage Scaffolder can bypass administrator-configured action restrictions in @backstage/plugin
EUVD-2026-93990
GHSA-q333-f498-w2x7
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB