Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister malicious OAuth client via dynamic registration endpoint
-
DeliveryCraft phishing OAuth authorization URL pointing to attacker-controlled redirect URI
-
ExploitVictim clicks link and completes authorization flow
-
ExecutionAuth backend issues code to attacker redirect URI (allowlist bypass)
-
PersistAttacker exchanges authorization code for access token
-
ImpactImpersonate victim in downstream services
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V3 - Web Frontend Security Redirect URL validation
MITRE ATT&CK
1 technique across 1 tactic: 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 three concurrent conditions: (1) the target Backstage instance must have explicitly enabled |
| Impact | The NVD-assigned CVSS 3.1 score of 4.7 (AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:N/A:N) accurately reflects the primary constraints: no authentication is required from the attacker (PR:N), but victim interaction is mandatory (UI:R) because an OAuth authorization code is only issued after a user actively approves the authorization request. The Scope:Changed metric captures that the authorization code crosses the trust boundary of the Backstage auth backend and is delivered to attacker infrastructure. Despite the network-accessible attack vector and no authentication prerequisite, real-world risk is substantially reduced by the deployment precondition: both affected features are experimental and disabled by default, and exploitation is impossible in default Backstage installations. Only deployments that have explicitly opted in and configured wildcard-hostname or protocol-less patterns are exposed. No EPSS score was provided in the available intelligence, and neither public exploit code nor CISA KEV listing has been identified, suggesting no confirmed active exploitation at time of analysis. The practical window of exploitation also depends on the attacker's ability to register a client - dynamic client registration implies some registration endpoint is accessible, but this is gated by the experimental feature enablement. The risk level is appropriately low-to-medium for affected deployments and negligible for default configurations. |
| Exploit ScenarioDerived | An attacker targeting a Backstage deployment with experimental dynamic client registration enabled submits a registration request for an OAuth client whose redirect URI is |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 13, 2026
OAuth authorization code theft in @backstage/plugin-auth-backend prior to 0.29.2 is possible when experimental dynamic client registration or CIMD features are enabled and configured with wildcard-hostname or protocol-less redirect URI allowlist patterns. Full-string glob matching allows a crafted attacker-controlled URI embedding a trusted hostname suffix in its path component to pass the allowlist, delivering authorization codes to the attacker after a victim completes an OAuth flow. No public exploit has been identified and this CVE does not appear in the CISA KEV catalog; real-world impact is sharply bounded by the experimental, disabled-by-default nature of the affected features.
RemediationAI
The primary fix is to upgrade @backstage/plugin-auth-backend to version 0.29.2, which corrects URL component parsing so that wildcards no longer match across host/path boundaries, rejects patterns lacking an explicit protocol as invalid configuration, and unconditionally blocks redirect URIs containing embedded credentials. The patch is implemented in commits 274acc51d22a7dd919cdda49d9086cf12c0b8711 and 6370e53bce8b227c63092300594ffde29c006886. Operators must note a behavior change introduced by the fix: the wildcard port pattern http://localhost:* now matches only the root path rather than all paths; use http://localhost:*/* to preserve the prior broad-path behavior, and audit all existing allowlist patterns before upgrading to avoid inadvertent breakage. For deployments unable to upgrade immediately, remove auth.experimentalDynamicClientRegistration and auth.experimentalClientIdMetadataDocuments from app-config entirely, reverting to the secure default disabled state - this eliminates all exposure with no functional impact on non-experimental auth flows. If the features must remain active, restrict all allowlist patterns to fully qualified URLs with an explicit https:// protocol and no wildcard in the hostname portion, using only fixed or loopback host values, as a compensating control. Details available at https://github.com/backstage/backstage/security/advisories/GHSA-38hq-7x33-php4.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 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
The vulnerability exists in the npm package @backstage/plugin-auth-backend (CPE: cpe:2.3:a:backstage:backstage:*:*:*:*:*:*:*:*), specifically within two experimental subsystems: dynamic OAuth client registration (auth.experimentalDynamicClientRegistration) and the client ID metadata document feature (auth.experimentalClientIdMetadataDocuments). Both use matcher.isMatch full-string glob evaluation against configured allowedRedirectUriPatterns and allowedClientIdPatterns. The root cause is CWE-601 (URL Redirection to Untrusted Site / Open Redirect): because matching is performed on the entire URL string rather than parsed URL components individually, a glob wildcard such as * can span across the host/path boundary separator /. A pattern intended to whitelist subdomains - e.g., https://*.example.com/callback - therefore also matches https://attacker.example/x.example.com/callback. Two compounding weaknesses are present: protocol-less patterns (e.g., *.example.com/callback) can match any URL scheme, including potentially dangerous ones, and redirect URIs containing embedded credentials (user:pass@host) are accepted after the credentials are stripped for matching, allowing the stripped URI to differ semantically from the one actually used.
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:N/UI:R/S:C/C:L/I:L/A:N
Network-reachable via open dynamic client registration (PR:N, AV:N); victim must actively complete OAuth flow (UI:R); authorization code crosses auth server trust boundary to attacker (S:C); only limited confidentiality loss, no integrity or availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorNVD
Lifecycle Timeline
2DescriptionNVD
Backstage is an open framework for building developer portals. Prior to 0.29.2, the experimental dynamic client registration and client ID metadata document features in the @backstage/plugin-auth-backend use full-string matcher.isMatch glob matching for auth.experimentalDynamicClientRegistration.allowedRedirectUriPatterns and the auth.experimentalClientIdMetadataDocuments allowedClientIdPatterns and allowedRedirectUriPatterns options. A hostname wildcard can match across URL component boundaries, allowing an attacker-controlled redirect URI with a trusted hostname suffix in its path to pass the allowlist and receive an OAuth authorization code after a victim completes the flow. Patterns without an explicit protocol can match unintended protocols, and redirect URIs containing embedded credentials are accepted after user information is stripped for matching. The features are experimental and disabled by default; only deployments that enable them and configure custom wildcard-hostname or protocol-less patterns are affected. This issue is first fixed in prerelease version 0.29.2.
Blast Radius
ecosystem impact- 3 npm packages depend on @backstage/plugin-auth-backend (3 direct, 0 indirect)
Ecosystem-wide dependent count for version 0.29.2.
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
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-58177
GHSA-38hq-7x33-php4
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB