Mercury 플랫폼의 CVE-2026-111057 취약점은 코드 내 단순한 쉼표 누락 탓에 /api/terminals 엔드포인트가 차단 목록에서 제외되면서 생겼고, 인증되지 않은 공격자가 서버의 OS 레벨 셸에 접근해 원격 코드 실행(RCE)까지 가능해집니다.
CVE-2026-111057 취약점 개요 및 영향
오픈소스 데이터 과학 노트북 플랫폼인 Mercury에서 인증 없이 원격 코드 실행(RCE)이 가능한 심각한 취약점이 공개되었습니다. 이 취약점의 식별자는 CVE-2026-111057, GHSA-f8c7-rwf9-fmgm입니다.
해당 취약점은 공격자가 특별한 권한이나 사전 인증 없이도 서버에 접근해 완전한 상호작용형 OS 레벨 셸을 띄울 수 있게 합니다. 보안 영향력이 커서 CVSS 3.1 기준 점수 10.0(Critical), 최상위 위험도로 평가되었습니다. CVSS 3.1 벡터 값은 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H입니다. 네트워크에서 낮은 복잡도로 인증 없이 공격이 가능하고, 기밀성, 무결성, 가용성 모두에 심각한 영향을 미칩니다.
취약점의 영향 범위와 기본 정보는 다음과 같습니다.
| 구분 | 세부 내용 |
|---|---|
| 취약점 식별자 | CVE-2026-111057 / GHSA-f8c7-rwf9-fmgm |
| 영향 버전 (pip 패키지) | mercury 3.0.0 이상 3.2.3 이하 (>= 3.0.0, |
| 패치 버전 | v3.2.4 |
| CVSS 3.1 점수 | 10.0 (Critical) |
| 취약점 유형 | 인증 우회 및 원격 코드 실행 (RCE) |
기술적 분석: 쉼표 누락으로 인한 인증 우회 원리
원인은 지극히 단순합니다. Mercury 소스 코드의 구문 오류, 정확히는 mercury_app/block_handler.py 파일에 정의된 BLOCKED_PATTERNS 목록에서 쉼표 하나가 빠진 것입니다.
Python의 특성상 리스트 내부에서 요소 사이의 쉼표가 누락되면 인터프리터가 인접한 두 문자열을 하나로 합쳐 인식합니다. 이 때문에 다음과 같은 보안 결함이 발생합니다.
- 차단 규칙의 병합: 첫 번째 줄과 두 번째 줄 사이에서 쉼표가 빠지면서 두 개의 독립적인 차단 규칙이 하나의 긴 문자열로 합쳐집니다.
- 패턴 매칭 실패: 그 결과
/api/terminals엔드포인트로 향하는 직접적인 요청이 병합된 규칙은 물론 다른 블록리스트 규칙과도 일치하지 않습니다. - 접근 제어 무력화: 차단 목록(Blocklist)이 막아줘야 할
/api/terminals경로가 사실상 보호 범위 밖으로 밀려나면서, 인증되지 않은 사용자의 접근을 허용하고 맙니다.
이런 논리적 오류가 공격자에게 인증 과정을 완전히 건너뛰고 시스템 핵심 API에 닿는 통로를 내어주었고, 결국 서버 제어권을 획득하는 RCE로 이어졌습니다.
PoC 검증으로 확인된 위험성
이 취약점의 위험성은 실제 PoC(Proof of Concept) 검증으로 확인되었습니다. 검증 환경은 로컬 Docker 배포, 대상은 Mercury 3.2.3 기본 구성(Default Configuration)입니다.
검증 결과, 그 어떤 인증이나 사전 접근 권한 없이도 공격자가 호스트 서버에서 완전한 상호작용형 root 셸(Interactive root shell)을 얻어냈습니다. 공격자가 서버 내의 모든 데이터를 열람, 수정, 삭제하는 것은 물론, 해당 서버를 거점 삼아 내부 네트워크의 다른 시스템으로 공격을 확장할 수도 있는 위험한 상황입니다.
패치 내역 및 대응 방안
Mercury 개발팀은 이 취약점을 해결한 v3.2.4 버전을 릴리스했습니다.
1. 공식 패치 내용
v3.2.4 버전에는 다음과 같은 수정 사항이 들어갔습니다.
- 구문 오류 수정:
mercury_app/block_handler.py내BLOCKED_PATTERNS리스트에서 빠졌던 쉼표를 다시 추가했습니다. - 독립적 규칙 적용:
/api/terminals엔드포인트가 다른 규칙과 병합되지 않고 독립적인 차단 규칙으로 작동하도록r"/api/terminals(?:/.*)?"정규식 패턴을 적용했습니다.
2. 즉각적인 대응 조치
시스템 관리자와 보안 담당자는 다음 단계를 순서대로 거치는 것이 좋습니다.
- 버전 업데이트 (최우선): 현재 사용 중인 Mercury pip 패키지 버전을 확인한 뒤 즉시 v3.2.4 이상으로 업그레이드합니다.
- 임시 완화 조치 적용: 즉시 패치하기 어려운 환경이라면 다음과 같은 네트워크 수준의 접근 제한 조치로 위험을 줄입니다.
- VPN(가상 사설망) 기반 접근 제어
- 리버스 프록시(Reverse Proxy)를 이용한 추가 인증 계층 도입
- 방화벽(Firewall) 설정을 활용한 허용 IP 기반의 접근 제한
데이터 과학자와 시스템 관리자는 외부로 노출된 Mercury 인스턴스가 있는지부터 빠르게 전수 조사하고, 인증되지 않은 원격 제어 위험은 신속한 패치 적용으로 제거합니다.