Read the docs
TI-2026-66611 Aliases GHSA-9237-rg5p-rhfw

@saltcorn/data: Tenant user role is used for tenant creation role check

Priority LOW 38CWE-863Published · Updated

Key facts

Attack vector
—
Privileges required
—
User interaction
—
Attack complexity
—
Impact type
Security bypass
Confidentiality · integrity · availability
—
Fix status
Fixed

No CVSS vector from any source. Fix status from GitHub. Impact type from CWE-863.

Summary

## Summary When a tenant admin is logged out of the root domain (e.g., saltcorn.com) but logged in to their own tenant space as admin, they can simply append `/tenant/create` to their tenant URL. The system reads the role from the tenant context (admin), and a new tenant is created on the **root domain** (in `PUBLIC SCHEMA > _sc_tenants`), rather than in the tenant's own `_sc_tenants` table. If the same logic applies to other routes, a tenant admin effectively gains admin rights on the root domain. ## PoC A tenant-created subtenant appears under the Saltcorn public schema instead of the tenant's own schema. - Even when `role_id=1` is required for tenant creation on saltcorn.com (only admin can create tenants), existing tenant admins can still create new tenants because their local `role_id:1` is evaluated against the root domain. - Even when `role_to_create_tenant` is set to `0` in the tenant's `_sc_config` schema, or removed entirely, the tenant admin can still create sub-tenants on the root domain — suggesting `role_to_create_tenant` is not being read at all. ## Impact Tenant admins gain unauthorized admin-level access to the root domain. Any authenticated tenant admin can perform privileged operations (e.g., creating tenants) on the root domain by exploiting the role context mismatch.

Why it matters now

Fix Fixed @saltcorn/data (npm): 1.4.4, 1.5.2, 1.6.0-beta.2

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
—@saltcorn/data (npm)before 1.4.41.4.4Patch availableGHSA-9237-rg5p-rhfw
—@saltcorn/data (npm)1.5.0-beta.0 to before 1.5.21.5.2Patch availableGHSA-9237-rg5p-rhfw
—@saltcorn/data (npm)1.6.0-alpha.0 to before 1.6.0-beta.21.6.0-beta.2Patch availableGHSA-9237-rg5p-rhfw
  • @saltcorn/data (npm) Vendor— Affected before 1.4.4 Fixed in 1.4.4 Patch available GHSA-9237-rg5p-rhfw
  • @saltcorn/data (npm) Vendor— Affected 1.5.0-beta.0 to before 1.5.2 Fixed in 1.5.2 Patch available GHSA-9237-rg5p-rhfw
  • @saltcorn/data (npm) Vendor— Affected 1.6.0-alpha.0 to before 1.6.0-beta.2 Fixed in 1.6.0-beta.2 Patch available GHSA-9237-rg5p-rhfw

Remediation

  • Fix · GHSA-9237-rg5p-rhfw @saltcorn/data (npm) Fixed in 1.4.4 Advisory →
  • Fix · GHSA-9237-rg5p-rhfw @saltcorn/data (npm) Fixed in 1.5.2 Advisory →
  • Fix · GHSA-9237-rg5p-rhfw @saltcorn/data (npm) Fixed in 1.6.0-beta.2 Advisory →

Timeline

  1. 2026-10-03 Threatist record created from GHSA-9237-rg5p-rhfw

References

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences