/

CVE-2026-106498

Severity:

HIGH RISK

(7.7)

Improper Authorization (CWE-863) in Backstage Catalog

CVE-2026-106498

Analyzed

Vulnerability type

Category:

Improper Authorization

CWE:

CWE-863, CWE-918

Impact:

Unauthorized Data Access

Severity:

HIGH RISK

(7.7)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Backstage's catalog backend may improperly validate URLs used during catalog entity placeholder resolution, allowing an authenticated user to reference resources outside an entity's source repository. Under configurations where those resources are accessible to the catalog service, this could expose data that the user was not intended to access.

Backstage's catalog backend may improperly validate URLs used during catalog entity placeholder resolution, allowing an authenticated user to reference resources outside an entity's source repository. Under configurations where those resources are accessible to the catalog service, this could expose data that the user was not intended to access.

Affected context

The issue occurs in Backstage deployments using the @backstage/plugin-catalog-backend package and catalog entity placeholder resolution. Risk depends on configurations that permit authenticated users to create or influence catalog entities and on the catalog backend's ability to retrieve resources beyond the entity's declared source repository.

The issue occurs in Backstage deployments using the @backstage/plugin-catalog-backend package and catalog entity placeholder resolution. Risk depends on configurations that permit authenticated users to create or influence catalog entities and on the catalog backend's ability to retrieve resources beyond the entity's declared source repository.

Exploit preconditions

  • Attack surface: Backstage catalog entity creation or modification and placeholder resolution
  • Required access: An authenticated Backstage account with permission to craft or submit catalog entities
  • Trigger point: Processing a catalog entity containing a URL-based placeholder directive
  • Why exploitation is possible: URL validation may not sufficiently constrain references to the entity's authorized source repository, allowing resolution of external resources under permissive deployment conditions
  • Attack surface: Backstage catalog entity creation or modification and placeholder resolution
  • Required access: An authenticated Backstage account with permission to craft or submit catalog entities
  • Trigger point: Processing a catalog entity containing a URL-based placeholder directive
  • Why exploitation is possible: URL validation may not sufficiently constrain references to the entity's authorized source repository, allowing resolution of external resources under permissive deployment conditions

Why this happens

The underlying bug is insufficient authorization-aware URL validation during catalog placeholder resolution. The implementation may validate that a reference is syntactically acceptable without adequately enforcing that it remains within the resource boundary associated with the entity's source repository.

This maps primarily to CWE-863: Incorrect Authorization, because the resolver may permit access to resources outside the caller's intended authorization scope. It is also related to CWE-918: Server-Side Request Forgery, where a backend retrieves attacker-influenced URLs without sufficiently restricting destinations.

The underlying bug is insufficient authorization-aware URL validation during catalog placeholder resolution. The implementation may validate that a reference is syntactically acceptable without adequately enforcing that it remains within the resource boundary associated with the entity's source repository.

This maps primarily to CWE-863: Incorrect Authorization, because the resolver may permit access to resources outside the caller's intended authorization scope. It is also related to CWE-918: Server-Side Request Forgery, where a backend retrieves attacker-influenced URLs without sufficiently restricting destinations.

Potential impact

  • An authenticated user may access data outside the intended repository scope
  • Sensitive repository or service content could be disclosed
  • The catalog backend could make requests to unintended internal or external resources
  • Exposed data may support further compromise or unauthorized discovery
  • An authenticated user may access data outside the intended repository scope
  • Sensitive repository or service content could be disclosed
  • The catalog backend could make requests to unintended internal or external resources
  • Exposed data may support further compromise or unauthorized discovery

General mitigation guidance

Mitigation generally focuses on enforcing authorization boundaries throughout URL parsing and resource retrieval.

Common defensive patterns include:

  • Restricting placeholder references to explicitly approved repositories, hosts, schemes, and path prefixes
  • Resolving URLs only after verifying ownership and authorization for the referenced source
  • Applying canonicalization consistently before allowlist comparisons
  • Rejecting redirects or revalidating every redirect destination against the same policy
  • Limiting backend network egress and protecting access to internal services
  • Applying least-privilege permissions to catalog service identities
  • Separating user-controlled catalog metadata from trusted configuration

Mitigation generally focuses on enforcing authorization boundaries throughout URL parsing and resource retrieval.

Common defensive patterns include:

  • Restricting placeholder references to explicitly approved repositories, hosts, schemes, and path prefixes
  • Resolving URLs only after verifying ownership and authorization for the referenced source
  • Applying canonicalization consistently before allowlist comparisons
  • Rejecting redirects or revalidating every redirect destination against the same policy
  • Limiting backend network egress and protecting access to internal services
  • Applying least-privilege permissions to catalog service identities
  • Separating user-controlled catalog metadata from trusted configuration

How teams detect issues like this

Organizations can look for this issue through:

  • Static analysis and code review rules targeting user-controlled URL resolution
  • Review of placeholder handlers for missing host, scheme, repository, path, and redirect restrictions
  • Tests that verify references outside an entity's source boundary are rejected
  • Runtime monitoring for catalog-originated requests to unexpected hosts, internal address ranges, or sensitive paths
  • Policy enforcement requiring explicit destination allowlists and authorization checks for backend fetches
  • Automated security review tools that flag SSRF-like request flows and authorization gaps

Organizations can look for this issue through:

  • Static analysis and code review rules targeting user-controlled URL resolution
  • Review of placeholder handlers for missing host, scheme, repository, path, and redirect restrictions
  • Tests that verify references outside an entity's source boundary are rejected
  • Runtime monitoring for catalog-originated requests to unexpected hosts, internal address ranges, or sensitive paths
  • Policy enforcement requiring explicit destination allowlists and authorization checks for backend fetches
  • Automated security review tools that flag SSRF-like request flows and authorization gaps

Sources

SourceLink
github.comgithub.com/backstage/backstage/commit/0b0f6fc89b4eb4872c76a498abbe1dc65998bb6e
github.comgithub.com/backstage/backstage/commit/286bfc1f9cc3608a073b41016be302785be385d1
github.comgithub.com/backstage/backstage/commit/61a10f19926aeda7f4a32de48d733e6710584634
github.comgithub.com/backstage/backstage/commit/99729e925fd2bd40ba210022351a0ee6318e6197
github.comgithub.com/backstage/backstage/commit/e786ac309ed2d775daf2309393c015c43902d6f6
github.comgithub.com/backstage/backstage/releases/tag/v1.49.6
github.comgithub.com/backstage/backstage/releases/tag/v1.50.5
github.comgithub.com/backstage/backstage/releases/tag/v1.51.3
github.comgithub.com/backstage/backstage/releases/tag/v1.53.2
github.comgithub.com/backstage/backstage/releases/tag/v1.54.6
github.comgithub.com/backstage/backstage/security/advisories/GHSA-qgvj-qcf8-xq73

Frequently asked

questions

It may be exploitable through Backstage's authenticated catalog interfaces when a deployment permits users to create or modify catalog entities and the backend can access resources outside the intended repository boundary.

The described condition requires an authenticated Backstage account with sufficient permissions to submit or influence a catalog entity containing placeholder directives.

Enforce authorization-aware allowlists for hosts, repositories, schemes, and paths before resolving a reference, and revalidate destinations after canonicalization and redirects.

Treat catalog metadata and URLs as untrusted input, apply explicit resource-boundary policies, restrict backend network access, test cross-boundary references, and monitor unexpected outbound requests.

It may be exploitable through Backstage's authenticated catalog interfaces when a deployment permits users to create or modify catalog entities and the backend can access resources outside the intended repository boundary.

The described condition requires an authenticated Backstage account with sufficient permissions to submit or influence a catalog entity containing placeholder directives.

Enforce authorization-aware allowlists for hosts, repositories, schemes, and paths before resolving a reference, and revalidate destinations after canonicalization and redirects.

Treat catalog metadata and URLs as untrusted input, apply explicit resource-boundary policies, restrict backend network access, test cross-boundary references, and monitor unexpected outbound requests.

Find out what's already
exploitable in your codebase.