Marimo 사전 인증 RCE 대응과 AI 워크스테이션 보안 경계

CVE-2026-39987의 Marimo 사전 인증 RCE 영향과 노트북 플랫폼 노출, AI 워크스테이션 격리·패치 정책을 정리한다.

2026-08-14 · 최초 발행 2026-04-18

Marimo 0.20.4 이하에는 CVSS 9.3의 사전 인증 원격 코드 실행 취약점 CVE-2026-39987이 존재한다. 공개 뒤 10시간 안에 자동화된 익스플로잇이 실 환경에서 관측됐다. 노출된 노트북 서버는 코드 실행 지점에 그치지 않는다. 데이터 과학자 워크스테이션에 모인 학습 데이터, 모델 자산, 클라우드 자격 증명까지 공격 범위에 들어간다.

영향을 받는 버전과 대응 범위는 다음과 같다.

  • CVE 식별자: CVE-2026-39987
  • 취약점 유형: Pre-Authentication Remote Code Execution
  • CVSS v3.1: 9.3 (Critical)
  • 영향 버전: Marimo 0.20.4 이하 전 버전
  • 패치 버전: Marimo 0.20.5+
  • 공격 상태: 공개 10시간 내 자동화 익스플로잇 관측
  • 공격 벡터: 노출된 Marimo 서버의 WebSocket 엔드포인트 조작
  • 근본 원인: 세션 초기화 경로의 입력 검증 누락 + 안전하지 않은 파이썬 역직렬화 경로 사용
  • 주요 피해: 데이터 과학자 로컬 워크스테이션 멀웨어 감염, 모델 학습 데이터 유출

Marimo는 Jupyter 대체를 목표로 2024년 이후 급성장한 반응형 노트북이다. AI 워크플로, 데이터 탐색, 모델 데모에 쓰이며 데이터 팀의 표준으로 자리 잡아 영향 범위가 Jupyter 생태계와 유사한 규모에 도달하고 있다.

WebSocket과 커널이 만나는 Marimo의 노출 지점

Marimo는 셀 의존성을 반응형 DAG(Directed Acyclic Graph)로 추적한다. 프론트엔드와 파이썬 커널은 WebSocket으로 상태를 실시간 동기화하며, 이 연결과 세션 관리 경로가 보안 경계가 된다.

  • 서버: FastAPI + WebSocket
  • 커널: 파이썬 서브프로세스 (단일 또는 멀티)
  • 프론트엔드: React + WASM 기반 반응형 UI
  • 상태 관리: Reactive DAG로 셀 의존성 자동 계산
  • 배포 모드: edit(편집), run(실행 전용), serve(다중 사용자)
누락 경로사용자 브라우저Marimo 서버 (FastAPI)WebSocket 채널파이썬 커널Reactive DAG파일 시스템GPU / 외부 API세션 매니저인증 체크CVE-2026-39987

노트북 플랫폼마다 인증 방식과 네트워크 기본값이 다르다. 공유 실행을 위해 Marimo를 serve 모드로 운영하면 기본 포트 2718이 외부에 노출될 수 있어, Jupyter와 비교해 노출 위험이 구조적으로 커질 수 있다.

플랫폼 인증 기본값 주요 취약점 이력 네트워크 기본
Jupyter Notebook 토큰 CVE-2019-10255, CVE-2024-22420 로컬루프백
JupyterLab 토큰 CVE-2024-43805 로컬루프백
Marimo 토큰/없음 CVE-2026-39987 다양
Zeppelin 옵트인 CVE-2020-1891 모든 인터페이스
Deepnote OAuth SaaS 클라우드 전용
VS Code Notebooks 로컬 N/A 로컬

세션 초기화 경로에서 발생한 CVE-2026-39987

취약점은 세션 초기화 WebSocket 핸드셰이크 경로에 있다. 클라이언트가 보낸 세션 데이터를 파이썬 바이너리 직렬화 포맷으로 복원하는 경로가 사용됐고, WebSocket 업그레이드 요청에 악성 직렬화 페이로드를 첨부하면 인증 전에 임의 코드 실행으로 이어질 수 있다.

Marimo 프로세스를 실행한 사용자 권한으로 동작하므로, 통상 데이터 과학자의 홈 디렉터리 SSH 키, AWS 자격 증명, 학습 데이터에 접근할 수 있다.

"Python 커널""Marimo 서버 2718""공격자""Python 커널""Marimo 서버 2718""공격자""WebSocket Upgrade + 악성 payload""세션 초기화 (인증 전)""바이너리 역직렬화 호출""매직 메서드 자동 호출""리버스 셸 연결""SSH 키 탈취""클라우드 자격 증명 탈취""학습 데이터 덤프"

파이썬 바이너리 직렬화 포맷은 객체 복원 훅으로 인해 역직렬화 과정에서 임의 코드가 실행될 수 있는 구조적 위험이 있다. 공식 문서 역시 신뢰할 수 없는 입력에 이를 사용하지 않도록 경고한다. Marimo는 외부 요청 데이터를 해당 포맷으로 복원하는 경로를 노출했고, 0.20.5 패치에서는 이를 JSON+HMAC 검증 구조로 교체했다.

AI 워크스테이션이 공급망 공격의 거점이 되는 이유

AI 워크스테이션은 전통적인 엔드포인트보다 자산과 연결 정보가 한곳에 밀집하는 경우가 많다. 고성능 GPU는 암호화폐 마이닝과 크립토재킹의 표적이 되며, AWS·GCP·Azure·HuggingFace·GitHub 토큰도 워크스테이션에 집중될 수 있다.

사전 학습 가중치와 파인튜닝 결과물은 고가치 지적 재산이다. 데이터 레이크와 데이터 웨어하우스에 직접 연결하는 자격 증명을 보유하고, PyPI·Conda·HuggingFace Hub에서 수천 개 패키지를 내려받으며, MLflow·Weights & Biases·Neptune 같은 외부 도구에도 광범위하게 연결한다. 노트북 서버의 침해가 공급망, 데이터, 자격 증명 문제로 확대되는 배경이다.

공격 표면 위험 요소 대응
PyPI 공급망 타이포스쿼팅, 악성 릴리스 의존성 고정 + 스캔
노트북 플랫폼 Marimo/Jupyter 취약점 버전 관리 + 격리
토큰 스프롤 자격 증명 분산 Secret Manager
GPU 노출 CUDA 사이드채널 동일 호스트 격리
데이터 접근 광범위 권한 Just-in-Time Access
모델 가중치 IP 유출 DLP + 암호화

외부 노출을 막고 내부 접근을 분리하는 방식

노트북 플랫폼은 인터넷에 직접 노출하지 않고, 내부망의 제로트러스트 환경에서 운영하는 것을 전제로 삼아야 한다. 개인 작업 환경에서는 marimo edit --host 127.0.0.1로 로컬 바인딩을 적용해 외부 포트를 막을 수 있다.

사내 리소스 접근은 개발자 VPN 또는 Teleport 뒤에 두고, 워크스테이션 호스트 방화벽에서 2718·8888·8000 등 노트북 포트를 외부에 열지 않는다. 데이터 과학 서브넷을 분리하고 교차 접근을 제어하며, 공유 서버는 JupyterHub·Kubeflow처럼 인증을 강제하는 솔루션으로 운영한다. 클라우드 환경은 AWS SageMaker Studio 또는 GCP Vertex AI Workbench로 일원화할 수 있다.

직접 접근 차단직접 접근 차단인터넷제로트러스트 게이트웨이개발자 ID + 디바이스 검증AI 서브넷Marimo 워크스테이션공유 GPU 서버 (JupyterHub)데이터 레이크

패치와 의존성을 중앙 정책으로 관리하기

CVE 대응은 노트북 플랫폼만 업데이트해서 끝나지 않는다. pip-auditsafety로 SBOM 생성과 자동 취약점 스캔을 수행하고, requirements.txt·poetry.lock·uv.lock으로 버전을 고정해 재현성과 보안을 함께 확보한다.

Nexus·Artifactory를 통한 PyPI 프록시와 악성 패키지 필터는 공급망 통제에 사용할 수 있다. PEP 740 아티팩트 서명 지원 패키지를 우선하고, Dependabot·Renovate·Snyk로 신규 CVE에 대한 자동 PR을 생성한다. 노트북 플랫폼은 중앙 정책으로 승인 버전만 허용하며, uv pip upgrade를 이용해 1주일 내 보안 업데이트를 반영한다.

감염을 조직 전체로 번지지 않게 하는 경계

확산 경계(containment boundary)는 단일 워크스테이션의 감염이 조직 전반으로 퍼지는 것을 막기 위한 다층 방어 모델이다. 디바이스, 계정, 네트워크, 자격 증명, 데이터, 코드, 모델 자산에 각각 독립된 통제를 둔다.

  • 디바이스 경계: MDM·EDR·HIPS로 엔드포인트 강화
  • 계정 경계: 데이터 과학자 계정은 관리자 권한 없이 sudo 차단
  • 네트워크 경계: 서브넷 분리·제로트러스트 게이트웨이
  • 자격 증명 경계: Vault·STS로 단기 토큰만 발급
  • 데이터 경계: 데이터 접근을 JIT 방식으로 제한, PAM 경유
  • 코드 경계: 사내 미러·서명·SBOM으로 공급망 방어
  • 모델 경계: 모델 리포지토리 접근 제어, 가중치 DLP
경계 통제 수단 모니터링
디바이스 MDM, EDR, FDE Crash·EDR 경보
계정 LDAP/SSO, MFA 로그인 이상 탐지
네트워크 ZTNA, VPN, 방화벽 플로우 로그
자격 증명 Vault, STS, Secret Rotation Secret 사용 감사
데이터 JIT Access, PAM 데이터 접근 로그
코드 사내 미러, SBOM 공급망 스캔
모델 Artifact 서명, DLP 다운로드 감사

CVE-2026-39987은 노트북 플랫폼의 취약점을 단일 제품 문제로만 볼 수 없게 한다. AI 워크스테이션에는 자격 증명, 모델 가중치, 학습 데이터가 집중되고, 노트북의 로컬 노출과 공급망 위험이 결합될 수 있다. 로컬 바인딩, 제로트러스트 접근, SBOM 기반 의존성 패치, 단기 자격 증명, 모델 아티팩트 서명을 하나의 정책으로 연결해야 AI 워크스테이션의 확산과 블라스트 레이디어스 통제를 함께 다룰 수 있다.

Sources

MarimoCVE-2026-39987노트북 보안AI 워크스테이션공급망 보안