☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 7.7 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N 🐛 CWE-863
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-106498

CVE-2026-106498 Improper Access Control in Backstage
📅 PUBLISHED: 2026-10-06 00:00 UTC 🔄 UPDATED: 2026-10-08 23:08 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.31%
👁️
0.31% probability
7.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1213
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 7.7
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: C Scope Changed
C: H Confidentiality High
I: N Integrity None
A: N Availability None
7.7
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-106498 is an improper URL validation flaw (CWE-863) in the @backstage/plugin-catalog-backend package of Backstage, an open framework for building developer portals. An authenticated user can craft a catalog entity containing placeholder directives that resolve to resources outside the entity's source repository, potentially exposing data the user is not authorized to access. The issue affects Backstage catalog backend versions prior to 3.5.1, 3.6.2, 3.7.2, 3.8.2, and 3.9.1, and carries a CVSS v3.1 base score of 7.7 (High).

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

Backstage is a framework for assembling developer portals, and its catalog subsystem ingests entity descriptors (typically YAML files) from configured source repositories. The NVD description states that the @backstage/plugin-catalog-backend package is affected by "improper url validation in catalog entity placeholder resolution." Backstage entity descriptors support placeholder/directive substitution, where a placeholder in an entity definition is resolved to a concrete value at processing time. The vulnerability is that the validation applied to the resolved URL is insufficient: it does not confirm that the referenced resource resides within the entity's own source repository.

CWE-863 (Incorrect Authorization) is the assigned weakness class. The core defect is an access-control/authorization gap rather than a memory-safety or injection bug: the catalog backend fails to enforce the boundary between an entity and its declaring source repository when resolving placeholder-referenced resources. Because resolution is performed by the backend, an authenticated user who can create or influence a catalog entity can influence where the backend looks for data.

The CVSS vector AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N characterizes this precisely:

  • AV:N — reachable over the network via the Backstage HTTP interface.
  • AC:L — no special conditions or race required; the flaw triggers through normal entity processing.
  • PR:L — the attacker must be authenticated ("an authenticated Backstage user").
  • UI:N — no victim interaction required.
  • S:C — scope is changed; the vulnerable catalog-backend component can affect resources beyond its own authorization boundary (the referenced source repositories/resources).
  • C:H — high confidentiality impact; data not intended to be available to the user may be accessed.
  • I:N / A:N — no integrity or availability impact.

Notably, the description scopes the impact with "Under certain configurations, this could allow access to data not intended to be available to the user." The exact configuration prerequisites are not enumerated in the available data; no function names, endpoints, or parameter identifiers are disclosed in the NVD description or CNA title, so implementation-level specifics cannot be stated without fabrication. The vulnerability class is a server-side URL/placeholder validation bypass leading to unauthorized cross-repository (or cross-boundary) data access.

Attack surface: any Backstage deployment that (a) runs an affected version of the catalog backend, (b) permits authenticated users to register, create, or modify catalog entities (e.g., via entity creation workflows or source-controlled descriptors the user can influence), and (c) has entity placeholders that resolve to URLs. Absent public analysis, the precise placeholder syntax and resolution code path are not established here.

Exploitation Scenarios

No public proof-of-concept, Nuclei template, or exploit code is available. The attack chain below is inferred strictly from the vulnerability class (improper URL validation / incorrect authorization) and the NVD description. No function names or endpoints are invented.

  1. Reconnaissance / target identification. The attacker identifies a Backstage developer portal running a vulnerable @backstage/plugin-catalog-backend version (prior to 3.5.1, 3.6.2, 3.7.2, 3.8.2, or 3.9.1). This can be as simple as locating the portal and confirming the Backstage version, then determining whether the deployment allows the attacker to create or influence catalog entities and whether placeholder/directive resolution is in use.

  2. Triggering the specific flaw class. The attacker obtains an authenticated session (PR:L) and crafts, submits, or modifies a catalog entity whose placeholder directives reference a resource location outside the entity's source repository. Because the backend's URL validation does not verify that the resolved target stays within the declaring repository's boundary, the placeholder resolves to the out-of-scope resource rather than being rejected.

  3. Payload / execution method (vulnerability-class level). The "payload" is the malicious entity descriptor containing the out-of-bound placeholder directive. On submission, the catalog backend processes the entity and resolves the placeholder to the attacker-chosen location, causing the backend to retrieve data from a resource the user is not authorized to read. No network exploit primitive, code execution, or memory corruption is involved — the flaw is an authorization/validation logic failure. As the description notes, success depends on "certain configurations."

  4. Post-exploitation impact. The result is unauthorized read access to data outside the entity's source repository (C:H), exposed to the attacker through the catalog's normal processing output. There is no integrity or availability impact (I:N, A:N). Because the scope is changed (S:C), the boundary crossed is that of the affected component's authorization context, allowing access to resources not intended for that user.

Impact Assessment

The CVSS v3.1 base score is 7.7 (High) with vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N. Key subscore drivers:

  • Confidentiality: High (C:H) — the flaw can expose data not intended for the requesting user, potentially including content from repositories the user should not be able to read (source code, secrets, or configuration that lives in a referenced location).
  • Scope: Changed (S:C) — the vulnerable component affects resources beyond its own security boundary; the authorization failure crosses from the catalog backend into other repositories/resources.
  • Privileges Required: Low (PR:L) — the attacker only needs an authenticated account, which in a typical developer portal is common (all developers are users).
  • Integrity/Availability: None — no data modification or service disruption.

Business impact: in enterprise deployments, Backstage catalogs aggregate metadata from across many source repositories and often sit at the center of developer identity and ownership data. An authorization bypass that lets an authenticated insider reach data outside their repository scope undermines the repository-level access controls the organization relies on. Blast radius is limited to deployments where users can register/modify catalog entities AND placeholder resolution to external URLs is permitted ("certain configurations"). It is not remotely exploitable by unauthenticated attackers and does not enable code execution or lateral movement by itself, but it can serve as an information-disclosure step against internal source and configuration data.

Because Backstage is open source and widely deployed as an internal developer portal, an affected instance is typically reachable only on internal networks or behind SSO — reducing internet-wide exposure but elevating the value of a compromised low-privilege user account. EPSS is not yet scored; CVE-2026-106498 is not listed in CISA KEV, and no in-the-wild exploitation is documented.

Detection Guidance

Detection focuses on catalog-entity content containing placeholder directives that resolve to URLs outside an entity's own source repository, and on the anomalous outbound fetches those resolutions produce. The rules below target that behavior class.

Sigma Rule

title: Backstage Catalog Entity Placeholder Resolution to Out-of-Scope URL
id: 9f1c2e7a-4b3d-4e51-8a2c-10649800aa01
status: experimental
description: Detects catalog entity submissions/updates containing placeholder directives that reference resources outside the entity's source repository (CVE-2026-106498).
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-106498
author: Valters IT Threat Intelligence
date: 2026/01/01
logsource:
  product: backstage
  service: catalog-backend
detection:
  selection_entity:
    event.action:
      - 'catalog.entity.create'
      - 'catalog.entity.update'
      - 'catalog.location.register'
  selection_placeholder:
    entity.spec|contains:
      - '$text:'
      - 'placeholder'
      - 'resolveUrl'
  selection_external:
    resolved.url|re: '^(https?://)(?!.*(github\\.com|gitlab\\.com|bitbucket\\.org)/.*).*$'
  condition: selection_entity and (selection_placeholder or selection_external)
fields:
  - user.name
  - entity.ref
  - resolved.url
falsepositives:
  - Legitimate multi-repository entity references approved by platform team
level: medium
tags:
  - attack.t1213
  - cve.2026-106498

YARA Rule

rule CVE_2026_106498_Backstage_Placeholder_Bypass
{
    meta:
        description = "Detects Backstage catalog entity descriptors abusing placeholder directives that reference resources outside the entity source repository (CVE-2026-106498)"
        author = "Valters IT Threat Intelligence"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-106498"
        date = "2026-01-01"
        severity = "high"

    strings:
        $api = "backstage.io/" ascii nocase
        $kind = "kind: Component" ascii nocase
        $ph1 = "$text:" ascii
        $ph2 = "$url:" ascii
        $repo1 = "github.com" ascii nocase
        $repo2 = "gitlab.com" ascii nocase
        $ext1 = "http://" ascii nocase
        $ext2 = "https://" ascii nocase
        $resolve = "placeholder" ascii nocase

    condition:
        $api and ($ph1 or $ph2 or $resolve) and ($ext1 or $ext2) and filesize < 128KB
}

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-106498 Backstage Catalog Placeholder Out-of-Scope URL Resolution Attempt"; flow:established,to_server; http.method; content:"POST"; http.uri; content:"/api/catalog"; http.request_body; content:"placeholder"; nocase; http.request_body; pcre:"/\\$text:|\\$url:/Ri"; http.request_body; content:"http"; nocase; reference:cve,2026-106498; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-106498; classtype:attempted-recon; sid:2026106498; rev:1;)

Elastic Detection

sequence by user.name with maxspan=60s
  [ any where event.action in ("catalog.entity.create", "catalog.entity.update", "catalog.location.register")
      and process.name == "backstage" ]
  [ network where network.direction == "egress"
      and not destination.domain in ("github.com", "gitlab.com", "bitbucket.org")
      and process.name == "backstage" and network.bytes_out > 0 ]

Splunk SPL Query

index=backstage sourcetype="backstage:catalog"
(event=entity_create OR event=entity_update OR event=location_register)
| regex entity_spec="(?i)(\$text:|\$url:|placeholder)"
| regex resolved_url="(?i)^https?://"
| where NOT match(resolved_url, "(?i)(github\.com|gitlab\.com|bitbucket\.org)")
| stats count min(_time) as first_seen max(_time) as last_seen values(resolved_url) as targets by user, entity_ref, src_ip
| where count >= 1
| sort -count

Wazuh OSSEC Rule

<group name="backstage,catalog,cve-2026-106498,">
  <rule id="106498" level="10">
    <decoded_as>json</decoded_as>
    <field name="event.action">\.+</field>
    <regex field="entity.spec">(?i)(\$text:|\$url:|placeholder)</regex>
    <regex field="resolved.url">(?i)^https?://</regex>
    <description>CVE-2026-106498: Backstage catalog entity placeholder resolves to out-of-scope URL</description>
    <mitre>
      <id>T1213</id>
    </mitre>
    <group>cve_2026_106498,data_exfiltration,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source). Although the NVD description identifies fixed versions, no vendor patch artifact or advisory has been confirmed by tracked sources. Treat as unpatched until a fix is verified on the vendor's channel.

  1. Immediate mitigations (no code change required):

    • Restrict which users/groups may create, register, or modify catalog entities; apply least privilege to catalog write operations.
    • Disable or constrain external placeholder/directive resolution in the catalog backend so placeholders cannot resolve to arbitrary out-of-scope URLs; enforce an allowlist of permitted source repositories.
    • Audit existing catalog entities for placeholder directives referencing URLs outside their declaring repository and remove any that fall outside approved scope.
    • Apply network egress controls on the catalog backend so it can reach only approved repository/host endpoints, limiting the blast radius of any successful resolution.
  2. Patch / upgrade steps:

    • Upgrade @backstage/plugin-catalog-backend to 3.5.1, 3.6.2, 3.7.2, 3.8.2, or 3.9.1 (or later) per the version named in your release line, as stated in the NVD description.
    • Rebuild and redeploy the Backstage app; verify the installed package version post-upgrade (e.g., inspect the package manifest / lockfile) rather than relying on the deployment label alone.
    • Because patch provenance is unconfirmed by tracked sources, independently validate the fix on the vendor's release channel before declaring remediation complete.
  3. Long-term hardening:

    • Enforce strict URL validation for all placeholder/directive resolution, requiring resolved targets to remain within the entity's own source repository boundary (addresses the root CWE-863 condition).
    • Adopt a repository allowlist and deny-by-default resolution model.
    • Monitor catalog write events and backend egress for anomalous cross-repository resolution attempts (see Detection Guidance).
    • Track the upstream Backstage security advisory for this CVE and subscribe to release notifications to catch the verified fix.

References

Threat actor campaigns / exploit-in-the-wild evidence: None documented. CVE-2026-106498 is not in CISA KEV, has no public PoC, no Nuclei template, and no recorded exploit code at the time of writing.

👁️ SHODAN DORKS (THREAT HUNTING)

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.

product:"Backstage"
title:"Backstage"
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-106498/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.