← Back to the cybersecurity blog

The Metabase zero-day: when your BI tool leaks your entire customer database

By Thilina Manana · COO y Director Técnico de Seguridad hard2bit · Published: 09 August 2026 · Updated: 09 August 2026
The Metabase zero-day

On 3 August somebody started reading other companies' production databases. They did not break into any of those companies. They came in through the business intelligence tool all of them shared, because that was where the credentials lived.

A BI server is where an organisation wires up its databases so they can be queried without friction. The price of that convenience seldom reaches the risk register: the machine ends up holding the keys to everything else. The flaw Metabase disclosed on 6 August shows what happens when somebody picks them up.

What happened, in order

The public timeline, drawn from Metabase's security advisory and reporting by BleepingComputer, spans four days.

  1. 3 August: the earliest access date victims have confirmed, on Metabase Cloud instances.
  2. 6 August: Metabase identifies the flaw, patches Metabase Cloud instances automatically, publishes its advisory and urges self-hosted customers to upgrade. It notifies affected customers the same day.
  3. 7 and 8 August: Framework and Tally publish their breach notifications.

The flaw is a SQL injection exploitable without prior authentication against the application's own database, scored at CVSS 10.0. It was exploited before any fix existed, which makes it a zero-day in the strict sense, and it carries no CVE identifier. It affects versions 1.58 and later, including self-hosted installations.

Why does a BI flaw end up in all your customers' data?

Because Metabase was never the target that mattered. In outline, the chain runs like this: the attacker injects queries against the application database without credentials, escalates to instance administrator and, at that level, reaches the store holding the credentials for every connected database. Nothing further needs to be exploited. They connect as the data team would and query whatever those credentials allow, so the exfiltration travels through an authorised channel.

The pattern matches the OAuth abuse against Salesforce, where attackers walked in on legitimate permissions inherited from a trusted integration.

The question worth asking today has little to do with whether your instance was patched. It has to do with how far the credentials that instance stored could reach. If the connection account was a database administrator with read access across the whole schema, the scope of the incident is the whole schema.

What the two confirmed cases reveal

Framework, the modular laptop maker, notified its entire customer base that an attacker accessed names, email addresses, phone numbers, postal addresses and login IP addresses. The company stated that payment information was not affected, that it rotated its credentials after being notified, and that it confirmed no changes to admin access and no access to systems beyond Metabase.

Tally, the online form platform, told its users that its analytics environment was compromised on 3 August and that the attacker reached email addresses and passwords in hashed form, without reaching forms or the responses submitted to them.

The comparison between the two is instructive. At Framework, the exposed data is contact and address detail — enough to build very convincing impersonation campaigns against an entire customer base. At Tally, segmentation held: analytics could see accounts, not form content, and that contained the damage. What made the difference was what had been wired into the tool, and with which permissions.

Why the usual controls did not catch it

There are four reasons, and none of them is negligence.

There was no CVE. Vulnerability management programmes fed only by public identifiers and the KEV catalogue had nothing to prioritise. Vulnerability monitoring has to include vendor advisories, which is where this one surfaced.

It was a managed service. On Metabase Cloud the customer patches nothing and never sees the operating system, because the attack surface belongs to the provider. The customer's only lever came afterwards, in which credentials had been deposited and with what permissions.

The traffic was legitimate. With connection credentials already stolen, queries arrive at the database from the usual source and as the usual account. There is no malware to catch and no odd process on a server, only an authorised session asking questions.

The instance logs sat within the attacker's reach. Metabase warns that system logs showing the compromise pattern may themselves have been tampered with, which points back to a familiar principle: the useful evidence is the copy you ship off-box.

How do you detect the compromise in your logs?

Metabase published a specific indicator of compromise, easy to search for in access logs.

Pattern: POST /api/session/reset_password → 400, followed by GET /api/user/current → 200 from the same session or source. Treat it as compromise until proven otherwise, not as one more alert to triage.

The hunt should not stop there. Review the instance's query history for bulk extractions or queries against tables that account never touches; look for access to connected databases outside the data team's hours and from addresses other than the instance's; and check whether administrator accounts or API keys were created or modified around those dates. Where the SIEM actually receives database query logs, the anomalous extraction leaves more trace than the initial intrusion.

What to do now

Order matters here, because upgrading without rotating leaves the attacker holding valid credentials.

Triage for Metabase instances, self-hosted and Cloud
ActionWhyPriority
Upgrade to a fixed release (0.58.24, 0.59.21, 0.60.17, 0.61.11, 0.62.9, 0.63.5 or later)Closes the entry path. Cloud was patched automatically by the vendorImmediate (self-hosted)
Rotate credentials for EVERY connected databaseThis is the asset the attacker was after; a patch does not invalidate what was already takenImmediate
Revoke all active sessionsEjects any session the attacker may still holdImmediate
Review administrator accounts and API keysDetects persistence created during the access windowHigh
Hunt the compromise pattern and inspect query historyEstablishes whether access occurred and what was queriedHigh
Assess personal data scope and notification dutiesStarts the GDPR clock and, where applicable, NIS2High, in parallel

If the compromise pattern appears, credential rotation stops being precautionary and becomes containment of a live incident.

Where an instance turns out to be compromised, scoping should not be done by eye. Establishing what the attacker queried, and for how long, is work for digital forensics and an incident response team with the log history to hand.

The data that should never have been there

The structural lesson lies in what data your analytics tool can see.

Most questions put to a BI tool are answered with aggregates, cohorts and trends; a customer's phone number and postal address are rarely the answer. Even so, the usual practice is to connect it to the production database with an over-privileged account because that is quickest, then let the analyst decide later what to look at. That shortcut turns a vendor's flaw into a notification to the entire customer base.

The measures that would have contained this incident are unglamorous and well understood: read-only accounts scoped to specific views rather than the full schema; views exposing aggregated or pseudonymised columns instead of direct identifiers; separation between analytics and the tables holding contact data; and an inventory of which sources are wired to which tool, with a named owner. This is data minimisation implemented in the schema, not drafted in the privacy policy.

The lifespan of those connection credentials deserves the same scrutiny, because they typically never expire. They are accounts without an assigned owner, holding read access to the most sensitive parts of the business, with nobody rotating them.

Do you have to notify if the flaw was your provider's?

Generally yes, and it is the point that generates most debate when responsibilities are mapped out. Under the GDPR, the company deciding why its customers' data is processed remains the controller, and that status does not transfer to the BI provider merely because the flaw was theirs. Where the breach poses a risk to the rights of data subjects, notifying the supervisory authority falls to the controller, within 72 hours of becoming aware. Where that risk is high, communicating with the affected individuals is added on top, which is the step Framework took with its customers.

The provider acts as processor, and its duty is to inform the controller without undue delay, which is what happened on 6 August. Entities in scope of NIS2 must add their own significant-incident reporting, with early warning inside 24 hours, plus the obligation to manage supply chain risk. In Spain the transposing law is still pending; the substantive obligation is not.

In practice this is settled before the incident: contracts with explicit notification deadlines, and third-party risk management that records which provider processes which data with what access. By the time the advisory lands, the clock has already started.

What this case leaves behind

Metabase patched its managed service, published an advisory with indicators of compromise and engaged an external forensic firm. Even so, the problem has no vendor-side fix: the damage was set by the reach of the credentials each customer had entrusted to it.

That is the asymmetry of the SaaS model. You can outsource running a tool, but not accountability for the data you hand it. When reviewing data integrations, the question that pays is not how many tools you have connected, but what an attacker would see if any one of them fell tomorrow. Measuring that reach is the work we do at Hard2bit as a cybersecurity company, before somebody else measures it for us.

Sources and attribution: this article draws on public disclosures available on 9 August 2026 — Metabase's security advisory and the breach notifications issued by Framework and Tally, as reported by BleepingComputer, TechCrunch and The Hacker News. The scope of these incidents may widen as the ongoing forensic investigation progresses. These companies are named on the basis of their own public statements, and no assessment of their security posture is implied.
Note: this content is defensive and educational in purpose. The indicators and actions described should be validated against the vendor's official advisory and adapted to each environment before being applied in production. It does not constitute legal advice on notification obligations.

Frequently asked questions

Am I affected if I use Metabase Cloud?

Metabase patched Cloud instances automatically and notified customers whose instance had been reachable, so the entry path is closed with no action from you. That does not close the incident: if your instance was exposed during the exploitation window, the credentials for your connected databases could have been stolen and remain valid until rotated. The outstanding customer-side action is rotation and access review, not patching.

Which Metabase versions are safe if I self-host?

The fixed releases published by the vendor are 0.58.24, 0.59.21, 0.60.17, 0.61.11, 0.62.9 and 0.63.5, or later within each branch. Watch out for the dual numbering, which trips people up: the open-source edition uses the 0.x series and the commercial edition the 1.x series, so 0.58.24 and 1.58.24 are the same fixed release. Each branch is maintained separately, so check yours before treating the upgrade as complete.

How do I rotate production database credentials without downtime?

With an overlapping rotation rather than an in-place password change. The usual pattern is to create a new credential with the same permissions, update every consumer that uses it (the BI tool, but also batch jobs and dashboards that sometimes share an account), verify they all connect on the new one, and only then revoke the old. Revocation is the step you cannot defer: while the old credential lives, the theft remains useful. Inventory who uses that credential first, because that is where the surprises are.

Is upgrading Metabase enough to resolve the incident?

No. The patch closes the way in but does not invalidate what the attacker already took. The objective was the stored credentials for connected databases, and those credentials keep working after you upgrade. The correct sequence is to upgrade, revoke all active sessions, rotate the credentials for every connected database, and review administrator accounts and API keys for persistence.

Do I have to tell affected individuals as well as the authority?

They are two separate GDPR duties. Notifying the supervisory authority applies where the breach poses a risk to the rights and freedoms of data subjects, within 72 hours of becoming aware. Communicating with the individuals themselves is required where that risk is high, and its deadline is without undue delay. A combination of name, phone number and postal address enables fairly direct impersonation fraud, and that is the kind of assessment that tends to tip the balance towards communicating. The final call rests with the controller, case by case.

What if my log retention does not reach back to 3 August?

Then you cannot rule out compromise, and that is the operational conclusion: absence of evidence is not evidence of absence. With the exploitation window outside your retention, the prudent course is to assume exposure and act as though it occurred, meaning rotate credentials for every connected database and review administrator accounts and API keys. Document the limitation too, because it forms part of the scoping analysis a forensic team, and potentially a supervisory authority, will ask for.

How do I know whether my instance was reachable from the internet?

By checking from outside rather than from the network diagram. On Metabase Cloud it is reachable by definition. Self-hosted, an instance may be published through a load balancer, an inherited firewall rule or a tunnel somebody opened to work from home and nobody closed. The useful check is to resolve the hostname and test access from an external network, review the publishing rules and cross-check against your attack surface inventory. Sitting behind a VPN on paper does not always mean sitting behind one in production.

Want to know what's actually exposed, and what to fix first?

Thirty minutes with a technical consultant — not a salesperson — is enough to get the problem in order: what's exposed right now, what gets fixed this week, what can wait, and what each stage costs. Penetration testing, security audits, vulnerability management, Microsoft 365, SOC/MDR and incident response.

If your situation is different, tell us anyway — we also take one-off questions on cybersecurity and regulatory compliance.

Based in Spain · Working across the EU and LATAM · ENS High · ISO 27001 · We usually reply in under 24 business hours