Grist-Core Vulnerability Enables Remote Code Execution
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.
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.
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.
Security researchers from Calif (Calif.io) demonstrated a working untethered jailbreak on iOS 27.0.1 running on…
Progress Software has released fixes for 12 vulnerabilities in MOVEit Transfer, its managed file transfer…
MITRE released ATT&CK v20 on October 13, 2026. It adds the first Enterprise techniques for…
Google has released Chrome 155 to the Stable channel with 10 security fixes. One is…
A cybersecurity incident at defense contractor BAE Systems has taken offline the systems that send…
Google says its Android scam-detection capabilities now flag more than 5 million suspected scam calls…