Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain restricted external service credential
-
ExploitInvoke plugin-to-plugin delegation path
-
ExecutionAccess restriction not preserved in forwarded token
-
ImpactPerform unauthorized write on restricted plugin
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Least privilege enforcement
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the deployment to use @backstage/backend-defaults with external service credentials configured WITH access restrictions (e.g., accessRestrictions limiting a static/service token to a specific plugin or to action:read). The attacker must already possess such a restricted-but-valid service credential (hence PR:L) and must route the request through a plugin-to-plugin delegation path (getPluginRequestToken onBehalfOf), where the original permission-name or permission-attribute restrictions were not propagated into the forwarded plugin token. LIMITING FACTORS: no exploitation if access restrictions are not used; the bypass is scoped to plugins reachable via delegation; affected only in versions prior to 0.16.1 / 0.17.8. This is not an unauthenticated remote RCE - it is an authorization-boundary bypass for an already-trusted restricted principal. |
| Impact | This is a genuine but conditional privilege-escalation issue (CWE-269) rather than a drive-by remote compromise. The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L, base 7.6) is internally consistent with the description: network-reachable, low complexity, but requiring PR:L - the attacker must already hold a valid external service credential. The real risk driver is the integrity impact (I:H): a credential intended to be read-only can perform writes on plugins it was restricted from modifying. No EPSS score, CISA KEV entry, or public proof-of-concept was supplied in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation - the only public artifacts are the vendor patch commits and advisory, not weaponized code. Severity is 'High' by CVSS but real-world urgency is gated by a non-default precondition: the deployment must use @backstage/backend-defaults with external service credentials that have access restrictions configured. For environments that rely on those read-only restrictions as a security boundary this is a real priority; for environments that do not configure access restrictions at all, the practical exposure is limited. Note a version-labeling discrepancy worth verifying (see confidence_notes): the description cites fixes in 0.16.1/0.17.8 while the referenced release tags are v1.49.6/v1.54.6. |
| Exploit ScenarioDerived | An organization issues an external service a static token scoped to read-only access on the catalog plugin. The compromised or malicious holder of that restricted token calls a plugin-to-plugin delegation path (getPluginRequestToken onBehalfOf) so the request is re-issued without the original read-only restriction being preserved, allowing it to perform write operations it was never authorized for. No public exploit code was provided; only the vendor's fix commits are publicly available. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 06, 2026
Improper preservation of access restrictions in Backstage's @backstage/backend-defaults package lets an authenticated holder of a restricted external service credential (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L, rated 7.6) escalate privileges by routing requests through plugin-to-plugin delegation: the credential's permission-name or permission-attribute limits (for example action:read) are dropped when a plugin request token is minted on the credential's behalf, so a read-only principal can perform write operations on plugins it should only be able to read. Only deployments that both use @backstage/backend-defaults and configure external service credentials with accessRestrictions are exposed, and exploitation is scoped to plugins reachable through the delegation path. No public exploit code has been identified at time of analysis and there is no confirmed active exploitation (not in CISA KEV); fixed releases are @backstage/backend-defaults 0.16.1 and 0.17.8.
RemediationAI
Vendor-released patch: upgrade @backstage/backend-defaults to 0.16.1 or 0.17.8 (the matching Backstage framework releases are v1.49.6 and v1.54.6), applying the fix commits 40346245c53e1bf26dee56601e95c5c4ab9cc124 and bc80ffdafbc92ff7b8c72347eace13cb8688fd33 as documented in advisory GHSA-cq7v-rfgc-5c7v. Because the flaw only manifests when a restricted credential is forwarded through plugin-to-plugin delegation, pre-patch compensating controls are: audit every external service credential configured with accessRestrictions and either remove the permission-name/permission-attribute narrowing in favour of plugin-only restrictions that boundary stricter enforcement post-patch, or rotate and tightly scope those tokens so a bypassed restriction cannot reach write-capable plugin endpoints - the trade-off is reduced least-privilege granularity and possible breakage of plugins that legitimately rely on delegated read access. Where feasible, disable or limit the affected delegation flows by not passing restricted credentials into getPluginRequestToken(onBehalfOf: ...) and instead issuing per-plugin credentials, with the trade-off of additional token management overhead. Additionally, monitor backend logs and audit trails for read-restricted credentials appearing as the principal on write operations, and treat any such occurrence as a potential compromise requiring credential rotation. Reviewing the post-patch behaviour is important because permission-level restrictions will now throw NotAllowedError on delegation, which may surface as new errors in existing deployments that depended on the previous permissive behaviour.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 4 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 framework for building developer portals, and @backstage/backend-defaults supplies the default backend service implementations, including DefaultAuthService and the external service credential (static/service token) handling that underpins plugin-to-plugin authentication. Service credentials can carry accessRestrictions that list the plugins a token may reach and, optionally, permissionNames or permissionAttributes such as { action: 'read' } that further narrow what the token may do. The CWE-269 (Improper Privilege Management) root cause is that DefaultAuthService.getPluginRequestToken, when called with onBehalfOf for a service principal, issued the forwarded plugin token without propagating those permission-level restrictions, so the downstream plugin evaluated the delegated token as if the restriction did not exist. The upstream fix adds NotAllowedError checks in the 'service' case of the internal-forward handling: if the acting service principal has any accessRestrictions, a target plugin missing from the restriction map is rejected ('is not included in token's access restrictions'), and a target plugin whose restriction includes permissionNames or permissionAttributes is rejected as non-delegable ('is restricted and cannot be delegated'). Plugin-only restrictions (no permission names/attributes) continue to permit delegation to the listed plugins, and unrestricted credentials continue to delegate freely, which the accompanying authServiceFactory tests verify. CPE data confirms the impact surface as backstage/backstage together with the @backstage/backend-defaults package, prior to the fixed versions.
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:N/I:H/A:N
Attacker needs a valid restricted service credential (PR:L) reaching the backend over the network (AV:N/AC:L); impact is primarily unauthorized writes (I:H) with limited read/availability effect.
Primary rating from Vendor (GitHub_M).
CVSS VectorNVD
Lifecycle Timeline
4DescriptionNVD
Backstage is an open framework for building developer portals. Prior to 0.16.1 and 0.17.8, the @backstage/backend-defaults package is affected by improper preservation of access restrictions during service credential delegation. An external service credential configured with access restrictions (e.g., read-only) could bypass those restrictions by routing requests through plugin delegation paths. This could allow a restricted service to perform operations beyond its intended scope, including write operations on plugins it was restricted to read-only access for. This issue is fixed in versions 0.16.1 and 0.17.8.
Blast Radius
ecosystem impact- 111 npm packages depend on @backstage/backend-defaults (104 direct, 8 indirect)
Ecosystem-wide dependent count for version 0.17.8.
Technical POC Analysis
Advisory: GHSA-cq7v-rfgc-5c7v (published 2026-08-28 by freben).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A privilege-escalation flaw in Backstage's @backstage/backend-defaults package allows an authenticated holder of a restricted external service credential to bypass its configured access limits and perform write operations on plugins that credential was only meant to read. Organizations running internal developer portals on Backstage that have scoped external service credentials with accessRestrictions are affected, meaning platform engineering and software delivery teams could see unintended modifications to plugin-managed resources. The exposure is bounded by configuration and plugin reachability, but integrity impact is rated high, so leadership should prioritize remediation of affected deployments.
Apply vendor patch (fixed releases: @backstage/backend-defaults 0.16.1 and 0.17.8). Until upgrade is complete, restrict or rotate external service credentials that use accessRestrictions, reduce plugin-to-plugin delegation paths, and monitor audit logs for write operations originating from read-only principals.
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
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
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.
Path traversal in the Backstage Scaffolder Bitbucket pull-request publish actions allows an authenticated user who can e
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-94012
GHSA-cq7v-rfgc-5c7v
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB