🔍 CVE-2026-24002

9.0
CVSS Score
CRITICAL
2026-01-22
2026-01-22 03:15
✅ 완료

🇰🇷 한글 설명

Grist 스프레드시트 소프트웨어에서 사용되는 Python 공식을 실행하는 메서드 중 하나인 pyodide에서 샌드박스 장벽이 없을 경우, 악의적인 문서를 여는 사용자에게서 임의의 프로세스를 서버에서 실행할 수 있는 취약점이 발견되었습니다.

💡 쉬운 설명

Grist 스프레드시트 소프트웨어에서 악의적인 문서를 여는 경우, 서버에서 임의의 프로세스를 실행할 수 있는 취약점이 있습니다. 이는 pyodide에서 샌드박스 장벽이 없기 때문에 발생합니다. Grist 버전 1.7.9 이상에서 pyodide를 deno에서 실행하여 문제를 해결했습니다.

🇺🇸 원문 (English)

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`.

📍 영향받는 시스템

Grist 버전 1.7.9 이전

⚔️ 공격 벡터

악의적인 문서를 여는 사용자

🛡️ 대응 방법

Grist 버전 1.7.9 이상으로 업데이트하거나, gvisor-based 샌드박스를 사용하도록 설정합니다. 설정 방법은 GRIST_SANDBOX_FLAVOR를 gvisor로 설정하는 것입니다.

🔧 검증 코드

로컬 Linux PC에서 Grist 버전을 확인하여 취약점 여부를 점검합니다. Python 3.x 이상이 설치되어 있어야 하며, Grist가 설치되어 있어야 합니다. 코드를 실행하면 Grist 버전을 확인하여 취약점 여부를 판단합니다.

Shell / Script
import subprocess
result = subprocess.run(['grist', '--version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
version = result.stdout.decode('utf-8').strip()
if version < '1.7.9':
    print({"result": "취약", "reason": "Grist 버전이 1.7.9 미만"})
else:
    print({"result": "양호", "reason": "Grist 버전이 1.7.9 이상"})

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H

💻 영향받는 소프트웨어

Python