A critical sandbox escape vulnerability in Grist-Core, a widely deployed programmable alternative to Excel and Google Sheets, has been patched following disclosure.
The flaw, tracked as GHSA-7xvx-8pf2-pv5g with a CVSS score of 9.1, allows attackers to achieve remote code execution through malicious spreadsheet formulas that break out of the platform’s Pyodide WebAssembly sandbox.
Attack Surface and Deployment Risk
Grist-Core functions as a relational spreadsheet platform enabling teams to model business data, build lightweight applications, and automate workflows using Python formulas.
The platform is deployed across government agencies including France’s public sector educational institutions with over 1,000 organizations, and various industry verticals.
Grist operates in both SaaS and self-hosted configurations, positioning it as a data hub with access to customer records, operational metrics, and integration credentials.
| Advisory ID | CVSS Score | Attack Vector | Patch Version | Release Date |
|---|---|---|---|---|
| GHSA-7xvx-8pf2-pv5g | 9.1 | Network (AV:N) | Grist 1.7.9 | January 20, 2026 |
The vulnerability’s blast radius extends beyond traditional self-hosted exploitation scenarios.
In SaaS deployments, a successful sandbox escape translates to remote code execution within the vendor-operated control plane that processes multiple tenants’ workflows, potentially exposing credentials, data access paths, and downstream systems connected to the Grist environment.

Technical Exploitation Methods
Cyera Research Labs identified three distinct escape paths that bypass Grist’s blocklist-style sandbox implementation:
Python Class Hierarchy Traversal: Attackers exploit warnings.catch_warnings to access full builtins, enabling direct import of the os module and execution of os.system() commands. Pyodide restricts top-level builtins, but Python’s object model provides alternate paths to the original builtins object.
Direct C Library Access: The availability of ctypes within the sandbox allows attackers to call ctypes.CDLL(None).system(), which loads exported symbols from the Emscripten runtime process, including the system() function from libc.
Emscripten Runtime Manipulation: The most powerful vector leverages emscripten_run_script_string() to execute JavaScript in the host runtime, providing access to require(‘child_process’) and process.env for complete host compromise.
Grist released version 1.7.9 on January 20, 2026, which relocates Pyodide formula execution under Deno by default.

This architectural change introduces a permission-based mediation layer that blocks sensitive capabilities unless explicitly granted, preventing the demonstrated escape primitives from achieving reliable host-level command execution.
Organizations running Grist should immediately upgrade to version 1.7.9 and verify that the GRIST_PYODIDE_SKIP_DENO flag is not enabled, as this configuration bypasses Deno protection and reintroduces the vulnerability.
Formula execution should be treated as a privileged capability with restricted access in collaborative environments.
Follow us on Google News, LinkedIn, and X to Get Instant Updates and Set GBH as a Preferred Source in Google.





