Grist 스프레드시트 Pyodide 샌드박스 우회 원격 코드 실행(RCE) 취약점 (CVE-2026-24002)
실무자 핵심 요약 (Executive Summary)
SECOPS ASSESSMENTGrist 1.7.9 미만 버전에서 GRIST_SANDBOX_FLAVOR 환경 변수를 pyodide로 설정하여 운영 중인 자체 호스팅(Self-managed) 인프라
공격자가 악성 수식이 포함된 스프레드시트 문서를 업로드하고 사용자가 이를 열도록 유도할 경우, Grist 호스트 서버에서 임의의 시스템 프로세스를 실행할 수 있습니다
Grist 버전을 1.7.9 이상으로 즉시 업그레이드하거나, 환경 변수 설정을 gvisor로 변경하여 강력한 커널 수준 격리를 적용하십시오
영향받는 제품 및 버전 범위
권장 패치 및 임시 완화(Workaround) 가이드
패치 및 우회 명령어1. 공식 보안 패치 및 버전 업그레이드 명령어
Grist 개발사에서는 1.7.9 버전부터 Pyodide를 Node.js 대신 보안 경계가 강화된 Deno 런타임 상에서 실행하도록 수정하여 본 취약점을 해결했습니다. 아래 명령어를 사용하여 최신 안전 버전으로 업그레이드하십시오.
# Docker 환경에서 Grist 컨테이너 최신 버전(1.7.9 이상)으로 업데이트
docker pull gristlabs/grist:1.7.9
# 기존 컨테이너 중지 및 삭제 후 새 버전으로 재시작
docker stop grist-container
docker rm grist-container
# Deno 기반의 안전한 Pyodide 환경으로 컨테이너 실행
docker run -d -p 8484:8484 \
--name grist-container \
-e GRIST_SANDBOX_FLAVOR='pyodide' \
gristlabs/grist:1.7.92. 패치 전 임시 완화(Workaround) 및 접근 제어 설정
즉각적인 업그레이드가 어려운 경우, 샌드박스 엔진 설정을 커널 수준 격리를 제공하는 gvisor로 변경하여 취약한 Pyodide-Node 구조를 우회해야 합니다.
# Grist 실행 환경 변수 파일(.env) 또는 Docker 실행 옵션에서 샌드박스 플레이버를 gvisor로 변경
export GRIST_SANDBOX_FLAVOR='gvisor'
# Docker Compose를 사용하는 경우 docker-compose.yml 수정 예시
# environment:
# - GRIST_SANDBOX_FLAVOR=gvisor3. 침해 흔적(IoC) 및 로그·버전 점검 스크립트
현재 운영 중인 Grist 서버의 설정 상태를 점검하고, 비정상적인 하위 프로세스 실행 흔적이 있는지 확인하는 스크립트입니다.
# 1. 현재 설정된 Grist 샌드박스 환경 변수 확인
echo '[*] Checking Grist Sandbox Flavor...'
env | grep GRIST_SANDBOX_FLAVOR
# 2. Grist 컨테이너 내부에서 비정상적인 프로세스(예: sh, bash, curl 등)가 실행 중인지 모니터링
echo '[*] Auditing running processes in Grist container...'
docker exec -it grist-container ps auxf코드 수정 전에도 가상 패치(Virtual Patching)로 웹 공격을 즉시 차단하세요
서버 재시작이나 긴급 패치가 어려운 운영 환경이라면 클라우드 WAF 관리형 룰셋을 활성화하여 SQLi, RCE, XSS 익스플로잇 페이로드를 엣지에서 1분 만에 차단할 수 있습니다.
취약점 발생 원리 및 공격 메커니즘
1. 취약점 개요 및 발생 원인 (Root Cause)
본 취약점(CVE-2026-24002)은 오픈소스 협업형 스프레드시트 플랫폼인 Grist에서 발생하는 원격 코드 실행(RCE) 및 샌드박스 우회 취약점입니다. Grist는 스프레드시트 수식 엔진으로 Python을 사용하며, 신뢰할 수 없는 문서 내 수식을 안전하게 실행하기 위해 여러 격리(Sandbox) 메커니즘을 제공합니다. 이 중 웹어셈블리(Wasm) 기반의 pyodide를 Node.js 환경에서 실행하는 방식(GRIST_SANDBOX_FLAVOR=pyodide)은 Node.js의 런타임 특성상 호스트 시스템과의 실질적인 보안 경계(Sandbox Barrier)를 제공하지 못하는 구조적 결함이 존재합니다. 이로 인해 수식 실행 엔진이 호스트 OS의 시스템 자원에 직접 접근할 수 있는 루트 커즈가 발생합니다.
2. 공격 메커니즘 및 익스플로잇 시나리오
공격자는 악성 Python 코드나 시스템 명령 실행 트리거가 포함된 특수 제작된 Grist 스프레드시트 파일(.grist)을 생성합니다. 이후 해당 파일을 대상 Grist 서버에 업로드하거나 공유 기능을 통해 피해자가 이를 열람하도록 유도합니다. 피해자가 문서를 여는 순간, Grist 백엔드는 수식 계산을 위해 Pyodide 샌드박스를 구동합니다. 이때 Node.js 상에서 실행되는 Pyodide는 격리 장벽이 없으므로, 수식 내에 삽입된 악성 페이로드가 Node.js의 child_process 모듈 등에 접근하여 호스트 OS의 쉘 명령어를 직접 호출하게 됩니다. 결과적으로 공격자는 피해자 세션의 권한으로 서버 내부에서 임의의 프로세스를 실행할 수 있게 됩니다.
3. 비즈니스 및 인프라 파급 영향
본 취약점은 CVSS 9.6의 심각한(Critical) 등급으로 평가되었습니다. 공격 성공 시, 공격자는 Grist가 구동 중인 도커 컨테이너 또는 호스트 서버의 완전한 제어권을 획득할 수 있습니다. 이는 데이터베이스 내 저장된 민감한 비즈니스 데이터의 유출, 랜섬웨어 감염, 내부 사설 네트워크로의 횡적 이동(Lateral Movement)으로 이어질 수 있어 기업 인프라 전반에 치명적인 피해를 초래할 수 있습니다.
공식 보안 권고문 및 참조 링크
Grist is spreadsheet software using Python as its formula language. Grist offers several methods for running those formulas in a sandbox, for cases where the user may be working with untrusted spreadsheets. One such method runs them in pyodide, but pyodide on node does not have a useful sandbox barrier. If a user of Grist sets `GRIST_SANDBOX_FLAVOR` to `pyodide` and opens a malicious document, that document could run arbitrary processes on the server hosting Grist. The problem has been addressed in Grist version 1.7.9 and up, by running pyodide under deno. As a workaround, a user can use the gvisor-based sandbox by setting `GRIST_SANDBOX_FLAVOR` to `gvisor`.
자주 묻는 실무 질문 (FAQ — CVE-2026-24002)
FAQQ1. CVE-2026-24002 취약점의 위험도와 실제 악용 가능성은 어느 정도입니까?
CVE-2026-24002의 기본 점수는 CVSS 9.6 (CRITICAL)입니다. EPSS(실제 악용 확률)는 FIRST.org 집계 대기 중입니다. 외부 네트워크 노출 여부에 따라 선제적인 패치 및 접근 제어가 권장됩니다.
Q2. CVE-2026-24002에 영향을 받는 벤더와 제품은 무엇입니까?
주요 영향 벤더는 gristlabs이며, 대상 컴포넌트는 grist-core, grist입니다. 상세 영향 범위: Grist 1.7.9 미만 버전 중 GRIST_SANDBOX_FLAVOR 환경 변수가 pyodide로 설정된 모든 자체 호스팅 환경
Q3. 서버 재기동이나 정규 패치 전 즉시 적용할 수 있는 완화 조치(Workaround)는 무엇입니까?
[권장 조치] Grist 버전을 1.7.9 이상으로 즉시 업그레이드하거나, 환경 변수 설정을 gvisor로 변경하여 강력한 커널 수준 격리를 적용하십시오 본문의 패치 및 우회 명령어 섹션과 자가 점검 체크리스트를 참고하여 외부 노출 포트를 차단하거나 WAF 탐지 규칙을 선적용하십시오.
CVE-2026-24002 사내 보안 패치 공지문 · CISO 경영진 보고서 초안 자동 생성
클릭 한 번으로 사내 이메일·노션·결재 문서에 바로 붙여넣을 수 있는 공식 보고서 양식을 생성합니다.
🔗 함께 점검해야 할 동일 벤더·스택 연관 취약점 (gristlabs)
동일 카테고리 전체 보기 →Ahsay AhsayCBS Replication Receiver 원격 코드 실행(RCE) 취약점 보안 권고 (CVE-2026-105134)
[영향 대상] AhsayCBS 9.15.2.69 및 10.3.4.44 이하 버전의 Replication Receiver 구성 요소
Adobe Commerce (Magento) 서버 측 템플릿 주입(SSTI) 기반 원격 코드 실행 취약점 (CVE-2026-75650)
[영향 대상] Adobe Commerce 및 Magento Open Source 전 버전 (보안 패치 미적용 시)
Metabase /reset_password 엔드포인트 미인증 SQL 인젝션 및 관리자 권한 탈취 취약점 (CVE-2026-72898)
[영향 대상] Metabase 오픈소스 및 엔터프라이즈 버전 중 패치가 적용되지 않은 활성 인스턴스
WSO2 JWT 인증 우회 및 관리자 권한 탈취 취약점 (CVE-2026-5430) 보안 권고
[영향 대상] WSO2 Identity Server, API Manager 등 JWT 인증 메커니즘을 사용하는 주요 제품군
일간 취약점 브리핑 및 긴급 Zero-Day 경보 구독
보안 실무자와 인프라·백엔드 엔지니어를 위해 매일 아침 주요 취약점과 패치 우선순위를 요약해 발송합니다.