Critical Grist-Core Vulnerability Exposes Systems to Remote Code Execution via Spreadsheet Formulas
A significant security flaw has been identified in Grist-Core, an open-source, self-hosted relational spreadsheet-database platform. This vulnerability, designated as CVE-2026-24002 with a CVSS score of 9.1, has been dubbed Cellbreak by Cyera Research Labs. It enables attackers to execute remote code through malicious spreadsheet formulas, posing a severe risk to systems utilizing this software.
Security researcher Vladimir Tokarev, who uncovered the flaw, explained, One malicious formula can turn a spreadsheet into a Remote Code Execution (RCE) beachhead. This sandbox escape lets a formula author execute OS commands or run host-runtime JavaScript, collapsing the boundary between ‘cell logic’ and host execution.
Understanding the Vulnerability:
The core of this issue lies in Grist’s method of executing Python formulas. Grist employs Pyodide, a Python distribution that allows Python code to run directly in web browsers within a WebAssembly (WASM) sandbox. While this setup is intended to isolate Python code execution, the reliance on a blocklist-style approach has inadvertently permitted sandbox escapes. This loophole allows attackers to execute commands on the host system, leading to potential unauthorized access and control.
Tokarev elaborated on the technical aspects, stating, The sandbox’s design allows traversal through Python’s class hierarchy and leaves ctypes available, which together open access to Emscripten runtime functions that should never be reachable from a formula cell. That combination enables host command execution and JavaScript execution in the host runtime, with practical outcomes like filesystem access and secret exposure.
Implications of the Flaw:
When the environment variable `GRIST_SANDBOX_FLAVOR` is set to Pyodide, opening a malicious document can trigger arbitrary processes on the server hosting Grist. This capability allows attackers to:
– Access database credentials and API keys.
– Read sensitive files.
– Facilitate lateral movement within the network.
Such breaches can lead to significant data leaks, unauthorized data manipulation, and potential system compromises.
Addressing the Vulnerability:
In response to this critical issue, Grist has released version 1.7.9, which was made available on January 9, 2026. This update transitions Pyodide formula execution to operate under the Deno JavaScript runtime by default, enhancing security measures.
However, it’s crucial to note that if the environment variable `GRIST_PYODIDE_SKIP_DENO` is explicitly set to 1, the vulnerability may resurface. Therefore, users are strongly advised to avoid this configuration, especially in environments where untrusted or semi-trusted formulas are executed.
Recommendations for Users:
To mitigate potential risks associated with this vulnerability, users should:
1. Update Immediately: Upgrade to Grist version 1.7.9 or later to benefit from the security enhancements.
2. Verify Sandbox Configuration: Access the Admin Panel of your Grist instance and navigate to the sandboxing section. If gvisor is displayed, your system is not affected. If pyodide is shown, it’s imperative to update to the latest version promptly.
3. Adjust Environment Variables: Set the `GRIST_SANDBOX_FLAVOR` environment variable to gvisor as a temporary mitigation measure.
4. Avoid Risky Configurations: Refrain from setting `GRIST_PYODIDE_SKIP_DENO` to 1 to prevent reintroducing the vulnerability.
Broader Implications:
This vulnerability underscores a systemic risk present in various automation platforms. Tokarev highlighted, This mirrors the systemic risk found in other automation platforms: a single execution surface with privileged access can collapse organizational trust boundaries when its sandbox fails.
He further emphasized the importance of robust sandboxing mechanisms, stating, When formula execution relies on a permissive sandbox, a single escape can turn ‘data logic’ into ‘host execution.’ The Grist-Core findings show why sandboxing needs to be capability-based and defense-in-depth, not a fragile blocklist. The cost of failure is not just a bug—it is a data-plane breach.
Conclusion:
The discovery of the Cellbreak vulnerability in Grist-Core serves as a critical reminder of the importance of secure coding practices and the need for continuous security assessments in software development. Organizations utilizing Grist-Core must act swiftly to implement the recommended updates and configurations to safeguard their systems against potential exploits.