English Advisory →
CVE-2026-399879.8/CRITICALCISA KEV 등재CWE-306

marimo 반응형 Python 노트북 터미널 WebSocket 인증 누락으로 인한 사전 인증 원격 코드 실행(RCE) 취약점 (CVE-2026-39987)

영향받는 벤더 / 생태계
marimo-team
대상 컴포넌트 / 패키지
marimo
권고문 발행일
2026-04-09

실무자 핵심 요약 (Executive Summary)

SECOPS ASSESSMENT
영향 대상

0.23.0 미만 버전의 marimo 오픈소스 Python 노트북 라이브러리

파급 효과

인증되지 않은 원격 공격자가 터미널 WebSocket 엔드포인트(/terminal/ws)에 직접 연결하여 완전한 PTY 셸 권한을 획득하고 임의의 시스템 명령을 실행할 수 있습니다

권장 조치

marimo 패키지를 최신 보안 패치가 적용된 0.23.0 이상 버전으로 즉시 업데이트하십시오

영향받는 제품 및 버전 범위

marimo 0.23.0 미만의 모든 버전 (0.23.0 버전에서 수정됨)

권장 패치 및 임시 완화(Workaround) 가이드

PATCH & WORKAROUND

1. 공식 보안 패치 적용 (권장)

marimo 패키지를 최신 버전(0.23.0 이상)으로 업그레이드하십시오.

bash
# pip를 사용하는 경우
pip install --upgrade marimo>=0.23.0

# poetry를 사용하는 경우
poetry add marimo@latest

2. 임시 완화 조치 (패치 적용이 불가능한 경우)

  • 네트워크 접근 제어: marimo 서버가 실행 중인 포트(기본적으로 외부 노출이 불필요한 포트)에 대해 신뢰할 수 있는 IP 대역만 접근할 수 있도록 방화벽 규칙(IP White-listing)을 설정하십시오.
  • 리버스 프록시 인증 추가: Nginx, Apache 또는 OAuth2 Proxy와 같은 리버스 프록시를 marimo 전면에 배치하여, 애플리케이션 레이어에 도달하기 전에 기본 인증(Basic Auth) 또는 SSO 인증을 강제하도록 구성하십시오.
  • WAF(웹 애플리케이션 방화벽) 규칙 설정: 외부로부터 /terminal/ws 경로로 유입되는 비정상적인 WebSocket 업그레이드 요청을 탐지 및 차단하십시오.
권장 아키텍처 방어 통제 (Recommended Security Control)
Snyk Open Source & Container Security
실제 공격에 악용되고 있는 치명적인 취약점이므로, marimo 라이브러리를 즉시 0.23.0 이상으로 업데이트하고 외부 노출 여부를 점검하십시오.

내 GitHub/GitLab 레포지토리에 이 취약한 패키지가 숨어 있는지 30초 만에 스캔하세요

간접 의존성(Transitive Dependency)에 포함된 취약점은 수동 확인이 불가능합니다. Git 연동 한 번으로 취약 버전 탐지부터 호환성을 유지하는 최소 버전 업그레이드 PR까지 자동 생성하세요.

무료 플랜 지원 · GitHub/GitLab 1클릭 연동
CI/CD 파이프라인에 자동 보안 스캐닝(SAST/SCA) 구축하는 실전 강의
커리큘럼 확인하기

취약점 발생 원리 및 공격 메커니즘

marimo는 데이터 과학 및 머신러닝 분야에서 널리 사용되는 반응형 Python 노트북 도구입니다. 본 취약점(CVE-2026-39987)은 marimo의 터미널 WebSocket 엔드포인트인 /terminal/ws에서 적절한 사용자 인증 검증을 수행하지 않아 발생합니다 (CWE-306: 중요한 기능에 대한 인증 누락).

일반적인 WebSocket 엔드포인트(예: /ws)는 연결 요청 시 validate_auth() 함수를 호출하여 세션 및 권한을 엄격히 검증하는 반면, /terminal/ws 엔드포인트는 단순히 실행 모드(Running Mode)와 플랫폼 지원 여부만을 확인한 후 연결을 수락합니다. 이로 인해 공격자는 유효한 세션 토큰이나 자격 증명 없이도 해당 엔드포인트에 직접 WebSocket 핸드셰이크를 요청할 수 있으며, 연결이 성립되면 대상 서버의 운영체제 권한으로 대화형 PTY(Pseudo-Terminal) 셸을 획득하여 임의의 시스템 명령을 실행할 수 있게 됩니다.

이 취약점은 CVSS 9.8의 치명적(Critical) 등급으로 분류되었으며, CISA KEV(Known Exploited Vulnerabilities) 목록에 등재되어 실제 야생(In-the-Wild)에서 적극적으로 악용되고 있음이 확인되었습니다.

공식 보안 권고문 및 참조 링크

NVD Original English Description

marimo is a reactive Python notebook. Prior to 0.23.0, Marimo has a Pre-Auth RCE vulnerability. The terminal WebSocket endpoint /terminal/ws lacks authentication validation, allowing an unauthenticated attacker to obtain a full PTY shell and execute arbitrary system commands. Unlike other WebSocket endpoints (e.g., /ws) that correctly call validate_auth() for authentication, the /terminal/ws endpoint only checks the running mode and platform support before accepting connections, completely skipping authentication verification. This vulnerability is fixed in 0.23.0.

SecOps Advisory Dispatch & RSS Feed

일간 취약점 브리핑 및 긴급 Zero-Day 경보 구독

보안 실무자와 인프라·백엔드 엔지니어를 위해 매일 아침 주요 취약점과 패치 우선순위를 요약해 발송합니다.

Slack / Teams / RSS 리더 연동: