쉼표 한 개가 인증을 무너뜨렸다. 데이터 과학 노트북 플랫폼 Mercury의 차단 목록 정의에 작은 오타가 포함되며, 인증되지 않은 원격 코드 실행 취약점이 그대로 인터넷에 열려 있는 배포 환경까지 위협을 키웠다.
개요

오픈소스 데이터 과학 노트북 플랫폼 Mercury에서 인증 없이 원격 코드 실행(RCE)이 가능한 취약점이 공개됐다. 취약점 식별자는 CVE-2026-111057이며, GitHub 보안 어드바이저리는 GHSA-f8c7-rwf9-fmgm으로 등록되어 있다.
근본 원인은 mercury_app/block_handler.py의 BLOCKED_PATTERNS 목록에서 쉼표 하나가 누락된 것이다. 패턴이 의도대로 개별 항목으로 등록되지 않으면서 블록리스트가 /api/terminals 엔드포인트를 커버하지 못했고, 그 결과 인증되지 않은 공격자라도 Mercury 호스트에서 완전한 대화형 OS 수준 셸을 띄울 수 있게 됐다.
어드바이저리가 공개한 CVSS 3.1 벡터는 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H다. 네트워크 경로, 낮은 공격 복잡도, 인증 불필요, 보안 범위 변경(S:C), 기밀성·무결성·가용성 모두 최고 등급이라는 조합이다. 이 벡터만으로도, Mercury 서버에 네트워크로 닿을 수 있는 누구든 공격자가 될 수 있음을 보여준다.
영향 범위
- 영향 버전은 pip 패키지 mercury의 3.0.0 이상 3.2.3 이하(>= 3.0.0, <= 3.2.3)다. 이 범위에 해당하는 설치가 실행 중이면 취약점에 노출되어 있다.
- 공격 표면은 네트워크로 Mercury 서버에 도달 가능한 모든 클라이언트다. 어드바이저리는 VPN, 리버스 프록시 인증, 방화벽 등 추가 접근 통제 없이 배포된 경우 공개 인터넷에서도 악용 가능하다고 명시했다. 내부망만 허용한 배포보다 인터넷에 직접 노출된 인스턴스의 위험이 가장 크다.
- 공개된 PoC 검증은 로컬 Docker 배포 환경에서 Mercury 3.2.3 기본 구성 기준으로 수행됐다. 비표준 배포 구성에서의 악용 가능성은 이 증거 범위 밖이므로, 배포 구성에 맞춰 별도 점검이 필요하다.
- Mercury는 노트북 파일, 데이터, 실행 환경을 다루는 플랫폼이다. 셸 확보 시 데이터 유출·변조나 내부 시스템 추가 침투로 이어질 수 있으나, 이는 기밀성·무결성 영향이 모두 높다는 증거에 근거한 조건부 해석이며 이번 자료에서 직접 확인된 사실은 아니다.
기술적 분석
취약 원리
블록리스트가 의도가 아닌 형태로 등록되면, 해당 엔드포인트에 대한 차단이 아예 성립하지 않는다. /api/terminals는 원래 Mercury의 터미널 기능을 제공하는 엔드포인트라서, 차단이 빠진 상태에서는 인가 검증 자체가 우회되는 구조다. 별도 자격 증명이 필요 없고, 서버에 네트워크로 도달할 수 있는 것만으로 공격이 성립한다. 사소한 오타가 인증 우회형 RCE라는 중대한 결과로 이어진 사례다.
공개 PoC·익스플로잇 분석
- 출처: mljar/mercury 공식 보안 어드바이저리에 보고자가 재현 과정을 공개했다.
- 전제조건: 테스트는 로컬 Docker 배포의 Mercury 3.2.3, 기본 구성에서 수행됐다. 별도 인증이나 특수한 환경 설정이 요구되지 않는다는 점에서 악용 난이도는 낮다.
- 입증 범위: 인증 없이 호스트에서 대화형 OS 셸 생성까지 입증됐다. 다만 로컬 Docker 기본 구성에서의 재현이므로, 다른 배포 환경(커스터마이즈 컨테이너, 사이드카 구성 등)까지 일반화하려면 추가 검증이 필요하다.
- 운영상 의미: 노출된 배포에서는 실증 사례가 알려졌든 알려지지 않았든, 이 PoC 수준이면 즉각 악용이 가능하다고 보고 대응 우선순위를 매겨야 한다. 다만 야생에서 실제 악용이 확인됐는지, CISA KEV에 등재됐는지는 이번 증거에서 확인되지 않는다.
패치 내용
공식 v3.2.4 릴리스 노트는 "인증되지 않은 터미널 접근에 대한 패치"를 명시하고 있다. 수정 커밋을 보면 블록리스트에 r"/api/terminals(?:/.*)?" 정규식 패턴이 추가되어 /api/terminals 엔드포인트와 그 하위 경로 전체가 차단 대상에 포함된다. 단, v3.2.4 패치에 대한 독립 검증 보고서는 이번 증거에서 확인되지 않았으므로, 공식 릴리스 노트와 수정 커밋을 근거로 패치 완료로 판단한다.
대응 방안
패치 전 즉시 조치
- 실행 중인 Mercury 버전을 즉시 확인하고 3.0.0~3.2.3 범위에 해당하는지 점검한다.
- 패치 전 임시 완화로 Mercury 서버 접근을 VPN, 리버스 프록시 인증, 방화벽 등으로 제한한다. 이 완화 수단은 어드바이저리가 직접 언급한 것이다.
- 인터넷에 직접 노출된 Mercury 인스턴스는 패치 시점까지 접근 차단 또는 서비스 일시 중단을 검토한다.
지속적 정비
- Mercury를 패치가 포함된 v3.2.4 이상으로 업그레이드한다. 수정 커밋은 r"/api/terminals(?:/.*)?" 정규식 패턴을 적용해 /api/terminals 엔드포인트와 그 하위 경로 전체를 차단 대상에 포함한다.
- 애플리케이션 패치와 별개로 Mercury 서버를 VPN, 리버스 프록시 인증, 방화벽 등 추가 접근 통제로 감싸 네트워크 계층 방어를 유지한다. 어드바이저리가 명시했듯 이런 추가 접근 통제 없이 배포되면 공개 인터넷에서도 악용될 수 있으므로, 패치와 별개의 방어 수단으로 계속 적용할 필요가 있다.
한계
이번 자료에서 확인되지 않는 영역은 명확히 구분할 필요가 있다.
- CISA KEV 등재 여부, 실제 야생 악용 사례는 확인되지 않았다.
- v3.2.4 패치에 대한 독립 검증 보고서, 패치 우회 가능성 분석은 확인되지 않았다.
- 구체적인 공격 트래픽 시그니처나 IOC 목록은 제공되지 않았다.
- PoC 재현이 로컬 Docker 기본 구성 기준이므로 비표준 배포 구성에서의 악용 가능성은 별도 검증이 필요하다.
참고자료
- Mercury: Unauthenticated Remote Code Execution in /api/terminals
- GHSA-f8c7-rwf9-fmgm record (CVE-2026-111057)
- PoC: local Docker test on Mercury 3.2.3
- Release v3.2.4
- block unauthenticated terminal access (fix commit)
함께 읽으면 좋은 글
- ProjectSend 권한 검증 결함 점검 — 제한된 API 토큰의 완전한 대화형 계정 승격
- CVE-2026-112015: Omnigent 하위 에이전트 os_env.cwd 경로 순회 취약점 점검 가이드
- CVE-2026-112021: snac2 2.93 미만 JSON 파서 힙 버퍼 오버플로우 점검 가이드
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!