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

CVE-2026-106494

CVE-2026-106494 Path Traversal 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.29%
👁️
0.29% probability
7.2× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
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 4.4
AV: N Attack Vector Network
AC: H Attack Complexity High
PR: H Privileges Required High
UI: N User Interaction None
S: U Scope Unchanged
C: N Confidentiality None
I: H Integrity High
A: N Availability None
4.4
THREAT LEVEL
INTEL SOURCES NVD EPSS HOW WE SCORE →
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-106494 is an improper input validation vulnerability (classified under CWE-22) affecting the @backstage/backend-defaults package in versions prior to 0.17.8. The flaw resides in cloud storage URL readers, where an attacker possessing write access to a cloud storage bucket consumed by Backstage can craft object names that collide with protected files in the output directory. In specific deployment configurations, successful exploitation enables content injection. The vulnerability carries a CVSS v3.1 base score of 4.4 (Medium severity) and no public proof-of-concept, exploit code, or Nuclei template is currently available.

⚡ 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 an open framework for building developer portals, and the @backstage/backend-defaults package supplies default backend service implementations, including URL readers that fetch content from external systems. The affected component is the cloud storage URL reader family. These readers retrieve objects from cloud storage buckets (for example, S3-compatible object stores) and materialize or process them within a configured output directory.

The vulnerability is a path traversal / object-name collision issue mapped to CWE-22 (Improper Limitation of a Pathname to a Restricted Directory, commonly known as Path Traversal). Per the NVD description, the underlying weakness is "improper input validation in cloud storage url readers." The specific mechanism is that object names taken from a cloud storage bucket are not sufficiently validated or normalized before being used in a context where they can resolve to, or collide with, protected file locations in the output directory.

The critical precondition: an attacker must already possess write access to a cloud storage bucket that the Backstage deployment reads from. This explains the CVSS vector's elevated privilege requirement (PR:H) and high attack complexity (AC:H), along with the network attack vector (AV:N) and no user interaction (UI:N). The confidentiality impact is None (C:N), while integrity impact is High (I:H) because the primary outcome is unauthorized modification/injection of content rather than disclosure. Availability is unaffected (A:N).

Because the description is deliberately sparse regarding exact internal implementation, the following points are NOT asserted and should not be treated as confirmed:

  • The exact function names, classes, or modules involved in the URL reader logic.
  • The precise string-matching or normalization algorithm used to detect collisions.
  • The specific cloud storage provider(s) affected, beyond "cloud storage url readers" generically.

What can be stated with confidence from the description: the root cause is insufficient validation of attacker-controllable object names, the exploit primitive is a name collision with protected output-directory files, and the resulting impact class is content injection in "certain deployment configurations." The "certain deployment configurations" qualifier indicates the flaw is not universally exploitable and depends on how the reader is wired into the portal's build/output pipeline.

The fix is delivered in version 0.17.8, consistent with an input-validation hardening change. No advisory detail is available describing the exact patch delta.

Exploitation Scenarios

No public PoC is available; the attack chain below is inferred strictly from the NVD description and the CWE-22 vulnerability class.

  1. Reconnaissance / target identification. The attacker identifies a Backstage deployment that uses the @backstage/backend-defaults cloud storage URL readers and determines which cloud storage bucket(s) the deployment consumes. Because exploitation requires bucket write access (PR:H), the attacker prioritizes environments where they already hold, or can obtain, write permissions on that bucket — for example, shared or multi-tenant storage buckets, compromised CI/CD credentials, or over-permissive IAM policies.

  2. Triggering the flaw class (improper input validation / path traversal). With write access to the bucket, the attacker uploads objects whose names are crafted to collide with files that normally reside in the protected output directory. The vulnerable reader fails to adequately validate/normalize these attacker-supplied object names, so the crafted names are not rejected or sandboxed before being resolved against the output directory.

  3. Payload/execution (vulnerability-class level). The attack does not execute code; it abuses improper input validation to cause an attacker-controlled object name to map onto a protected file path. Upon the reader processing the bucket contents (in deployment configurations where this collision is reachable), the attacker-influenced object is positioned to overwrite or shadow the protected output file, resulting in content injection. No specific function calls, endpoints, or parameter names are claimed here because the advisory does not disclose them.

  4. Post-exploitation impact. The injected content becomes part of the portal's output. Depending on what the collided protected file represents, this could mean tampered generated artifacts or served content within the developer portal. CVSS reflects High integrity impact and no confidentiality/availability impact, so the attacker's gain is the ability to alter trusted content rather than to steal data or disrupt service. Because the advisory limits impact to "certain deployment configurations," real-world exploitation depends on whether a given deployment's reader-to-output pipeline is susceptible to the collision.

Impact Assessment

The CVSS v3.1 base score is 4.4 (Medium), with vector CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:H/A:N. Subscore interpretation:

  • AV:N (Network): the bucket/reader interaction is network-reachable.
  • AC:H (High): exploitation depends on a favorable, non-trivial configuration and a crafted collision.
  • PR:H (High): the attacker must already hold privileged write access to the relevant cloud storage bucket.
  • UI:N: no victim interaction required.
  • S:U (Unchanged): impact is confined to the vulnerable component's security scope.
  • C:N / I:H / A:N: no confidentiality impact, high integrity impact (content injection), no availability impact.

Business impact: The primary risk is integrity of content served or generated by affected developer portals built on Backstage. Because Backstage portals frequently aggregate organizational tooling, documentation, and service metadata, injected content could mislead developers or downstream automation that trusts portal output. Blast radius: limited to organizations running vulnerable @backstage/backend-defaults (< 0.17.8) and using cloud storage URL readers where an attacker can write to the consumed bucket and where the output-directory collision path is reachable. CISA KEV status is NO; no known in-the-wild exploitation is reported; EPSS is not yet scored by FIRST.org.

Detection Guidance

Sigma Rule

title: Suspicious Object Name Collision in Backstage Cloud Storage URL Reader Output
id: 7b2c9f10-4a3e-4d61-9c2a-106494aaaa
status: experimental
description: Detects file creation/overwrite events in a Backstage output directory with object names resembling protected filenames, indicative of CVE-2026-106494 content-injection attempts.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2026-106494
logsource:
  category: file_event
  product: linux
detection:
  selection_path:
    TargetFilename|contains:
      - '/backstage/'
      - 'output/'
  selection_suspicious:
    TargetFilename|endswith:
      - '.tmp'
    # object-name collisions with protected output files
  filter_expected:
    Image|contains:
      - '/usr/bin/node'
  condition: selection_path and selection_suspicious
fields:
  - TargetFilename
  - Image
  - User
falsepositives:
  - Legitimate Backstage build/write operations writing temporary artifacts
level: medium
tags:
  - attack.t1190
  - cve.2026-106494

YARA Rule

rule CVE_2026_106494_Backstage_ObjectNameCollision
{
    meta:
        description = "Detects object-name patterns consistent with cloud storage collision attempts against Backstage URL readers (CVE-2026-106494)"
        author = "valtersit.com"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-106494"
        date = "2026-01-01"
        severity = "medium"

    strings:
        // Traversal / normalization-abuse markers in object names
        $t1 = "../" ascii nocase
        $t2 = "..\\" ascii nocase
        $t3 = "%2e%2e" ascii nocase
        // Backstage package context appearing alongside traversal tokens
        $p1 = "backend-defaults" ascii nocase
        $p2 = "backstage" ascii nocase

    condition:
        any of ($t*) and any of ($p*)
}

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2026-106494 Backstage cloud storage URL reader path traversal attempt"; flow:established,to_server; http.uri; content:".."; content:"%2e%2e"; nocase; pcre:"/(\.\.\/|%2e%2e)/i"; reference:cve,2026-106494; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-106494; classtype:attempted-user; sid:2026106494; rev:1;)

Elastic Detection

file where process.name == "node" and
  file.path : ("*backstage*" or "*output*") and
  file.name : ("*.tmp" or "*..*")

Splunk SPL Query

index=endpoint OR index=backstage
(sourcetype=fs_notifications OR sourcetype=file_events)
| search (file_path="*backstage*" OR file_path="*output*")
| eval sus = if(match(file_path, "\.\.|%2e%2e"), 1, 0)
| where sus=1
| stats count min(_time) as first_seen max(_time) as last_seen by host, user, file_path, process_name
| convert ctime(first_seen) ctime(last_seen)
| sort - count

Wazuh OSSEC Rule

<group name="backstage,cve-2026-106494,">
  <rule id="106494" level="10">
    <decoded_as>json</decoded_as>
    <field name="file_path">\.\.|%2e%2e</field>
    <field name="file_path">output|backstage</field>
    <description>CVE-2026-106494: Possible Backstage cloud storage URL reader object-name collision / content injection attempt</description>
    <mitre>
      <id>T1190</id>
    </mitre>
    <group>attack,file_event,</group>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source). The NVD description states the issue is fixed in @backstage/backend-defaults version 0.17.8, but no patch source, commit, or advisory delta has been confirmed by tracked sources; treat remediation as upgrade-driven and verify against the vendor's official release notes before relying on it.

1) Immediate mitigations

  • Restrict write access to any cloud storage bucket consumed by Backstage URL readers. Since exploitation requires bucket write access (PR:H), tightening IAM/ACL policies to least privilege significantly reduces exposure.
  • Audit bucket contents and object names for entries containing path-traversal sequences (e.g., ../, encoded variants) or names resembling protected output-directory filenames.
  • Monitor and log object creation/modification in consumed buckets; alert on unexpected writers.
  • Review deployment configuration to determine whether the output-directory collision path is reachable ("certain deployment configurations") and reduce exposure where feasible (e.g., isolate output directories).

2) Patch / upgrade steps

  • Upgrade @backstage/backend-defaults to version 0.17.8 or later as referenced in the advisory.
  • Rebuild and redeploy the Backstage backend, then confirm the installed version (e.g., via yarn why @backstage/backend-defaults or lockfile inspection).
  • Re-validate cloud storage reader configurations after upgrade.

3) Long-term hardening

  • Enforce strict normalization and allow-listing of object names at ingestion boundaries; reject traversal sequences and collision-prone names.
  • Adopt immutable or write-once bucket policies and separate read/write credentials per service.
  • Integrate dependency scanning for Backstage packages and track advisories for the @backstage/* ecosystem.
  • Apply least-privilege IAM and continuous storage access auditing to detect unauthorized writes.

References

No known threat actor campaigns or exploit-in-the-wild evidence are associated with CVE-2026-106494 at this time. No public PoC, exploit code, or Nuclei template exists per available data.

👁️ 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-106494/ · 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.