CVE-2026-72898 — Metabase SQL Injection Vulnerability

CVE-2026-72898

Metabase — Pre-Auth SQL Injection in Password Reset via HoneySQL :raw Escape Hatch

What is Metabase?

Metabase is a widely deployed open-source business intelligence and analytics platform. Teams point it directly at production databases and data warehouses so that non-engineers can build dashboards and run queries without writing SQL. To do that, Metabase stores the connection credentials for every data source it queries inside its own application database.

That architecture is what makes a Metabase compromise so severe. The platform is not merely one application among many — it is a credential vault sitting in front of an organization's most sensitive data stores, and it is frequently deployed on the public internet so that remote staff can reach dashboards. Wiz reports that roughly 13% of cloud environments contain a self-hosted Metabase instance and that about 25% of those are fully internet-accessible; Shodan inventories roughly 2,500 internet-facing instances.

Overview

CVE-2026-72898 is an unauthenticated SQL injection in Metabase's password reset endpoint. A single unauthenticated HTTP request injects arbitrary SQL into the Metabase application database, which is enough to grant the attacker administrator access to the instance. From there, an attacker can alter application configuration, extract the stored credentials for every connected database, read any data reachable through those connections, and export it.

This was exploited as a zero-day. Metabase discovered the flaw by detecting a live attack against its own hosted infrastructure, and public proof-of-concept exploits followed within days of the patch. The CVSS score of 10.0 reflects a Changed scope: compromising Metabase does not stop at Metabase, because it hands the attacker the keys to the downstream data warehouses.

Affected Versions

Branch Vulnerable Fixed
x.58 0.58.0 – 0.58.23 0.58.24
x.59 0.59.0 – 0.59.20 0.59.21
x.60 0.60.0 – 0.60.16 0.60.17
x.61 0.61.0 – 0.61.10 0.61.11
x.62 0.62.0 – 0.62.8 0.62.9
x.63 0.63.0 – 0.63.4 0.63.5

Applies to self-hosted deployments on the 0.58/1.58 branch and later; Enterprise 1.x builds track the same numbering. Metabase Cloud was patched by the vendor.

Technical Details

The vulnerable endpoint is POST /api/session/reset_password. The injection is not the textbook case of string-concatenated SQL — it is reached by chaining three separate permissive behaviours in the request-handling path:

  1. The endpoint does not reject undeclared fields. Extra keys in the JSON request body are carried forward rather than discarded.
  2. A Clojure merge combines the request map with the authentication result without stripping those extra keys. Critically, this happens even when authentication fails — so an attacker-supplied user-id key survives the merge intact.
  3. HoneySQL's :raw directive bypasses parameterization. JSON keywordization turns a body such as {"user-id":{"raw":"<SQL>"}} into the Clojure map {:user-id {:raw "<SQL>"}}. When that map reaches t2/select-one :id user-id (Toucan 2), the query builder honours :raw and embeds the attacker's string as literal SQL.

The fix validates the value as a positive integer before it reaches the query builder — roughly (if (pos-int? user-id) ... (log/warnf ...)).

CWE-89 in this context: the classic SQL injection failure mode, but reached through a structured query-DSL escape hatch rather than string concatenation. Parameterized queries were in use; the :raw directive is an intentional bypass of them, and mass-assignment of an unexpected field is what let an attacker reach it.

Attack characteristics:

  • Authentication required: none — the endpoint is pre-auth by design.
  • Attack complexity: low. No user interaction.
  • Chaining: none required. A single HTTP request yields administrator access.
  • Scope: Changed — impact extends beyond Metabase to every database whose credentials it stores.

Discovery

There is no external researcher credit for this vulnerability. Metabase discovered it internally on 2026-08-02 by detecting an actual attack in progress against Metabase Cloud — incident-response-driven discovery rather than coordinated disclosure. Wiz, Bishop Fox, and Horizon3.ai published independent reverse-engineering analyses after the vendor advisory shipped.

Exploitation Context

  • Zero-day. Exploitation predates both the patch and the public disclosure, with the first known attack on 2026-08-02.
  • Confirmed downstream victims. Between 2026-08-07 and 2026-08-10, several organizations publicly disclosed breaches traced to this vulnerability, including Framework, n8n, Tally, Anaconda / Kilo Code, and ChecklyHQ.
  • Public exploits released 2026-08-10, sharply widening the population capable of exploiting it and turning a targeted zero-day into commodity attack tooling within days.
  • CISA assigned a three-day remediation deadline (added 08-11, due 08-14), one of the most aggressive windows the KEV catalog uses.
  • Threat actor attribution: none published. No source names an APT, ransomware crew, or botnet operator behind the original zero-day activity.

Remediation

  1. Upgrade immediately to 0.58.24, 0.59.21, 0.60.17, 0.61.11, 0.62.9, or 0.63.5 (or later) as appropriate to your branch. Metabase Cloud tenants are already patched.
  2. Interim workaround if you cannot patch now: block /api/session/reset_password at the reverse proxy or WAF. This disables self-service password reset, so treat it as a stopgap only.
  3. Do not treat patching as sufficient — assume credential compromise. Rotate every database connection credential stored in Metabase, all API keys, and all admin passwords and sessions. The vulnerability's primary payoff is credential theft, and patching does not invalidate what was already taken.
  4. Audit for persistence. Review the admin user list for accounts created or elevated since late July 2026, and review any changes to data source configuration.
  5. Review logs for exploitation. Hunt for POST /api/session/reset_password requests whose body contains a user-id key holding a nested JSON object — particularly one with a raw key containing SQL. Legitimate requests carry a scalar integer, so a nested object at that key is a reliable indicator. Extend the review to data warehouse query logs and Metabase query history for anomalous access or bulk export activity.
  6. Get Metabase off the public internet. Place it behind SSO or a VPN. Roughly a quarter of self-hosted instances are directly internet-accessible, which is what made this bug mass-exploitable.

Key Details

PropertyValue
CVE ID CVE-2026-72898
Vendor / Product Metabase — Metabase
NVD Published2026-08-10
NVD Last Modified2026-08-12
CVSS 3.1 Score10
CVSS 3.1 VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
SeverityCRITICAL
CWE CWE-89 find similar ↗
CISA KEV Added2026-08-11
CISA KEV Deadline2026-08-14
Known Ransomware Use No

CVSS 3.1 Breakdown

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

Required Action

CISA BOD 22-01 Deadline: 2026-08-14. Apply mitigations in accordance with vendor instructions, ensuring compliance with CISA’s BOD 26-04 Prioritizing Security Updates Based on Risk (see URL in Notes) guidance and CISA’s “Forensics Triage Requirements” (see URL in Notes). Follow applicable BOD 26-04 guidance for cloud services or discontinue use of the product if mitigations are unavailable. Stakeholders are responsible for evaluating each asset's internet exposure and ensuring adherence to BOD 26-04 patching guidelines.

Timeline

DateEvent
2026-08-02First known in-the-wild exploitation, detected by Metabase against its own Metabase Cloud infrastructure
2026-08-06Metabase publishes advisory GHSA-vwf4-m7j8-wcjf and patched releases
2026-08-07Downstream victims begin disclosing breaches (Framework, n8n, Tally, Anaconda/Kilo Code, ChecklyHQ through 08-10)
2026-08-10CVE published; public proof-of-concept exploits released
2026-08-11Added to CISA Known Exploited Vulnerabilities catalog
2026-08-14CISA BOD 22-01 remediation deadline