Skip to content
Heist/ feed
Back to feed
MediumFix available

Backstage has a sensitive information disclosure in Kubernetes resource queries

Type: advisorySources: OSV

### Impact An authenticated user holding the standard Kubernetes resource read permission could retrieve sensitive values that the Kubernetes plugin is designed to mask, potentially exposing credentials and other confidential material held in the connected clusters. Exposure is limited to resources that the Backstage service account is permitted to read and that match the targeted catalog entity's namespace and label selector. Deployments whose cluster credentials do not grant read access to these resources are unaffected. ### Patches Fixed in @backstage/plugin-kubernetes-backend version 0.21.9 One behavior change is worth noting for adopters who expose custom resources: a custom resource whose list kind is reported by the API server as SecretList now has the values of its data field masked, matching how core Kubernetes Secrets have always been handled on other query paths. ### Workarounds - Enable the permission framework and restrict `kubernetes.resources.read` to trusted users. - Scope the RBAC of the service account used to reach each cluster so that it cannot read sensitive resource types. The recommended `ClusterRole` in the Kubernetes plugin configuration documentation does not grant this access.

Products
@backstage/plugin-kubernetes-backend
Affected versions
Not specified
Fixed versions
0.21.9
CVEs
CVE-2026-106561
Confirmed fixed CVEs
Not specified
Updated in this feed
28 Oct 2026, 08:47 UTC · Revision 1

Source evidence

Backstage has a sensitive information disclosure in Kubernetes resource queries

core-osv · Original source

Published 7 Oct 2026, 18:02 UTC

### Impact An authenticated user holding the standard Kubernetes resource read permission could retrieve sensitive values that the Kubernetes plugin is designed to mask, potentially exposing credentials and other confidential material held in the connected clusters. Exposure is limited to resources that the Backstage service account is permitted to read and that match the targeted catalog entity's namespace and label selector. Deployments whose cluster credentials do not grant read access to these resources are unaffected. ### Patches Fixed in @backstage/plugin-kubernetes-backend version 0.21.9 One behavior change is worth noting for adopters who expose custom resources: a custom resource whose list kind is reported by the API server as SecretList now has the values of its data field masked, matching how core Kubernetes Secrets have always been handled on other query paths. ### Workarounds - Enable the permission framework and restrict `kubernetes.resources.read` to trusted users. - Scope the RBAC of the service account used to reach each cluster so that it cannot read sensitive resource types. The recommended `ClusterRole` in the Kubernetes plugin configuration documentation does not grant this access.

osv:GHSA-p795-mqf2-36mf

@backstage/plugin-kubernetes-backend

Fixed versions: 0.21.9

Complete source record
{
  "id": "f4e98bc13abdd2eafad09434f678c2f4b9e945d3136f92856859d4d5a0bbbcfb",
  "url": "https://osv.dev/vulnerability/GHSA-p795-mqf2-36mf",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Backstage has a sensitive information disclosure in Kubernetes resource queries",
    "summary": "### Impact An authenticated user holding the standard Kubernetes resource read permission could retrieve sensitive values that the Kubernetes plugin is designed to mask, potentially exposing credentials and other confidential material held in the connected clusters. Exposure is limited to resources that the Backstage service account is permitted to read and that match the targeted catalog entity's namespace and label selector. Deployments whose cluster credentials do not grant read access to these resources are unaffected. ### Patches Fixed in @backstage/plugin-kubernetes-backend version 0.21.9 One behavior change is worth noting for adopters who expose custom resources: a custom resource whose list kind is reported by the API server as SecretList now has the values of its data field masked, matching how core Kubernetes Secrets have always been handled on other query paths. ### Workarounds - Enable the permission framework and restrict `kubernetes.resources.read` to trusted users. - Scope the RBAC of the service account used to reach each cluster so that it cannot read sensitive resource types. The recommended `ClusterRole` in the Kubernetes plugin configuration documentation does not grant this access.",
    "evidence": "osv:GHSA-p795-mqf2-36mf",
    "products": [
      {
        "name": {
          "value": "@backstage/plugin-kubernetes-backend",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "0.21.9",
            "evidence": "/affected/0/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "medium",
    "structured": {
      "id": "GHSA-p795-mqf2-36mf",
      "aliases": [
        "CVE-2026-106561",
        "GHSA-p795-mqf2-36mf"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "0.21.9"
                }
              ]
            }
          ],
          "package": {
            "name": "@backstage/plugin-kubernetes-backend",
            "purl": "pkg:npm/%40backstage/plugin-kubernetes-backend",
            "ecosystem": "npm"
          },
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-p795-mqf2-36mf/GHSA-p795-mqf2-36mf.json"
          }
        }
      ],
      "modified": "2026-10-07T18:15:11.771769259Z",
      "provider": "osv",
      "references": [
        "https://github.com/backstage/backstage/security/advisories/GHSA-p795-mqf2-36mf",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-106561",
        "https://github.com/backstage/backstage/commit/388926ae5734bc20bd6a1520d02896be834f6527",
        "https://github.com/backstage/backstage",
        "https://github.com/backstage/backstage/releases/tag/v1.54.2"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-200",
          "CWE-863"
        ],
        "severity": "MODERATE",
        "github_reviewed": true,
        "nvd_published_at": "2026-10-07T15:17:17Z",
        "github_reviewed_at": "2026-10-07T18:02:30Z"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-106561",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 97156,
  "published_at": "2026-10-07T18:02:30+00:00"
}