CVE-2026-106563
Executive Summary
CVE-2026-106563 is an improper entity validation vulnerability in the deprecated Kubernetes services endpoint of the @backstage/plugin-kubernetes-backend package, affecting Backstage deployments prior to version 0.21.8. An authenticated user holding Kubernetes read permissions can supply crafted entity data to this endpoint and thereby retrieve Kubernetes workload metadata beyond their authorized scope across configured clusters. The flaw yields read-only confidentiality exposure (CVSS 5.3, C:H/I:N) of Kubernetes object metadata; there is no integrity or availability impact and no evidence of public exploitation or in-the-wild activity.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
Backstage is an open framework for building internal developer portals, and the Kubernetes backend plugin brokers requests from the portal to configured Kubernetes clusters so that developers can view workload state. The vulnerability resides in a deprecated services endpoint within @backstage/plugin-kubernetes-backend and is rooted in improper entity validation (CWE-20): the endpoint accepts entity data supplied by the requester and uses it to determine which Kubernetes resources to query, without adequately validating that the supplied entity corresponds to resources the caller is entitled to read.
The core defect is an authorization-scoping failure driven by unvalidated input. Instead of deriving scope strictly from the authenticated principal's server-side permissions, the endpoint trusts client-supplied entity data as an input to resource resolution. When that input is crafted, the effective query scope expands beyond what the caller's Kubernetes read permissions would normally permit, resulting in read-only access to Kubernetes object metadata across configured clusters.
Because the plugin proxies to real clusters using its own configured credentials, the boundary between the caller's permissions and the plugin's cluster access is precisely where this vulnerability manifests. The endpoint is explicitly described as deprecated, which increases exposure: deprecated endpoints are frequently still routable, poorly monitored, and slower to receive defensive attention.
Per the CVSS vector (AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N): the vector is network-exploitable, requires high attack complexity, requires low privileges (an authenticated user with Kubernetes read permissions), requires no user interaction, is scoped to this component, and results in high confidentiality impact only. The high attack-complexity rating is consistent with a flaw that requires the attacker to understand and craft specific entity data to broaden scope.
The advisory does not disclose the endpoint's exact route, the parameter names used to pass entity data, or the validation logic. No PoC, exploit code, or Nuclei template is available. Analysis here is therefore bounded to the vulnerability class and mechanism as described.
Exploitation Scenarios
No public proof-of-concept exists; the attack chain below is inferred from the vulnerability class and the NVD description. Specific function names, route paths, and parameter names are not provided in the available data and are intentionally omitted.
Reconnaissance / target identification. The attacker identifies a reachable Backstage instance with the
@backstage/plugin-kubernetes-backendplugin deployed at a version earlier than 0.21.8. The attacker confirms the instance exposes the deprecated Kubernetes services endpoint and that they possess at minimum an authenticated account with Kubernetes read permissions — the stated PR:L precondition.Triggering the flaw class. The attacker authenticates and sends a request to the deprecated services endpoint, substituting or augmenting the entity data field(s) with crafted values. Because the endpoint does not properly validate that the supplied entity maps to resources the caller may read, the plugin resolves the request against a broader scope than intended. This is an input-validation / authorization-scoping bypass: the endpoint trusts attacker-controlled entity data as an input to its resource-selection logic.
Payload / execution method. At the vulnerability-class level, the "payload" is crafted entity data — a modified or fabricated entity identifier — submitted to the deprecated endpoint. No memory corruption or code execution is involved; the technique is manipulation of a trusted input to widen the query scope. The attacker iterates over candidate entity values to enumerate resources the endpoint will serve.
Post-exploitation impact. On success, the attacker obtains read-only Kubernetes object metadata across configured clusters — for example, the presence, names, namespaces, and metadata of workloads. This is an information-disclosure outcome that enables follow-on reconnaissance (mapping services, namespaces, and deployment topology). The description expressly limits exposure to read-only metadata and excludes write operations, so no cluster modification is expected directly from this flaw.
Impact Assessment
The impact is a confidentiality breach of Kubernetes object metadata, constrained to read-only access and to the clusters configured within the affected Backstage deployment. The CVSS subscores confirm this profile: C:H (high confidentiality), I:N (no integrity), A:N (no availability), with S:U (scope unchanged) and PR:L (low privileges required).
Business relevance stems from what the metadata reveals rather than from the immediate loss of a secret. Kubernetes object metadata can disclose internal service names, namespaces, workload inventory, and deployment structure — a high-value reconnaissance substrate. In a developer-portal context, the leak traverses the plugin's own cluster credentials, meaning one authenticated low-privileged user can observe metadata they were never entitled to see, potentially across multiple clusters.
Blast radius is bounded by which clusters the Backstage instance is configured to serve and by the endpoint's read-only nature. Environments with broad cluster fan-out and many low-privilege portal users have the largest exposure surface. The high attack-complexity metric (AC:H) tempers severity, but does not eliminate it: the requirement is attacker sophistication in crafting entity data, not special network position, since the vector is AV:N.
Detection Guidance
Detection must focus on anomalous requests to the deprecated Kubernetes services endpoint and on unusual enumeration patterns from non-administrative users. Because the exact route is undisclosed, the rules below target behavioral and path-pattern indicators that defenders should tune to their deployment.
Sigma Rule
title: Backstage Kubernetes Backend Deprecated Services Endpoint Scope-Bypass Attempt
id: 7c4f9b2a-1e6d-4a3f-9b2c-1065630000aa
status: experimental
description: Detects requests to the deprecated @backstage/plugin-kubernetes-backend services endpoint, indicating potential improper entity validation abuse (CVE-2026-106563).
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-106563
author: valtersit.com
date: 2026/01/01
tags:
- attack.t1190
- cve.2026.106563
logsource:
category: webserver
detection:
selection_path:
cs-uri-stem|contains:
- '/kubernetes/services'
- '/kubernetes-backend'
- '/api/kubernetes'
selection_deprecated:
cs-uri-query|contains:
- 'entity'
- 'deprecated'
condition: selection_path and selection_deprecated
fields:
- c-ip
- cs-username
- cs-uri-stem
- cs-uri-query
falsepositives:
- Legitimate portal usage of the Kubernetes services endpoint
level: medium
YARA Rule
rule CVE_2026_106563_Backstage_K8s_Entity_Scope_Bypass
{
meta:
description = "Detects crafted entity data abuse against the deprecated Backstage kubernetes-backend services endpoint (CVE-2026-106563)"
author = "valtersit.com"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-106563"
date = "2026-01-01"
severity = "medium"
strings:
$endpoint1 = "/kubernetes/services" ascii nocase
$endpoint2 = "kubernetes-backend" ascii nocase
$pkg = "@backstage/plugin-kubernetes-backend" ascii
$ent = "entity" ascii nocase
$ver = "0.21.8" ascii
condition:
(any of ($endpoint1, $endpoint2) and $ent) or
($pkg and not $ver)
}
Suricata IDS Rule
alert http any any -> any any (msg:"CVE-2026-106563 Backstage kubernetes-backend deprecated services endpoint scope bypass attempt"; flow:established,to_server; http.method; content:"GET"; http.uri; content:"/kubernetes"; nocase; http.uri; content:"services"; nocase; http.uri; content:"entity"; nocase; reference:cve,2026-106563; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-106563; classtype:attempted-recon; sid:2026106563; rev:1;)
Elastic Detection
sequence by user.name, source.ip with maxspan=5m
[http where http.request.method == "GET" and
wildcard(http.request.path, "/kubernetes*") and
wildcard(http.request.path, "*services*")]
[http where http.request.method == "GET" and
wildcard(http.request.path, "/kubernetes*") and
wildcard(http.request.query, "*entity*")]
Splunk SPL Query
index=web sourcetype=access_combined OR sourcetype=nginx
| where match(uri_path, "(?i)/kubernetes.*services")
| eval suspicious=if(match(uri_query, "(?i)entity"), 1, 0)
| stats count values(uri_query) as queries by src_ip, user, uri_path, suspicious
| where suspicious=1 OR count > 25
| sort - count
Wazuh OSSEC Rule
<group name="web,backstage,cve-2026-106563,">
<rule id="106563" level="10">
<decoded_as>web-accesslog</decoded_as>
<url>/kubernetes</url>
<description>CVE-2026-106563: Backstage kubernetes-backend deprecated services endpoint accessed (possible entity validation bypass).</description>
<group>cve_2026_106563,recon,</group>
</rule>
<rule id="106564" level="12">
<if_sid>106563</if_sid>
<url>entity</url>
<description>CVE-2026-106563: Crafted entity data supplied to deprecated Kubernetes services endpoint — probable scope bypass.</description>
<mitre>
<id>T1190</id>
</mitre>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source). Note: the NVD description states the issue is fixed in version 0.21.8; however, no patch evidence was confirmed from any tracked source, so all validation of the fix should be performed independently against the vendor's release artifacts.
Immediate mitigations.
- Treat every deployment of
@backstage/plugin-kubernetes-backendolder than 0.21.8 as exposed. Inventory all Backstage instances and their plugin versions. - If the deprecated Kubernetes services endpoint is not required, disable or block it at the reverse proxy / API gateway layer and remove its route from exposure.
- Reduce the Kubernetes permissions granted to the plugin's configured service account to the minimum read set actually needed, limiting the metadata reachable if scope is bypassed.
- Enforce least-privilege RBAC for portal users and audit which accounts hold Kubernetes read permissions.
- Centralize and monitor access logs for the endpoint per the Detection Guidance above.
- Treat every deployment of
Patch / upgrade steps.
- Upgrade
@backstage/plugin-kubernetes-backendto 0.21.8 or later as the intended fix. - Because patch confidence is 0/4, verify the fix in a staging environment by testing that crafted entity data no longer broadens query scope.
- Rebuild and redeploy the Backstage backend image, then confirm the deployed version via the package manifest.
- Upgrade
Long-term hardening.
- Remove reliance on deprecated endpoints; audit for other deprecated API surfaces with similar trust-in-client-input patterns.
- Adopt a server-side authorization model in which resource scope is always derived from the authenticated principal's permissions, never from client-supplied data.
- Add input-validation and schema checks for any entity data accepted by backend plugins.
- Maintain SBOM-based dependency monitoring for Backstage plugins and subscribe to package release advisories.
- Run regular access reviews on portal users and on cluster credentials held by the platform.
References
- NVD — CVE-2026-106563: https://nvd.nist.gov/vuln/detail/CVE-2026-106563
- Backstage project and
@backstage/plugin-kubernetes-backendpackage on npm: https://www.npmjs.com/package/@backstage/plugin-kubernetes-backend - Backstage security advisories: https://github.com/backstage/backstage/security/advisories
- CWE-20 — Improper Input Validation: https://cwe.mitre.org/data/definitions/20.html
No threat actor campaigns, public proof-of-concept, Nuclei template, or exploit-in-the-wild evidence were identified for this CVE at the time of writing. CISA KEV status: not listed.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.