CVE-2026-24002CVE-2026-24002是Grist电子表格软件中的一个严重安全漏洞,CVSS评分高达9.0分(严重级别)。Grist是一款使用Python作为公式语言的电子表格应用,为用户提供了多种在沙箱环境中运行公式的方法,以应对处理不可信电子表格的场景。其中一种方法是使用pyodide来执行Python代码,但问题在于pyodide在Node.js环境下运行时缺乏有效的沙箱隔离机制。攻击者可以通过诱使Grist用户设置环境变量GRIST_SANDBOX_FLAVOR为pyodide,然后让用户打开一个精心构造的恶意文档。当Grist尝试在pyodide沙箱中执行该文档中的Python公式时,恶意代码可以突破沙箱限制,在托管Grist应用的服务器上执行任意系统命令和进程。这意味着攻击者可以完全控制目标服务器,窃取敏感数据、安装后门或对系统进行进一步渗透。该漏洞的严重性在于它不需要任何认证,也不需要用户交互,攻击者只需诱导用户打开恶意文档即可实现远程代码执行。漏洞已于Grist 1.7.9版本中通过在Deno环境下运行pyodide的方式进行了修复。
Grist的沙箱机制旨在隔离不可信的电子表格代码,防止恶意公式对系统造成危害。pyodide是一种在浏览器中运行Python的技术,它基于WebAssembly。当Grist配置为使用pyodide沙箱时,公式会在Node.js环境中通过pyodide执行。然而,pyodide在Node.js环境中并没有实现像浏览器那样的安全隔离,恶意代码可以绕过沙箱限制直接调用Node.js的原生模块和系统API。攻击者可以利用Python的subprocess、os、ctypes等模块执行系统命令,或者通过Node.js的child_process模块在服务器上启动任意进程。漏洞的利用前提是Grist服务器的环境变量GRIST_SANDBOX_FLAVOR被设置为pyodide。修复方案是在Deno运行时环境中执行pyodide,利用Deno的安全沙箱机制来隔离Python代码执行,从而防止沙箱逃逸。临时缓解措施是使用gvisor-based沙箱替代pyodide,即设置GRIST_SANDBOX_FLAVOR环境变量为gvisor。