تم الكشف عن ثغرة أمنية حرجة في Grist-Core، وهو الإصدار مفتوح المصدر والمستضاف ذاتيًا من Grist، وهو برنامج جداول بيانات وعلاقات، والتي قد تؤدي إلى تنفيذ تعليمات برمجية عن بُعد.
تم رصد الثغرة، والتي تحمل المعرف CVE-2026-24002، وتصنيف خطورة 9.1، وأطلقت عليها مختبرات Cyera Research اسم “Cellbreak”.
قال الباحث الأمني فلاديمير توكاريف، مكتشف الخلل: “يمكن لصيغة خبيثة واحدة أن تحول جدول بيانات إلى نقطة انطلاق لتنفيذ التعليمات البرمجية عن بعد (RCE). يتيح هذا الهروب من البيئة المعزولة (sandbox) لمؤلف الصيغة تنفيذ أوامر نظام التشغيل أو تشغيل JavaScript للمضيف، مما ينهار الحد الفاصل بين ‘منطق الخلية’ وتنفيذ المضيف”.
ثغرة Cellbreak في Grist-Core
تُصنف ثغرة Cellbreak على أنها حالة هروب من بيئة Pyodide المعزولة، وهو نفس نوع الثغرة الذي أثر مؤخرًا على n8n (CVE-2025-68668، تصنيف 9.9، والمعروفة باسم N8scape). وقد تم معالجة هذه الثغرة في الإصدار 1.7.9، الذي صدر في 9 يناير 2026.
ذكر مطورو Grist: “حدد مراجعة أمنية ثغرة في طريقة العزل ‘pyodide’ المتوفرة في Grist. يمكنك التحقق مما إذا كنت متأثرًا في قسم العزل بلوحة تحكم المسؤول (Admin Panel) في نسختك. إذا رأيت ‘gvisor’ هناك، فأنت غير متأثر. أما إذا رأيت ‘pyodide’، فمن الضروري التحديث إلى هذا الإصدار من Grist أو أحدث”.
بشكل أساسي، تكمن المشكلة في تنفيذ صيغ Python في Grist، مما يسمح بتشغيل صيغ غير موثوق بها داخل Pyodide، وهو توزيع Python يسمح بتشغيل تعليمات Python البرمجية العادية مباشرة في متصفح الويب ضمن حدود بيئة WebAssembly (WASM) المعزولة.
آلية عمل الثغرة
بينما تم تصميم هذا النهج لضمان تشغيل رمز صيغ Python في بيئة معزولة، فإن استخدام Grist لنهج يعتمد على قائمة محظورة (blocklist) يجعل من الممكن الهروب من البيئة المعزولة وتحقيق تنفيذ الأوامر على المضيف الأساسي.
وأوضح توكاريف: “يسمح تصميم البيئة المعزولة بالتنقل عبر تسلسل فئات Python ويترك ctypes متاحة، مما يفتح الوصول إلى وظائف وقت تشغيل Emscripten التي لا ينبغي الوصول إليها أبدًا من خلية الصيغة. هذا المزيج يتيح تنفيذ أوامر المضيف وتشغيل JavaScript في وقت تشغيل المضيف، مع نتائج عملية مثل الوصول إلى نظام الملفات وتعريض الأسرار”.
وفقًا لـ Grist، عندما يقوم المستخدم بتعيين GRIST_SANDBOX_FLAVOR إلى Pyodide ويفتح مستندًا خبيثًا، يمكن استخدام هذا المستند لتشغيل عمليات عشوائية على الخادم الذي يستضيف Grist. بفضل هذه القدرة على تنفيذ الأوامر أو JavaScript عبر صيغة، يمكن للمهاجم استغلال هذا السلوك للوصول إلى بيانات اعتماد قواعد البيانات ومفاتيح API، وقراءة الملفات الحساسة، وتوفير فرص للحركة الجانبية عبر الشبكة.
معالجة الثغرة والتوصيات
قامت Grist بمعالجة المشكلة عن طريق نقل تنفيذ صيغ Pyodide افتراضيًا تحت وقت تشغيل JavaScript Deno. ومع ذلك، تجدر الإشارة إلى أن الخطر يعود مجددًا إذا اختار المشغل بشكل صريح تعيين GRIST_PYODIDE_SKIP_DENO إلى القيمة “1”. يجب تجنب هذا الإعداد في السيناريوهات التي يحتمل فيها تشغيل صيغ غير موثوق بها أو شبه موثوق بها.
يوصى المستخدمون بالتحديث إلى أحدث إصدار في أقرب وقت ممكن للتخفيف من المخاطر المحتملة. للتخفيف المؤقت من المشكلة، يُنصح بتعيين متغير البيئة GRIST_SANDBOX_FLAVOR إلى “gvisor”.
قال توكاريف: “يعكس هذا الخطر المنهجي الموجود في منصات الأتمتة الأخرى: سطح تنفيذ واحد يتمتع بالوصول المتميز يمكن أن ينهار حدود الثقة التنظيمية عندما تفشل بيئته المعزولة”.
“عندما يعتمد تنفيذ الصيغة على بيئة معزولة متساهلة، يمكن لهروب واحد أن يحول ‘منطق البيانات’ إلى ‘تنفيذ المضيف’. تظهر اكتشافات Grist-Core سبب ضرورة أن تكون العزل مبنيًا على القدرات (capability-based) وأن يعتمد على الدفاع المتعدد الطبقات (defense-in-depth)، وليس مجرد قائمة حظر هشة. تكلفة الفشل ليست مجرد خطأ، بل هي اختراق لطبقة البيانات”.

