Er is een kritieke beveiligingsfout onthuld in Grist-Core, een open-source, zelf-gehoste versie van de relationele spreadsheetdatabase van Grist, die zou kunnen leiden tot uitvoering van code op afstand.
De kwetsbaarheid, bijgehouden als CVE-2026-24002 (CVSS-score: 9,1), heeft de codenaam Celbreuk door Cyera Research Labs.
“Eén kwaadaardige formule kan een spreadsheet veranderen in een Remote Code Execution (RCE) bruggenhoofd”, zegt beveiligingsonderzoeker Vladimir Tokarev, die de fout ontdekte. “Dankzij deze sandbox-escape kan een formule-auteur OS-opdrachten uitvoeren of host-runtime JavaScript uitvoeren, waardoor de grens tussen ‘cellogica’ en host-uitvoering wegvalt.”
Cellbreak wordt gecategoriseerd als een geval van ontsnapping uit de Pyodide-sandbox, hetzelfde soort kwetsbaarheid dat onlangs ook n8n trof (CVE-2025-68668, CVSS-score: 9,9, ook bekend als N8scape). Het beveiligingslek is verholpen in versie 1.7.9, uitgebracht op 9 januari 2026.
“Een beveiligingsonderzoek heeft een kwetsbaarheid geïdentificeerd in de ‘pyodide’-sandboxmethode die beschikbaar is in Grist”, aldus de projectbeheerders. “U kunt controleren of u hierdoor getroffen wordt in het sandboxgedeelte van het beheerdersdashboard van uw exemplaar. Als u daar ‘gvisor’ ziet, heeft u hier geen last van. Als u ‘pyodide’ ziet, is het belangrijk om te updaten naar deze versie van Grist of hoger.”
In een notendop is het probleem geworteld in de uitvoering van de Python-formule van Grist, waardoor niet-vertrouwde formules kunnen worden uitgevoerd in Pyodide, een Python-distributie waarmee reguliere Python-code rechtstreeks in een webbrowser kan worden uitgevoerd binnen de grenzen van een WebAssembly (WASM)-sandbox.

Hoewel het idee achter dit denkproces is om ervoor te zorgen dat de Python-formulecode in een geïsoleerde omgeving wordt uitgevoerd, maakt het feit dat Grist een aanpak in bloklijststijl gebruikt het mogelijk om aan de sandbox te ontsnappen en uiteindelijk opdrachtuitvoering op de onderliggende host te bewerkstelligen.
“Het ontwerp van de sandbox maakt het mogelijk om door de klassenhiërarchie van Python te gaan en laat ctypes beschikbaar, die samen toegang bieden tot Emscripten-runtime-functies die nooit bereikbaar zouden moeten zijn vanuit een formulecel”, legt Tokarev uit. “Die combinatie maakt het uitvoeren van hostopdrachten en JavaScript-uitvoering in de hostruntime mogelijk, met praktische resultaten zoals toegang tot het bestandssysteem en geheime blootstelling.”
Volgens Grist kan, wanneer een gebruiker GRIST_SANDBOX_FLAVOR op Pyodide heeft ingesteld en een kwaadaardig document opent, dat document worden gebruikt om willekeurige processen uit te voeren op de server die Grist host. Gewapend met deze mogelijkheid om opdrachten of JavaScript via een formule uit te voeren, kan een aanvaller dit gedrag gebruiken om toegang te krijgen tot databasegegevens en API-sleutels, gevoelige bestanden te lezen en mogelijkheden voor laterale verplaatsing te bieden.
Grist heeft het probleem aangepakt door de uitvoering van de Pyodide-formule standaard onder de Deno JavaScript-runtime te verplaatsen. Het is echter de moeite waard om op te merken dat het risico opnieuw de kop opsteekt als een operator er expliciet voor kiest om GRIST_PYODIDE_SKIP_DENO in te stellen op de waarde ‘1’. Deze instelling moet worden vermeden in scenario’s waarin waarschijnlijk niet-vertrouwde of semi-vertrouwde formules worden uitgevoerd.
Gebruikers wordt aangeraden zo snel mogelijk bij te werken naar de nieuwste versie om potentiële risico’s te beperken. Om het probleem tijdelijk te verhelpen, wordt geadviseerd om de omgevingsvariabele GRIST_SANDBOX_FLAVOR in te stellen op ‘gvisor’.
“Dit weerspiegelt het systeemrisico dat bij andere automatiseringsplatforms wordt aangetroffen: een enkel uitvoeringsoppervlak met geprivilegieerde toegang kan de vertrouwensgrenzen van de organisatie doen instorten wanneer de sandbox faalt”, aldus Tokarev.
“Wanneer de uitvoering van formules afhankelijk is van een tolerante sandbox, kan een enkele ontsnapping ‘datalogica’ in ‘hostuitvoering’ veranderen. De bevindingen van Grist-Core laten zien waarom sandboxing gebaseerd moet zijn op mogelijkheden en diepgaande verdediging, en niet een fragiele blokkeerlijst. De kosten van een mislukking zijn niet alleen maar een bug, het is een inbreuk op het datavlak.”