CVE-2026-24047

6.3 MEDIUM

📋 TL;DR

This vulnerability in Backstage's @backstage/backend-plugin-api allows attackers to bypass path traversal protections via symlink chains and dangling symlinks. It affects Backstage deployments using Scaffolder actions or other backend components that rely on the resolveSafeChildPath function. Attackers could potentially write files outside designated directories.

💻 Affected Systems

Products:
  • Backstage
  • @backstage/backend-plugin-api
  • @backstage/cli-common
Versions: All versions prior to @backstage/backend-plugin-api 0.1.17
Operating Systems: All operating systems supporting symlinks
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects deployments using Scaffolder actions or backend components that utilize the resolveSafeChildPath function

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Arbitrary file write leading to remote code execution, data exfiltration, or complete system compromise

🟠

Likely Case

Unauthorized file writes to sensitive locations, potentially enabling privilege escalation or data manipulation

🟢

If Mitigated

Limited impact with proper containerization and access controls, potentially only file writes within restricted scope

🌐 Internet-Facing: MEDIUM - Requires attacker to have access to create templates or execute Scaffolder actions
🏢 Internal Only: MEDIUM - Internal attackers with template creation privileges could exploit this vulnerability

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Exploitation requires ability to create or modify templates that use Scaffolder actions, and knowledge of symlink manipulation techniques

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: @backstage/backend-plugin-api version 0.1.17 or later

Vendor Advisory: https://github.com/backstage/backstage/security/advisories/GHSA-2p49-45hj-7mc9

Restart Required: Yes

Instructions:

1. Update package.json to require @backstage/backend-plugin-api version 0.1.17 or later. 2. Run npm update or yarn upgrade. 3. Restart all Backstage services. 4. Verify the update was successful.

🔧 Temporary Workarounds

Containerization with limited filesystem access

all

Run Backstage in a container with restricted filesystem permissions and read-only mounts where possible

docker run -v /safe/path:/app:ro backstage-image

Restrict template creation

all

Limit template creation and modification to trusted administrators only

🧯 If You Can't Patch

  • Implement strict access controls on template creation and modification
  • Deploy Backstage in containerized environments with minimal filesystem access and read-only volumes

🔍 How to Verify

Check if Vulnerable:

Check package.json for @backstage/backend-plugin-api version. If version is less than 0.1.17, the system is vulnerable.

Check Version:

npm list @backstage/backend-plugin-api or check package.json directly

Verify Fix Applied:

Verify @backstage/backend-plugin-api version is 0.1.17 or higher in package.json and node_modules

📡 Detection & Monitoring

Log Indicators:

  • Unusual file write operations outside expected directories
  • Multiple symlink creation events in short timeframes
  • Failed path validation warnings in Backstage logs

Network Indicators:

  • Unusual template uploads or modifications from unexpected sources

SIEM Query:

source="backstage" AND ("symlink" OR "path traversal" OR "resolveSafeChildPath")

🔗 References

📤 Share & Export