Skip to main content

Backstage plugin-auth-backend EUVDEUVD-2026-58177

| CVE-2026-73563 MEDIUM
URL Redirection to Untrusted Site (Open Redirect) (CWE-601)
2026-08-13 GitHub_M GHSA-38hq-7x33-php4
6.1
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Register malicious OAuth client via dynamic registration endpoint
  2. Delivery
    Craft phishing OAuth authorization URL pointing to attacker-controlled redirect URI
  3. Exploit
    Victim clicks link and completes authorization flow
  4. Execution
    Auth backend issues code to attacker redirect URI (allowlist bypass)
  5. Persist
    Attacker exchanges authorization code for access token
  6. Impact
    Impersonate 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 auth.experimentalDynamicClientRegistration or auth.experimentalClientIdMetadataDocuments in its app-config - both are disabled by default and absent from standard configurations; (2) the configured allowedRedirectUriPatterns or allowedClientIdPatterns must include at least one wildcard-hostname glob pattern (e.g., https://*.example.com/callback) or a protocol-less pattern - the default allowlist entries reference only fixed or loopback hosts and are not affected; (3) a victim user must be induced to click a crafted OAuth authorization link and complete the approval flow, delivering the authorization code to the attacker. Exploitation is impossible against any default Backstage deployment. The attacker requires no authentication or prior session (PR:N per CVSS), but victim social engineering is a hard requirement (UI:R). Platforms running only stable, non-experimental auth features are entirely unaffected regardless of version.

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 https://attacker.example/trusted.example.com/callback, which passes the configured https://*.example.com/callback allowlist pattern due to full-string glob matching. The attacker then delivers a crafted OAuth authorization link to a victim user; upon the victim completing the authorization flow, Backstage issues the authorization code to the attacker-controlled host, where it can be exchanged for an access token to impersonate the victim. No public exploit code has been identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

backstage < 0.29.2

Affected Packages

npm @backstage/plugin-auth-backend fix: 0.29.2
euvd backstage fix: 0.29.2

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

Vendor (GitHub_M) PRIMARY MEDIUM
NVD 6.1 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
vuln.today AI 4.7 MEDIUM

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.

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:N/SC:L/SI:N/SA:N
Red Hat 4.7 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

Lifecycle Timeline

2
CVSS changed
Oct 15, 2026 - 20:55 NVD
4.7 (MEDIUM) 6.1 (MEDIUM)
Patch available
Aug 13, 2026 - 20:19 EUVD

DescriptionNVD

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
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 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

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Medium
widely adopted open-source developer portal platform in enterprise engineering orgs
Data Quality
8 sources
Confidence: High
EUVD 🇯🇵JVN NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0
CVE-2026-106486 CRITICAL
9.9 Oct 06

The Bitbucket pull-request Scaffolder actions in Backstage can be abused by an authenticated user with template-executio

CVE-2023-35926 CRITICAL
9.9 Jun 22

Backstage is an open platform for building developer portals. Rated critical severity (CVSS 9.9), this vulnerability is

CVE-2026-106501 CRITICAL
9.6 Oct 06

Authenticated Backstage users can retrieve the internal execution data of other users' Scaffolder tasks - notably the Se

CVE-2026-88064 HIGH
8.8 Sep 16

Authenticated users who can register or modify a TechDocs documentation source can achieve code execution inside the Bac

CVE-2026-106558 HIGH
8.8 Oct 07

Authenticated remote code execution in the @backstage/plugin-techdocs-node package shipped with the Backstage developer

CVE-2026-106509 HIGH
8.8 Oct 06

Arbitrary code execution in Backstage TechDocs documentation builds allows an authenticated user with write access to a

CVE-2026-25153 HIGH
8.8 Jan 30

Arbitrary Python code execution in Backstage's @backstage/plugin-techdocs-node (versions < 1.13.11 and = 1.14.0) lets a

CVE-2026-106500 HIGH
8.5 Oct 06

Improper task-state validation in the @backstage/plugin-scaffolder-backend plugin (Backstage versions prior to 3.3.1, 3.

CVE-2026-106505 HIGH
8.5 Oct 06

Arbitrary code execution on the TechDocs backend host is achievable through a sanitizer bypass in the @backstage/plugin-

CVE-2026-106459 HIGH
8.5 Oct 06

Improper input validation in the @backstage/plugin-scaffolder-backend-module-sentry scaffolder actions (Backstage 0.3.0

CVE-2021-43783 HIGH
8.5 Nov 29

@backstage/plugin-scaffolder-backend is the backend for the default Backstage software templates. Rated high severity (C

CVE-2026-106503 HIGH
8.1 Oct 06

Authenticated users of Backstage Scaffolder can bypass administrator-configured action restrictions in @backstage/plugin

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy