Skip to content
Heist/ feed
Back to feed
MediumFix available

Backstage's scaffolder credential handling may allow unintended GitHub authentication fallback

Type: advisorySources: OSV

### Impact Scaffolder actions that interact with source control systems may not consistently enforce the intended credential boundaries under certain configurations. An authenticated user could perform operations with broader access than intended. ### Patches - `@backstage/plugin-scaffolder-backend` version `4.1.0` - `@backstage/plugin-scaffolder-backend-module-azure` version `0.2.25` - `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud` version `0.3.10` - `@backstage/plugin-scaffolder-backend-module-bitbucket-server` version `0.2.25` - `@backstage/plugin-scaffolder-backend-module-github` version `0.9.13` - `@backstage/plugin-scaffolder-backend-module-gitlab` version `0.11.10` The fix introduces a new configuration option that enforces user-provided credentials for supported SCM actions. The new behavior is opt-in for compatibility. After upgrading, set: ```yaml scaffolder: requireScmUserCredentials: true ``` Before enabling this setting, review and update your templates as described in the software templates documentation referred to below. ### Workarounds If you cannot upgrade and enable the setting immediately: - Restrict who can create Scaffolder tasks and which templates they can execute. - Limit SCM integration credentials to the minimum repository read and mutation permissions required. - Remove integration credentials for SCM hosts where all required operations can use explicitly supplied user tokens.

Products
@backstage/plugin-scaffolder-backend, @backstage/plugin-scaffolder-backend-module-azure, @backstage/plugin-scaffolder-backend-module-bitbucket-cloud, @backstage/plugin-scaffolder-backend-module-bitbucket-server, @backstage/plugin-scaffolder-backend-module-github, @backstage/plugin-scaffolder-backend-module-gitlab
Affected versions
Not specified
Fixed versions
0.11.10, 0.2.25, 0.3.10, 0.9.13, 4.1.0
CVEs
CVE-2026-106462
Confirmed fixed CVEs
Not specified
Updated in this feed
28 Oct 2026, 08:47 UTC · Revision 1

Source evidence

Backstage's scaffolder credential handling may allow unintended GitHub authentication fallback

core-osv · Original source

Published 7 Oct 2026, 18:01 UTC

### Impact Scaffolder actions that interact with source control systems may not consistently enforce the intended credential boundaries under certain configurations. An authenticated user could perform operations with broader access than intended. ### Patches - `@backstage/plugin-scaffolder-backend` version `4.1.0` - `@backstage/plugin-scaffolder-backend-module-azure` version `0.2.25` - `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud` version `0.3.10` - `@backstage/plugin-scaffolder-backend-module-bitbucket-server` version `0.2.25` - `@backstage/plugin-scaffolder-backend-module-github` version `0.9.13` - `@backstage/plugin-scaffolder-backend-module-gitlab` version `0.11.10` The fix introduces a new configuration option that enforces user-provided credentials for supported SCM actions. The new behavior is opt-in for compatibility. After upgrading, set: ```yaml scaffolder: requireScmUserCredentials: true ``` Before enabling this setting, review and update your templates as described in the software templates documentation referred to below. ### Workarounds If you cannot upgrade and enable the setting immediately: - Restrict who can create Scaffolder tasks and which templates they can execute. - Limit SCM integration credentials to the minimum repository read and mutation permissions required. - Remove integration credentials for SCM hosts where all required operations can use explicitly supplied user tokens.

osv:GHSA-29gx-h2m3-xw44

@backstage/plugin-scaffolder-backend

Fixed versions: 4.1.0

@backstage/plugin-scaffolder-backend-module-github

Fixed versions: 0.9.13

@backstage/plugin-scaffolder-backend-module-gitlab

Fixed versions: 0.11.10

@backstage/plugin-scaffolder-backend-module-azure

Fixed versions: 0.2.25

@backstage/plugin-scaffolder-backend-module-bitbucket-cloud

Fixed versions: 0.3.10

@backstage/plugin-scaffolder-backend-module-bitbucket-server

Fixed versions: 0.2.25

Complete source record
{
  "id": "3a43be0f618c17ba91638fbe12009ef049fabba600842d02d5c202cd11b62125",
  "url": "https://osv.dev/vulnerability/GHSA-29gx-h2m3-xw44",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Backstage's scaffolder credential handling may allow unintended GitHub authentication fallback",
    "summary": "### Impact Scaffolder actions that interact with source control systems may not consistently enforce the intended credential boundaries under certain configurations. An authenticated user could perform operations with broader access than intended. ### Patches - `@backstage/plugin-scaffolder-backend` version `4.1.0` - `@backstage/plugin-scaffolder-backend-module-azure` version `0.2.25` - `@backstage/plugin-scaffolder-backend-module-bitbucket-cloud` version `0.3.10` - `@backstage/plugin-scaffolder-backend-module-bitbucket-server` version `0.2.25` - `@backstage/plugin-scaffolder-backend-module-github` version `0.9.13` - `@backstage/plugin-scaffolder-backend-module-gitlab` version `0.11.10` The fix introduces a new configuration option that enforces user-provided credentials for supported SCM actions. The new behavior is opt-in for compatibility. After upgrading, set: ```yaml scaffolder: requireScmUserCredentials: true ``` Before enabling this setting, review and update your templates as described in the software templates documentation referred to below. ### Workarounds If you cannot upgrade and enable the setting immediately: - Restrict who can create Scaffolder tasks and which templates they can execute. - Limit SCM integration credentials to the minimum repository read and mutation permissions required. - Remove integration credentials for SCM hosts where all required operations can use explicitly supplied user tokens.",
    "evidence": "osv:GHSA-29gx-h2m3-xw44",
    "products": [
      {
        "name": {
          "value": "@backstage/plugin-scaffolder-backend",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "4.1.0",
            "evidence": "/affected/0/ranges"
          }
        ],
        "affected_versions": []
      },
      {
        "name": {
          "value": "@backstage/plugin-scaffolder-backend-module-github",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "0.9.13",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      },
      {
        "name": {
          "value": "@backstage/plugin-scaffolder-backend-module-gitlab",
          "evidence": "/affected/2/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "0.11.10",
            "evidence": "/affected/2/ranges"
          }
        ],
        "affected_versions": []
      },
      {
        "name": {
          "value": "@backstage/plugin-scaffolder-backend-module-azure",
          "evidence": "/affected/3/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "0.2.25",
            "evidence": "/affected/3/ranges"
          }
        ],
        "affected_versions": []
      },
      {
        "name": {
          "value": "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud",
          "evidence": "/affected/4/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "0.3.10",
            "evidence": "/affected/4/ranges"
          }
        ],
        "affected_versions": []
      },
      {
        "name": {
          "value": "@backstage/plugin-scaffolder-backend-module-bitbucket-server",
          "evidence": "/affected/5/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "0.2.25",
            "evidence": "/affected/5/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "medium",
    "structured": {
      "id": "GHSA-29gx-h2m3-xw44",
      "aliases": [
        "CVE-2026-106462",
        "GHSA-29gx-h2m3-xw44"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "4.1.0"
                }
              ]
            }
          ],
          "package": {
            "name": "@backstage/plugin-scaffolder-backend",
            "purl": "pkg:npm/%40backstage/plugin-scaffolder-backend",
            "ecosystem": "npm"
          },
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-29gx-h2m3-xw44/GHSA-29gx-h2m3-xw44.json"
          }
        },
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "0.9.13"
                }
              ]
            }
          ],
          "package": {
            "name": "@backstage/plugin-scaffolder-backend-module-github",
            "purl": "pkg:npm/%40backstage/plugin-scaffolder-backend-module-github",
            "ecosystem": "npm"
          },
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-29gx-h2m3-xw44/GHSA-29gx-h2m3-xw44.json"
          }
        },
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "0.11.10"
                }
              ]
            }
          ],
          "package": {
            "name": "@backstage/plugin-scaffolder-backend-module-gitlab",
            "purl": "pkg:npm/%40backstage/plugin-scaffolder-backend-module-gitlab",
            "ecosystem": "npm"
          },
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-29gx-h2m3-xw44/GHSA-29gx-h2m3-xw44.json"
          }
        },
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "0.2.25"
                }
              ]
            }
          ],
          "package": {
            "name": "@backstage/plugin-scaffolder-backend-module-azure",
            "purl": "pkg:npm/%40backstage/plugin-scaffolder-backend-module-azure",
            "ecosystem": "npm"
          },
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-29gx-h2m3-xw44/GHSA-29gx-h2m3-xw44.json"
          }
        },
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "0.3.10"
                }
              ]
            }
          ],
          "package": {
            "name": "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud",
            "purl": "pkg:npm/%40backstage/plugin-scaffolder-backend-module-bitbucket-cloud",
            "ecosystem": "npm"
          },
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-29gx-h2m3-xw44/GHSA-29gx-h2m3-xw44.json"
          }
        },
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "0.2.25"
                }
              ]
            }
          ],
          "package": {
            "name": "@backstage/plugin-scaffolder-backend-module-bitbucket-server",
            "purl": "pkg:npm/%40backstage/plugin-scaffolder-backend-module-bitbucket-server",
            "ecosystem": "npm"
          },
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-29gx-h2m3-xw44/GHSA-29gx-h2m3-xw44.json"
          }
        }
      ],
      "modified": "2026-10-07T18:15:12.714484672Z",
      "provider": "osv",
      "references": [
        "https://github.com/backstage/backstage/security/advisories/GHSA-29gx-h2m3-xw44",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-106462",
        "https://github.com/backstage/backstage/commit/6fb2a41ea47da37eafe5ea744050",
        "https://github.com/backstage/backstage/commit/6fb2a41ea47da37eafe5ea744050ef90be6820c0",
        "https://github.com/backstage/backstage",
        "https://github.com/backstage/backstage/releases/tag/v1.54.6"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-441",
          "CWE-863"
        ],
        "severity": "MODERATE",
        "github_reviewed": true,
        "nvd_published_at": "2026-10-06T21:17:17Z",
        "github_reviewed_at": "2026-10-07T18:01:53Z"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-106462",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 97164,
  "published_at": "2026-10-07T18:01:53+00:00"
}