Skip to main content

Backstage Kubernetes Backend CVE-2026-106487

| EUVDEUVD-2026-94005 MEDIUM
Unintended Proxy or Intermediary ('Confused Deputy') (CWE-441)
2026-10-06 GitHub_M GHSA-h53x-hjx6-25gr
5.0
CVSS 3.1 · NVD
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as catalog contributor
  2. Delivery
    Create malicious kubernetes-cluster entity with serviceAccount auth
  3. Exploit
    Backend resolves cluster via catalog discovery
  4. Execution
    Backend uses in-cluster identity
  5. Impact
    Read Kubernetes resources visible to that identity

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service Proxy/intermediary controls
Exploitation Conditions

Exploitation requires ALL of the following, drawn directly from the advisory description: (1) the deployment must use catalog cluster discovery (the CatalogClusterLocator), a non-default cluster-sourcing mode; (2) the attacker must be a catalog contributor able to create or modify kubernetes-cluster Resource entities, matching PR:L; (3) the required endpoint permissions must be granted; and (4) the backend pod must have RBAC allowing its in-cluster service account to read the targeted Kubernetes resources - the disclosure is bounded by exactly what that service account can already read. Limiting factors: the credential is only ever used against the local in-cluster API endpoint and is never sent to the catalog-supplied endpoint, authentication as a catalog contributor is mandatory, and the multiple stacked preconditions (AC:H) make opportunistic or automated exploitation unlikely.

Impact

This is a genuinely low-priority, low-real-risk issue despite being network-reachable. The supplied CVSS 3.1 vector (AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:N/A:N) scores only 3.5 (Low), and every signal reinforces that: AC:H and PR:L mean the attacker must already be an authenticated catalog contributor AND several environmental preconditions must line up, while impact is limited to C:L with no integrity or availability effect. No EPSS score, no CISA KEV listing, and no public exploit were provided in the intelligence, so exploitation status is 'no public exploit identified at time of analysis' - there is no evidence of active or automated exploitation. The flaw is a classic confused-deputy pattern (CWE-441): a catalog-supplied kubernetes-cluster entity requesting the unsupported serviceAccount auth provider caused the backend to fall back to its own in-cluster identity, so a malicious catalog entry could read cluster resources that the backend's service account can see. Note the official vector does not conflict with the description; both point to a config/authorization-dependent, insider-leaning weakness rather than a mass-exploitable remote bug. The strongest limiting factors (catalog write access, specific endpoint permissions, pod RBAC, and the non-default catalog cluster discovery mode) are exactly why real-world risk is far below what 'network vector' alone might suggest.

Exploit ScenarioDerived

A user who can author or edit catalog entities adds or modifies a kubernetes-cluster Resource entity declaring the serviceAccount auth provider; a deployment using catalog cluster discovery then has the backend connect to that cluster using its own in-cluster service account identity, returning Kubernetes resources readable by that identity back to the actor. No public exploit code is known, and AC:H/PR:L means the attacker needs existing catalog-contributor access plus matching endpoint permissions and pod RBAC for the disclosure to occur.

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 – Oct 06, 2026

Information disclosure in the Backstage Kubernetes backend plugin (@backstage/plugin-kubernetes-backend) before 0.21.10 allows an authenticated catalog contributor who can create or modify kubernetes-cluster Resource entities to steer cluster discovery into an unsupported authentication mode, causing the backend to answer Kubernetes API requests using its own local in-cluster service-account identity rather than a catalog-supplied credential. The disclosure is bounded strictly by what that pod service account is already permitted to read via RBAC, and the leaked credential is used only against the local in-cluster API endpoint and is never transmitted to the catalog-supplied endpoint; exploitation requires a non-default catalog cluster discovery deployment, the relevant endpoint permissions, and over-privileged pod RBAC, which is why the assessed severity is low. No public exploit code or confirmed active exploitation was identified at time of analysis, and the issue is fixed in 0.21.10 (shipped in the Backstage release v1.54.6).

RemediationAI

Upgrade @backstage/plugin-kubernetes-backend to 0.21.10 or later; the fix is shipped in the Backstage release v1.54.6 (https://github.com/backstage/backstage/releases/tag/v1.54.6), and the advisory GHSA-h53x-hjx6-25gr with the code change at commit c14f8be6908f0f719b16356e5492352311e28946 documents the exact fix. Before upgrading, audit the catalog for kubernetes-cluster Resource entities that declare authProvider 'serviceAccount': because the patched code throws an error instead of warning and skipping, a single such entity will now cause the entire catalog-based cluster retrieval to fail, so those entities must be removed or converted to a supported authentication profile (for example a configured service-account or OIDC-based profile) or cluster discovery will break after the upgrade. If upgrading is not immediately possible, compensating controls with their trade-offs are: remove catalog write permission for creating or editing kubernetes-cluster Resource entities so only trusted maintainers can define clusters (this closes the attack path but pushes cluster onboarding into a manual review process); switch from catalog cluster discovery to a statically configured KubernetesClustersSupplier in app-config (this eliminates the untrusted input path entirely but requires clusters to be declared as configuration rather than as catalog entities and loses self-service onboarding); and tighten the backend pod's Kubernetes RBAC so its in-cluster service account can read only the namespaces and resource types genuinely required (this does not fix the flaw but caps the blast radius, at the cost of possibly breaking legitimate cluster views for entities that relied on the broader permissions).

Affected VersionsENISA

backstage < 1.54.6
plugin-kubernetes-backend < 0.21.10

Affected Packages

npm @backstage/plugin-kubernetes-backend fix: 0.21.10
euvd backstage fix: 1.54.6
euvd plugin_kubernetes_backend fix: 0.21.10

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 framework for building developer portals, and the affected component is the @backstage/plugin-kubernetes-backend package, which supplies cluster inventory to the Kubernetes frontend plugin through a KubernetesClustersSupplier. One supplier implementation, CatalogClusterLocator, derives clusters from annotation data on kubernetes-cluster Resource entities stored in the Backstage software catalog. The catalog schema permits an authProvider field on those entities, and although the catalog cluster locator does not support the 'serviceAccount' provider, the affected versions did not enforce that constraint, so an entity declaring an unsupported authentication mode could be processed by the backend and satisfied with the pod's own in-cluster service account. This is the classic confused-deputy pattern described by CWE-441 (Unintended Proxy or Intermediary): the backend acts with its own ambient authority on behalf of a caller that should not have that authority. The fix in commit c14f8be6908f0f719b16356e5492352311e28946 replaces the previous non-fatal warn-and-skip handling with a thrown error, so any catalog cluster whose authProvider is 'serviceAccount' now causes cluster retrieval to fail rather than silently proceeding, and the accompanying test was rewritten from 'ignores serviceAccount auth provider clusters' to 'rejects all catalog clusters when one uses service account authentication'. The CPE data covers both the backstage umbrella product and the specific @backstage/plugin-kubernetes-backend package.

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 LOW
NVD 5.0 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N
vuln.today AI 3.5 LOW

Catalog contributor access gives PR:L; multiple stacked preconditions (discovery mode, endpoint perms, pod RBAC) justify AC:H; disclosure of in-cluster resources is C:L with S:C, no I/A impact.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorNVD

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

Lifecycle Timeline

3
Severity Changed
Oct 22, 2026 - 19:23 NVD
LOW MEDIUM
CVSS changed
Oct 22, 2026 - 19:23 NVD
3.5 (LOW) 5.0 (MEDIUM)
Patch available
Oct 06, 2026 - 22:20 EUVD

DescriptionNVD

Backstage is an open framework for building developer portals. Prior to 0.21.10, the @backstage/plugin-kubernetes-backend package is affected by unsupported catalog cluster authentication mode in kubernetes backend. Deployments using catalog cluster discovery may be affected when catalog contributors can create or modify kubernetes-cluster Resource entities. With the required endpoint permissions and pod RBAC, the backend can use its local in-cluster identity, potentially exposing Kubernetes resources readable by that identity. The credential is used only with the local in-cluster API endpoint and is not sent to the catalog-supplied endpoint. This issue is fixed in version 0.21.10.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
Medium
Backstage is a popular CNCF developer portal, but affected k8s-backend config is not universal
Threat Intel
1
1 source
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA 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
Defer
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

25
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +25
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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