{"id":"GHSA-xv9m-fm3w-8w5x","summary":"October CMS: Safe Mode Sandbox Bypass via Session Store and Forwarded Builder Calls","details":"A vulnerability was identified in the Twig sandbox security policy that allowed a chained bypass when `cms.safe_mode` is enabled. The Laravel session store was exposed to Twig with unrestricted method access, and raw SQL methods reachable through Eloquent's `__call` forwarding were not blocked across the full builder chain. When combined, a backend user with CMS markup editing access could read arbitrary database values via raw SQL expressions and write to the backend authentication session key, forging a backend session as another existing user.\n\n**Scope of impact is narrow.** Safe Mode is a niche feature, primarily used for demo installations and multi-tenant or shared-editor scenarios where untrusted users are deliberately granted access to the CMS markup editor. Standard production deployments do not enable Safe Mode, because under normal October CMS guidance backend access - including markup editing - is restricted to trusted administrators, and direct PHP injection through markup is already possible without Safe Mode in that configuration.\n\n**This issue only affects sites that meet all of the following conditions:**\n- `cms.safe_mode` is enabled (a deliberate opt-in for demos or untrusted-editor scenarios)\n- The site has at least one backend user with CMS markup editing access who is not intended to be trusted as a full administrator\n- The site has at least one existing superuser account whose session the lower-privileged user can impersonate\n\n### Impact\n- Arbitrary read access to database tables, including superuser persistence codes from `backend_users`, via raw SQL expressions reachable through `Eloquent\\Model`, `Eloquent\\Builder`, or any allowlisted class that `__call`-forwards to a query builder\n- Forgery of a backend authentication session by writing to the `admin_auth` session key from a Twig template, allowing a markup editor to impersonate an existing superuser\n- Requires authenticated backend access with CMS markup editing permission AND `cms.safe_mode` enabled\n- Not exploitable when Safe Mode is disabled (direct PHP injection through markup is already possible in that configuration, so Safe Mode is the boundary this issue affects)\n\n### Patches\nThe vulnerability has been patched in v3.7.17 and v4.2.21. The Laravel session store is now wrapped in a proxy that exposes only an explicit subset of read/write methods and rejects writes to reserved session key prefixes (`admin_auth`, `october_auth`, `login_*`, `_token`, and other framework internals). Raw SQL and subquery methods (`selectRaw`, `whereRaw`, `orderByRaw`, `joinSub`, and related) are now blocked on `Query\\Builder`, `Eloquent\\Builder`, and `Eloquent\\Model` so the blocklist is consistent across the `__call` forwarding chain. All sites that enable `cms.safe_mode` are encouraged to upgrade to the latest patched version.\n\n### Workarounds\nIf upgrading immediately is not possible:\n- Restrict CMS markup editing access to fully trusted administrators only - the standard October CMS recommendation for any deployment\n- Note that disabling `cms.safe_mode` is **not** a workaround; Safe Mode is the boundary this issue affects, and disabling it removes the only sandbox between markup editors and the server\n\n### References\n- Reported by r00tn0b0dy","aliases":["CVE-2026-46696"],"modified":"2026-09-14T16:15:09.420479242Z","published":"2026-09-14T16:02:35Z","database_specific":{"github_reviewed":true,"github_reviewed_at":"2026-09-14T16:02:35Z","nvd_published_at":null,"cwe_ids":["CWE-269","CWE-284"],"severity":"LOW"},"references":[{"type":"WEB","url":"https://github.com/octobercms/october/security/advisories/GHSA-xv9m-fm3w-8w5x"},{"type":"PACKAGE","url":"https://github.com/octobercms/october"}],"affected":[{"package":{"name":"october/system","ecosystem":"Packagist","purl":"pkg:composer/october/system"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.7.17"}]}],"versions":["v1.0.319","v1.0.320","v1.0.321","v1.0.322","v1.0.323","v1.0.324","v1.0.325","v1.0.326","v1.0.327","v1.0.328","v1.0.329","v1.0.330","v1.0.331","v1.0.332","v1.0.333","v1.0.334","v1.0.335","v1.0.336","v1.0.337","v1.0.338","v1.0.339","v1.0.340","v1.0.341","v1.0.342","v1.0.343","v1.0.344","v1.0.345","v1.0.346","v1.0.347","v1.0.348","v1.0.349","v1.0.350","v1.0.351","v1.0.352","v1.0.353","v1.0.354","v1.0.355","v1.0.356","v1.0.357","v1.0.358","v1.0.359","v1.0.360","v1.0.361","v1.0.362","v1.0.363","v1.0.364","v1.0.365","v1.0.366","v1.0.367","v1.0.368","v1.0.369","v1.0.370","v1.0.371","v1.0.372","v1.0.373","v1.0.374","v1.0.375","v1.0.376","v1.0.377","v1.0.378","v1.0.379","v1.0.380","v1.0.381","v1.0.382","v1.0.383","v1.0.384","v1.0.385","v1.0.386","v1.0.387","v1.0.388","v1.0.389","v1.0.390","v1.0.391","v1.0.392","v1.0.393","v1.0.394","v1.0.395","v1.0.396","v1.0.397","v1.0.398","v1.0.399","v1.0.400","v1.0.401","v1.0.402","v1.0.403","v1.0.404","v1.0.405","v1.0.406","v1.0.407","v1.0.408","v1.0.409","v1.0.410","v1.0.411","v1.0.412","v1.0.413","v1.0.414","v1.0.415","v1.0.416","v1.0.417","v1.0.418","v1.0.419","v1.0.420","v1.0.421","v1.0.422","v1.0.423","v1.0.424","v1.0.425","v1.0.426","v1.0.427","v1.0.428","v1.0.429","v1.0.430","v1.0.431","v1.0.432","v1.0.433","v1.0.434","v1.0.435","v1.0.436","v1.0.437","v1.0.438","v1.0.439","v1.0.440","v1.0.441","v1.0.442","v1.0.443","v1.0.444","v1.0.445","v1.0.446","v1.0.447","v1.0.448","v1.0.449","v1.0.450","v1.0.451","v1.0.452","v1.0.453","v1.0.454","v1.0.455","v1.0.456","v1.0.457","v1.0.458","v1.0.459","v1.0.460","v1.0.461","v1.0.462","v1.0.463","v1.0.464","v1.0.465","v1.0.466","v1.0.467","v1.0.468","v1.0.469","v1.0.470","v1.0.471","v1.0.472","v1.0.473","v1.0.474","v1.0.475","v1.0.476","v1.1.0","v1.1.1","v1.1.10","v1.1.11","v1.1.12","v1.1.2","v1.1.3","v1.1.4","v1.1.5","v1.1.6","v1.1.9"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-xv9m-fm3w-8w5x/GHSA-xv9m-fm3w-8w5x.json"}},{"package":{"name":"october/system","ecosystem":"Packagist","purl":"pkg:composer/october/system"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"4.0.0"},{"fixed":"4.2.23"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-xv9m-fm3w-8w5x/GHSA-xv9m-fm3w-8w5x.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:L/I:L/A:N"}]}