Skip to content

Update dependency @backstage/plugin-scaffolder-backend [SECURITY] - abandoned - #9491

Closed
backstage-goalie[bot] wants to merge 2 commits into
mainfrom
renovate/npm-backstage-plugin-scaffolder-backend-vulnerability
Closed

Update dependency @backstage/plugin-scaffolder-backend [SECURITY] - abandoned#9491
backstage-goalie[bot] wants to merge 2 commits into
mainfrom
renovate/npm-backstage-plugin-scaffolder-backend-vulnerability

Conversation

@backstage-goalie

@backstage-goalie backstage-goalie Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
@backstage/plugin-scaffolder-backend (source) ^2.1.0^3.0.0 age confidence
@backstage/plugin-scaffolder-backend (source) 3.0.03.1.4 age confidence
@backstage/plugin-scaffolder-backend (source) 3.1.43.1.5 age confidence

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Backstage has a Possible Symlink Path Traversal in Scaffolder Actions

CVE-2026-24046 / GHSA-rq6q-wr2q-7pgp

More information

Details

Impact

Multiple Scaffolder actions and archive extraction utilities were vulnerable to symlink-based path traversal attacks. An attacker with access to create and execute Scaffolder templates could exploit symlinks to:

  1. Read arbitrary files via the debug:log action by creating a symlink pointing to sensitive files (e.g., /etc/passwd, configuration files, secrets)
  2. Delete arbitrary files via the fs:delete action by creating symlinks pointing outside the workspace
  3. Write files outside the workspace via archive extraction (tar/zip) containing malicious symlinks

This affects any Backstage deployment where users can create or execute Scaffolder templates.

Patches

This vulnerability is fixed in the following package versions:

  • @backstage/backend-defaults version 0.12.2, 0.13.2, 0.14.1, 0.15.0
  • @backstage/plugin-scaffolder-backend version 2.2.2, 3.0.2, 3.1.1
  • @backstage/plugin-scaffolder-node version 0.11.2, 0.12.3

Users should upgrade to these versions or later.

Workarounds
  • Follow the recommendation in the Backstage Threat Model to limit access to creating and updating templates
  • Restrict who can create and execute Scaffolder templates using the permissions framework
  • Audit existing templates for symlink usage
  • Run Backstage in a containerized environment with limited filesystem access
References

Severity

  • CVSS Score: 7.1 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:N/A:L

References

This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).


@​backstage/plugin-scaffolder-backend Vulnerable to Potential Session Token Exfiltration via Log Redaction Bypass

CVE-2026-29184 / GHSA-8qp7-fhr9-fw53

More information

Details

Impact

A malicious scaffolder template can bypass the log redaction mechanism to exfiltrate secrets provided run through task event logs.

The attack requires:

  • The ability to register a template in the catalog
  • A victim who executes the malicious template
Patches

Patched in @backstage/plugin-scaffolder-backend version 3.1.4

Workarounds
  • Implement a custom permission policy that restricts scaffolder.task.read so users can only read their own task logs
  • Restrict who can register templates in the catalog to trusted users only
Resources

Severity

  • CVSS Score: 2.0 / 10 (Low)
  • Vector String: CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:L/I:N/A:N

References

This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).


@​backstage/plugin-scaffolder-backend: Possible exposure of defaultEnvironment secrets using dry-run endpoint

CVE-2026-32237 / GHSA-8wq8-6859-qx77

More information

Details

Impact

Authenticated users with permission to execute scaffolder dry-runs can gain access to server-configured environment secrets through the dry-run API response. Secrets are properly
redacted in log output but not in all parts of the response payload.

Deployments that have configured scaffolder.defaultEnvironment.secrets are affected.

Patches

This is patched in @backstage/plugin-scaffolder-backend version 3.1.5

Workarounds

Remove or empty the scaffolder.defaultEnvironment.secrets configuration from app-config.yaml. Alternatively, restrict access to the scaffolder dry-run functionality via the
permissions framework.

References

Severity

  • CVSS Score: 4.4 / 10 (Medium)
  • Vector String: CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N

References

This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).


Release Notes

backstage/backstage (@​backstage/plugin-scaffolder-backend)

v3.1.4

Compare Source

Patch Changes

v3.1.3

Compare Source

Patch Changes

v3.1.2

Compare Source

Patch Changes

v3.1.1

Compare Source

Patch Changes

v3.1.0

Compare Source

Minor Changes
  • a4cd405: Add defaultEnvironment config to scaffolder to enable more flexible and custom templates. Now it's possible enable access to default parameters and secrets in templates, improving security and reducing complexity.
Patch Changes

v3.0.3

Compare Source

v3.0.2

Compare Source

v3.0.1

Compare Source

Patch Changes

v3.0.0

Compare Source

Major Changes
  • 9b81a90: BREAKING - Removing the deprecated types and interfaces, there's no replacement for these types, and hopefully not currently used as they offer no value with the plugin being on the new backend system and no way to consume them.

    Affected types: CreateWorkerOptions, CurrentClaimedTask, DatabaseTaskStore, DatabaseTaskStoreOptions, TaskManager, TaskStore, TaskStoreCreateTaskOptions, TaskStoreCreateTaskResult, TaskStoreEmitOptions, TaskStoreListEventsOptions, TaskStoreRecoverTaskOptions, TaskStoreShutDownTaskOptions, TaskWorker and TemplateActionRegistry.

Patch Changes

v2.2.3

Compare Source

v2.2.2

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

Copilot AI review requested due to automatic review settings June 15, 2026 21:15
@backstage-goalie backstage-goalie Bot added dependencies Pull requests that update a dependency file security labels Jun 15, 2026
@backstage-goalie
backstage-goalie Bot requested a review from 04kash June 15, 2026 21:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@backstage-goalie

backstage-goalie Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor Author

Missing Changesets

The following package(s) are changed by this PR but do not have a changeset:

  • @backstage-community/plugin-kiali-common
  • @backstage-community/plugin-kiali

See CONTRIBUTING.md for more information about how to add changesets.

Changed Packages

Package Name Package Path Changeset Bump Current Version
@backstage-community/plugin-kiali-common workspaces/kiali/plugins/kiali-common none v0.11.0
@backstage-community/plugin-kiali workspaces/kiali/plugins/kiali none v1.51.0
backend workspaces/report-portal/packages/backend none v0.0.7

@backstage-goalie backstage-goalie Bot changed the title fix(deps): update dependency @backstage/plugin-scaffolder-backend [security] fix(deps): update dependency @backstage/plugin-scaffolder-backend [security] - autoclosed Jun 16, 2026
@backstage-goalie backstage-goalie Bot closed this Jun 16, 2026
@backstage-goalie
backstage-goalie Bot deleted the renovate/npm-backstage-plugin-scaffolder-backend-vulnerability branch June 16, 2026 09:54
@backstage-goalie backstage-goalie Bot changed the title fix(deps): update dependency @backstage/plugin-scaffolder-backend [security] - autoclosed fix(deps): update dependency @backstage/plugin-scaffolder-backend [security] Jun 16, 2026
@backstage-goalie backstage-goalie Bot reopened this Jun 16, 2026
@backstage-goalie
backstage-goalie Bot force-pushed the renovate/npm-backstage-plugin-scaffolder-backend-vulnerability branch 2 times, most recently from df1df1e to d9cf2d4 Compare June 16, 2026 15:52
@backstage-goalie backstage-goalie Bot changed the title fix(deps): update dependency @backstage/plugin-scaffolder-backend [security] fix(deps): update dependency @backstage/plugin-scaffolder-backend [security] - autoclosed Jun 17, 2026
@backstage-goalie backstage-goalie Bot closed this Jun 17, 2026
@backstage-goalie backstage-goalie Bot changed the title fix(deps): update dependency @backstage/plugin-scaffolder-backend [security] - autoclosed fix(deps): update dependency @backstage/plugin-scaffolder-backend [security] Jun 17, 2026
@backstage-goalie backstage-goalie Bot reopened this Jun 17, 2026
@backstage-goalie
backstage-goalie Bot force-pushed the renovate/npm-backstage-plugin-scaffolder-backend-vulnerability branch 2 times, most recently from d9cf2d4 to 979749c Compare June 17, 2026 15:17
Copilot AI review requested due to automatic review settings June 17, 2026 15:17
Copilot AI review requested due to automatic review settings June 23, 2026 15:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@backstage-goalie
backstage-goalie Bot force-pushed the renovate/npm-backstage-plugin-scaffolder-backend-vulnerability branch from 0610eb3 to def0c1f Compare June 23, 2026 16:17
Copilot AI review requested due to automatic review settings June 23, 2026 17:54

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot can't review bot-authored pull requests automatically. A user with Copilot access can request a review manually.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot can't review bot-authored pull requests automatically. A user with Copilot access can request a review manually.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot can't review bot-authored pull requests automatically. A user with Copilot access can request a review manually.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot can't review bot-authored pull requests automatically. A user with Copilot access can request a review manually.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot can't review bot-authored pull requests automatically. A user with Copilot access can request a review manually.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot can't review bot-authored pull requests automatically. A user with Copilot access can request a review manually.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot can't review bot-authored pull requests automatically. A user with Copilot access can request a review manually.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot can't review bot-authored pull requests automatically. A user with Copilot access can request a review manually.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot can't review bot-authored pull requests automatically. A user with Copilot access can request a review manually.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot can't review bot-authored pull requests automatically. A user with Copilot access can request a review manually.

backstage-goalie Bot and others added 2 commits July 3, 2026 13:46
Signed-off-by: Renovate Bot <bot@renovateapp.com>
The updated @backstage/plugin-scaffolder-backend transitively pulls in
zod v4 and @backstage/backend-plugin-api@1.9.2, which require
TypeScript >=5.4 (NoInfer utility type) and >=5.8 (TS2742 fix).

Regenerate kiali API reports to match the new type inference.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Andre Wanlin <awanlin@spotify.com>

@awanlin awanlin left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving then will merge based on agreement to force merged PRs with that label 👍

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 7 out of 10 changed files in this pull request and generated 4 comments.

"@backstage/plugin-permission-node": "^0.10.2",
"@backstage/plugin-proxy-backend": "^0.6.4",
"@backstage/plugin-scaffolder-backend": "^2.1.0",
"@backstage/plugin-scaffolder-backend": "^3.0.0",
Comment on lines 7 to 9
// @public
export const config: {
session: {
timeOutforWarningUser: number;
};
toolbar: {
defaultDuration: number;
defaultRefreshInterval: number;
defaultTimeRange: {
rangeDuration: number;
};
refreshInterval: {
0: string;
10000: string;
15000: string;
30000: string;
60000: string;
300000: string;
900000: string;
};
graphLayouts: {
'kiali-grid': string;
'kiali-concentric': string;
'kiali-dagre': string;
};
};
tracing: {
configuration: {
limitResults: {
20: number;
50: number;
100: number;
200: number;
300: number;
400: number;
500: number;
};
statusCode: {
none: string;
200: string;
400: string;
401: string;
403: string;
404: string;
405: string;
408: string;
500: string;
502: string;
503: string;
504: string;
};
};
};
about: {
project: {
url: string;
icon: string;
linkText: string;
};
website: {
url: string;
icon: string;
linkText: string;
};
};
documentation: {
url: string;
};
login: {
headers: {
'X-Auth-Type-Kiali-UI': string;
};
};
api: {
urls: {
aggregateGraphElements: (namespace: string, aggregate: string, aggregateValue: string) => string;
aggregateByServiceGraphElements: (namespace: string, aggregate: string, aggregateValue: string, service: string) => string;
aggregateMetrics: (namespace: string, aggregate: string, aggregateValue: string) => string;
authenticate: string;
authInfo: string;
app: (namespace: string, app: string) => string;
appGraphElements: (namespace: string, app: string, version?: string) => string;
appHealth: (namespace: string, app: string) => string;
appMetrics: (namespace: string, app: string) => string;
appDashboard: (namespace: string, app: string) => string;
appSpans: (namespace: string, app: string) => string;
clusters: string;
clustersHealth: () => string;
clustersWorkloads: () => string;
crippledFeatures: string;
serviceSpans: (namespace: string, service: string) => string;
workloadSpans: (namespace: string, workload: string) => string;
customDashboard: (namespace: string, template: string) => string;
grafana: string;
istioConfig: (namespace: string) => string;
allIstioConfigs: () => string;
istioConfigCreate: (namespace: string, objectType: string) => string;
istioConfigDetail: (namespace: string, objectType: string, object: string, apiVersion?: string) => string;
istioConfigDelete: (namespace: string, objectType: string, object: string) => string;
istioConfigUpdate: (namespace: string, objectType: string, object: string) => string;
istioPermissions: string;
jaeger: string;
appTraces: (namespace: string, app: string) => string;
serviceTraces: (namespace: string, svc: string) => string;
workloadTraces: (namespace: string, wkd: string) => string;
jaegerErrorTraces: (namespace: string, app: string) => string;
jaegerTrace: (idTrace: string) => string;
logout: string;
metricsStats: string;
namespaces: string;
namespace: (namespace: string) => string;
namespacesGraphElements: string;
namespaceMetrics: (namespace: string) => string;
namespaceTls: (namespace: string) => string;
namespaceValidations: (namespace: string) => string;
configValidations: () => string;
meshTls: () => string;
istioStatus: () => string;
istioCertsInfo: () => string;
pod: (namespace: string, pod: string) => string;
podLogs: (namespace: string, pod: string) => string;
podEnvoyProxy: (namespace: string, pod: string) => string;
podEnvoyProxyLogging: (namespace: string, pod: string) => string;
podEnvoyProxyResourceEntries: (namespace: string, pod: string, resource: string) => string;
serverConfig: string;
service: (namespace: string, service: string) => string;
serviceGraphElements: (namespace: string, service: string) => string;
serviceHealth: (namespace: string, service: string) => string;
serviceMetrics: (namespace: string, service: string) => string;
serviceDashboard: (namespace: string, service: string) => string;
clustersApps: () => string;
clustersServices: () => string;
clustersMetrics: () => string;
status: string;
workload: (namespace: string, workload: string) => string;
workloadGraphElements: (namespace: string, workload: string) => string;
workloadHealth: (namespace: string, workload: string) => string;
workloadMetrics: (namespace: string, workload: string) => string;
workloadDashboard: (namespace: string, workload: string) => string;
};
};
graph: {
maxHosts: number;
};
};
export const config: typeof conf;

"prettier": "^3.6.2",
"prettier-plugin-sort-imports": "^1.8.8",
"typescript": "~5.3.0"
"typescript": "~5.8.0"
"node-gyp": "^9.0.0",
"prettier": "^2.3.2",
"typescript": "~5.3.0"
"typescript": "~5.8.0"
@backstage-goalie

Copy link
Copy Markdown
Contributor Author

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

@backstage-goalie

Copy link
Copy Markdown
Contributor Author

Autoclosing Skipped

This PR has been flagged for autoclosing. However, it is being skipped due to the branch being already modified. Please close/delete it manually or report a bug if you think this is in error.

@awanlin

awanlin commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Closing due to changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants