MCP(Model Context Protocol) 전송을 데이터베이스 접근 계층으로 올려둔 SurrealDB 배포라면, 이번 이슈는 버전 번호만 확인하는 점검으로 끝나서는 안 됩니다. 세션이 사용자 개인이 아니라 인증 방식의 이름에 묶이는 구조에서 생기는 문제이기 때문입니다. 아래에서는 확인된 사실과 아직 확인되지 않은 한계를 구분해 점검 순서를 정리합니다.
개요

CVE-2026-121419는 SurrealDB 3.1.0 이상 3.3.0 미만 버전의 MCP 세션에서 보고된 부적절한 인증(improper authentication) 취약점입니다. MCP 세션 바인딩에 사용되는 BoundSubject 핑거프린트가 사용자별 정체성(per-user identity)이 아니라 액세스 방법 이름, 즉 JWT나 Bearer 같은 인증 방식의 이름을 기준으로 만들어집니다.
그 결과 동일한 인증 방식을 사용하는 서로 다른 사용자의 세션이 같은 지문으로 충돌(BoundSubject collision)하고, 공격자가 피해자의 MCP 세션을 가로채 세션 탈취(session hijack)와 권한 상승(privilege escalation)로 이어질 수 있다는 것이 CVE 공고와 GitHub 보안 권고 GHSA-pgh9-49q4-hqcx의 공통된 요지입니다. 이슈는 2026-10-19에 공개되었으며, VulnCheck에도 동일한 내용의 권고문이 정리되어 있습니다.
영향 범위
- SurrealDB 3.1.0 이상 3.3.0 미만(CVE 공고 기준 영향 버전)
- MCP HTTP 전송, 그중에서도
POST /mcp경로를 노출한 배포 - JWT 또는 Bearer 액세스 방식으로 인증하는 MCP 세션
GitHub 보안 권고의 재현 노트는 영향 대상을 SurrealDB >= 3.2.0, MCP HTTP transport(POST /mcp)로 적고 있습니다. 즉 재현으로 직접 확인된 범위는 3.2.0 이상인 반면, CVE 설명의 영향 버전은 3.1.0 이상 3.3.0 미만입니다. 두 표현의 차이는 제공된 자료에서 완전히 일치하지 않으므로, 3.1.x 라인을 사용 중이라면 공급자 문서를 다시 확인해 자체 범위를 확정하는 편이 안전합니다.
조건부 해석을 더하면 이렇습니다. 지문 충돌은 같은 인증 방식 아래 여러 주체가 존재할 때 성립하는 문제입니다. 따라서 여러 사용자나 테넌트가 동일한 JWT/Bearer 액세스 메서드를 공유하는 환경이라면 충돌 조건이 실제로 성립할 수 있어 점검 우선순위가 올라갑니다. 반대로 MCP 전송을 쓰지 않거나 JWT/Bearer 방식을 쓰지 않는 배포는 이 취약점의 직접 조건에서 벗어납니다.
기술적 분석
MCP 세션에서 서버는 요청자가 누구인지를 BoundSubject라는 지문으로 식별합니다. 이 지문이 사용자 고유의 신원이 아니라 액세스 방법 이름을 담아 계산되면, 지문은 개인 식별자가 아니라 방식 식별자가 됩니다. 서로 다른 두 사용자가 모두 같은 JWT/Bearer 메서드로 인증하면 같은 지문이 나오고, 세션 경계가 두 사용자 사이에 허물어집니다.
공개 PoC·익스플로잇 분석
- 출처: GitHub 보안 권고 GHSA-pgh9-49q4-hqcx에 재현(poc and reproduction) 노트가 실려 있으며, VulnCheck 권고와 CVE 공고가 같은 메커니즘을 뒷받침합니다. 권고 문서 기준으로 재현은 공식 릴리스 바이너리 v3.2.0과 master 9d9a5b069(v3.3.0-nightly) 두 빌드에서 진행되었고, 두 경우 모두 7개 점검을 모두 통과한 것으로 기록되어 있습니다.
- 전제조건: 재현 노트가 지정한 대상은 SurrealDB 3.2.0 이상에서 MCP HTTP 전송(
POST /mcp)을 사용하는 구성이고, 테스트는 인메모리 엔진 기준으로 수행되었습니다. 여기에 CVE 설명의 조건을 겹치면, 지문 충돌이 성립하려면 JWT/Bearer 액세스 방식으로 인증하는 MCP 세션이 열려 있어야 하고 같은 인증 방식 아래 서로 다른 주체가 존재해야 합니다. - 입증 범위: 재현이 증명하는 것은 위 조건 아래 BoundSubject 지문 충돌로 세션 경계가 무너져 세션 탈취와 권한 상승이 가능하다는 점까지입니다. 재현 기록은 인메모리 엔진과 특정 빌드에 한정되므로, 디스크 스토리지 등 다른 저장 구성이나 확인되지 않은 빌드에서 동일하게 동작한다고는 단정할 수 없습니다. 또 이 재현은 기능적 증명이므로, 실제 공격자의 사용 권한 크기나 데이터 유출 규모까지 입증하지는 않습니다.
- 운영상 의미: 공격 경로가 문서와 코드만으로 재구성 가능한 상태라는 뜻이므로, 노출된 영향 버전에서는 실제 악용 가능성만을 근거로 순위를 낮추기 어렵습니다. 반대로 야생 악용 사례와 CISA KEV 카탈로그 등재 여부는 조사 범위에서 확인되지 않았으므로, 확인된 것은 공개 재현까지라는 한계도 함께 유지해야 합니다. 두 사실을 함께 두면, 확인된 공개 재현 자체를 긴급도의 상한으로 삼기보다 MCP HTTP 전송과 JWT/Bearer 인증이라는 노출 조건이 충족되는지를 우선 기준으로 삼는 편이 합리적인 우선순위에 가깝습니다.
이 메커니즘과 재현 기록은 권고 문서에 근거합니다. VulnCheck에 공개된 평가 벡터 단편에는 VC:H/VI:H/VA:N, UI:N, SC:N/SI:N/SA:N이 포함됩니다. 확인된 범위에서 해석하면 기밀성과 무결성 영향은 높고 가용성 영향은 없으며, 변경된 권한이 보안 경계를 넘어 퍼진다는 표시는 없습니다. 다만 전체 CVSS 점수와 벡터 원문은 제공된 인용에서 끝까지 확인되지 않았으므로, 이 단편만 기준으로 위험도를 확정하지 않는 것이 좋습니다. 권고에는 보고자로 Yanhaoxi가 명시되어 있습니다.
운영적으로 중요한 2차 영향은 추적성입니다. 세션 소유자가 부정확하게 식별되면 누구의 권한으로 데이터에 접근했는지를 기록으로 되짚기 어려워지고, 사고 조사 시 피해 범위 추정 자체가 흐려질 수 있습니다. 평가 지표가 나타내는 기밀성·무결성 영향도 결국 피해자 계정의 권한 범위를 넘는 데이터 접근이 가능할 때 성립합니다.
3.3.0에서 BoundSubject 처리가 정확히 어떻게 수정됐는지에 대한 패치 세부와 구체적인 수정 커밋은 제공된 자료에서는 확인되지 않습니다.
대응 방안
먼저 현재 상태를 확정합니다. 운영 중인 SurrealDB 버전, MCP HTTP 전송(POST /mcp) 노출 여부, JWT/Bearer 액세스 방식 사용 여부를 함께 확인합니다. 이 세 조건이 모두 성립해야 이 취약점의 직접 영향 범위가 된다는 점에서, 점검은 버전 확인만으로 끝나지 않습니다.
버전 표기와 관련해 제공된 근거는 CVE 공고 기준의 영향 버전 범위와 GitHub 재현 노트가 지정한 SurrealDB >= 3.2.0 그리고 MCP HTTP transport(POST /mcp)라는 조건까지입니다. 3.3.0 정식 릴리스에서 수정이 어떻게 적용됐는지는 제공된 인용에서 확인되지 않으므로, 실제 패치 및 업그레이드 경로는 공급자 문서에서 직접 확인해야 합니다. 기술적 분석에서 정리한 대로 수정 커밋이나 변경 내용의 세부도 자료에 포함되어 있지 않아, 이 글이 교체 버전의 효력을 보증할 수는 없습니다.
탐지와 관련해 제공된 자료에는 로그 필드, 세션 바인딩 이력, IOC, 탐지 시그니처에 해당하는 근거가 없습니다. 따라서 이 글은 구체적인 탐지 절차를 제시하지 않으며, 그 부분은 확인되지 않은 한계로 남깁니다. 대응 서술 또한 근거로 확인된 범위, 즉 MCP HTTP 전송과 JWT/Bearer 인증이라는 노출 조건을 점검하는 데까지로 한정합니다.
참고자료
- CVE-2026-121419: SurrealDB 3.1.0 before 3.3.0 MCP Session Hijack via BoundSubject Collision
- MCP session hijack / privilege escalation via BoundSubject fingerprint collision for JWT/Bearer access methods
- SurrealDB 3.1.0 before 3.3.0 MCP Session Hijack via BoundSubject Collision
함께 읽으면 좋은 글
- CVE-2026-121458: Instatic AI/MCP 콘텐츠 읽기 도구의 인가 누락, 무엇이 드러나나
- CVE-2025-61624: 포티넷 다중 제품 CLI 경로 순회 취약점, KEV 등재로 보는 점검 포인트
- CVE-2026-57853: DataGerry 서버 측 템플릿 인젝션 취약점 점검
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!