{"id":"CVE-2026-120308","published":"2026-11-01T13:18:01.670","lastModified":"2026-11-01T13:18:01.670","description":"A Beta9 tenant can attach a volume when deploying a function, endpoint, or task queue. The gateway builds the host path by joining the shared volumes root, the workspace name, and the volume identifier from the stub configuration. Nothing checks that the identifier names a volume that workspace owns. Parent-directory segments in the identifier collapse the joined path to the worker's filesystem root, and the worker bind-mounts that path into the sandbox read-write unless the volume was explicitly marked read-only. A tenant with a workspace token can therefore read and write the worker's files, including other tenants' volumes stored on that machine. Confirmed against gateway 0.1.769 and worker 0.1.745. Fixed in gateway 0.1.776 and worker 0.1.756: volume identifiers and mount paths are validated before a mount is built, including for stubs saved before the check existed, and the gateway rejects a volume that does not exist or is not owned by the workspace.","cvssScore":9.9,"cvssSeverity":"CRITICAL","cvssVector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H","cwes":["CWE-22","CWE-668"],"vendors":[],"products":[],"references":[{"url":"https://github.com/beam-cloud/beta9","tags":[]},{"url":"https://github.com/beam-cloud/beta9/commit/a28bf12cf0007c792a25d8ed282b4e8bf6f30393","tags":[]},{"url":"https://github.com/beam-cloud/beta9/pull/1897","tags":[]},{"url":"https://github.com/beam-cloud/beta9/releases/tag/gateway-0.1.769","tags":[]},{"url":"https://github.com/beam-cloud/beta9/releases/tag/gateway-0.1.776","tags":[]},{"url":"https://github.com/beam-cloud/beta9/releases/tag/worker-0.1.745","tags":[]},{"url":"https://github.com/beam-cloud/beta9/releases/tag/worker-0.1.756","tags":[]}],"exploitRefs":[{"url":"https://github.com/beam-cloud/beta9","tags":[]},{"url":"https://github.com/beam-cloud/beta9/commit/a28bf12cf0007c792a25d8ed282b4e8bf6f30393","tags":[]},{"url":"https://github.com/beam-cloud/beta9/pull/1897","tags":[]},{"url":"https://github.com/beam-cloud/beta9/releases/tag/gateway-0.1.769","tags":[]},{"url":"https://github.com/beam-cloud/beta9/releases/tag/gateway-0.1.776","tags":[]},{"url":"https://github.com/beam-cloud/beta9/releases/tag/worker-0.1.745","tags":[]},{"url":"https://github.com/beam-cloud/beta9/releases/tag/worker-0.1.756","tags":[]}],"hasPoc":true,"ai":{"summary":"A path traversal flaw in the gateway's volume mount logic allows a Beta9 tenant with workspace-level credentials to escape sandbox isolation by providing a malicious volume identifier containing parent-directory segments (e.g., ../../), causing the worker to bind-mount arbitrary host paths—including other tenants' volumes—into the sandbox, enabling full read/write access to sensitive host files.","exploitability":"Exploitation requires only valid workspace-level credentials and the ability to deploy a stub with a crafted volume identifier; no user interaction or complex conditions are needed.","blast_radius":"A compromised tenant can exfiltrate or modify any file on the worker host accessible to the sandbox, including volumes belonging to other tenants, leading to cross-tenant data theft, credential harvesting, or lateral movement within the infrastructure.","remediation":"Upgrade gateway to version 0.1.776 or later and worker to version 0.1.756 or later to apply the validation fix that rejects volume identifiers not owned by the workspace before mounting.","detection":"No reliable host or network indicator is derivable from the published description.","tags":["path-traversal","container-escape","privilege-escalation","multi-tenant","volume-misconfig"],"model":"garnet-coder","analyzedAt":"2026-11-02T09:48:48.234Z"}}