비밀번호를 재설정하려던 요청이 관리자 계정을 내줬다 — Metabase CVE-2026-72898
비밀번호를 재설정하려던 요청이 관리자 계정을 내줬다 — Metabase CVE-2026-72898
분류: CVE · 웹·서버 · SQLi · CVE-2026-72898 [정보성]
덱. 데이터 분석·BI 플랫폼 Metabase에서 로그인조차 필요 없는 SQL 인젝션이 발견됐습니다. 비밀번호 재설정이라는, 원래 인증 안 된 사용자도 쓸 수 있어야 하는 기능 하나가 관리자 계정 탈취로 이어졌습니다. CVSS 10.0(치명적) — 만점입니다. 공개 약 5일 후 미국 CISA의 실제 악용 확인 목록(KEV)에 올랐습니다.
리드
인증 절차 자체를 다루는 기능(로그인, 비밀번호 재설정, 회원가입)은 설계상 “아직 인증되지 않은 사용자”도 접근할 수 있어야 합니다. 그래서 이런 기능에 결함이 있으면, 별도의 인증 우회 없이 곧바로 심각한 결과로 이어집니다. Metabase의 이번 사례가 그렇습니다.
핵심 사실 요약
- CVE-2026-72898은 오픈소스이자 엔터프라이즈 BI 플랫폼인 Metabase의 무인증(pre-auth) SQL 인젝션(CWE-89) 취약점입니다. 보안 업체 Bishop Fox가 발견해 공개했습니다.
- 공개된 설명에 따르면 진입점은 단 하나의 무인증 엔드포인트,
POST /api/session/reset_password입니다. 이 API는 이름 그대로 비밀번호 재설정 요청을 처리하는데, 요청 본문에 스키마상 예상되지 않은(undeclared) 추가 필드를 넣어도 이를 걸러내지 않는 문제가 있었습니다. - 이 추가 필드 값이 재설정 흐름 내부의 사용자 조회 쿼리로 흘러들어가고, Metabase의 쿼리 빌더 스택이 이 값을 단순 데이터(리터럴)가 아니라 SQL 표현식으로 해석했습니다. 그 결과 애플리케이션 데이터베이스에 대한 임의 SQL 실행이 가능해집니다.
- 공개된 벤더/연구 자료 사이에서 정확히 어떤 파라미터명이 취약한 값인지는 표현이 다소 갈립니다. Bishop Fox는 “선언되지 않은 필드”라고 일반화해서 설명하고, 별도 탐지 템플릿을 배포한 ProjectDiscovery 쪽 자료는
token/user-id계열 파라미터를 벡터로 언급합니다. 메커니즘(값이 표현식으로 승격된다는 것)은 확정적이지만, ⚠️미확인(팩트체크 대상) — 정확한 파라미터명은 발행 전 1차출처 재대조가 필요합니다. - CVSS 3.1 기준 10.0(치명적)으로 알려져 있습니다. 인증도, 여러 단계를 거치는 체이닝도 필요 없이 단일 요청으로 임의 SQL 실행·관리자 계정 탈취까지 도달하는 구조이기 때문에 만점에 가까운 점수가 매겨진 것으로 보입니다.
- 공개 약 5일 후 미국 CISA의 KEV(Known Exploited Vulnerabilities, 실제 악용이 확인된 취약점) 목록에 등재됐습니다. 이는 공개 직후부터 실제 공격에 쓰이고 있었다는 뜻입니다.
- 영향 범위는 Metabase 오픈소스·엔터프라이즈 판 다수 브랜치에 걸쳐 있습니다. 오픈소스 기준 취약 구간과 패치 버전은 0.58.0–0.58.23(→0.58.24) / 0.59.0–0.59.20(→0.59.21) / 0.60.0–0.60.16(→0.60.17) / 0.61.0–0.61.10(→0.61.11) / 0.62.0–0.62.8(→0.62.9) / 0.63.0–0.63.4(→0.63.5)이며, 엔터프라이즈 1.x 브랜치도 동일 마이너 구간에서 병행 수정됐습니다.
대응방안
- 근본. 사용 중인 브랜치의 패치 버전(위 “핵심 사실 요약” 참조)으로 즉시 업그레이드합니다.
- 차선(패치 적용 전). 리버스 프록시·WAF 단에서
POST /api/session/reset_password요청 본문에 예상 필드 외 값이 포함된 요청을 차단하거나, 해당 엔드포인트 접근을 제한합니다. - 탐지 관점. 데이터베이스 쿼리 로그·리버스 프록시 로그에서 이 엔드포인트로 들어온 비정상 트래픽, 그리고 사후에는 관리자 계정 생성·역할 변경·이메일/비밀번호 변경 이력을 감사합니다.
- 사후 조치. 노출 기간 동안 발급된 세션을 모두 무효화하고, DB 자격증명·API 키를 회전합니다.
짧은 논평
이 취약점의 구조는 “유연한 쿼리 빌더/DSL이 필터링되지 않은 구조화된 입력을 신뢰하면, 원래 ‘값’이어야 할 것이 ‘실행 가능한 표현식’으로 승격된다”는 패턴입니다. 앞서 다룬 Struts2 OGNL 인젝션과 근본적으로 같은 계열입니다 — 표현식 엔진이든 쿼리 빌더든, 사용자 입력을 데이터가 아니라 코드/표현식으로 잘못 취급하는 순간 그 엔진이 가진 능력이 통째로 열립니다. 인증 절차 자체를 다루는 엔드포인트에서 이런 결함이 나오면 별도 체이닝 없이 곧바로 치명적 영향으로 이어진다는 점도 반복해서 확인되는 패턴입니다.
References / 참고자료
- Bishop Fox, “Critical SQL Injection in Metabase via Password Reset (CVE-2026-72898)” — 이 글이 재구성한 원 분석. 근본원인·진입점·영향 설명의 1차출처. https://bishopfox.com/blog/critical-sql-injection-in-metabase-via-password-reset-cve-2026-72898
이 글은 위 원 분석과 관련 공개 자료를 우리 관점에서 다시 쓰고 짧은 논평을 더한 정보성 초안입니다. 특정 문장을 그대로 옮기지 않았으며, 작동하는 페이로드는 싣지 않았습니다. ⚠️미확인 표시 항목(정확한 파라미터명)은 발행 전 독립 팩트체크에서 1차출처로 확증·정정되어야 합니다.