SecBoard
Zurück zur CVE-Übersicht

CVE-2026-72898

CRITICAL(10.0)KEV — Aktiv ausgenutzt

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

Risk Signal Score61/100 — HOCH
  • CVSS 10 — Kritisch
  • Im CISA KEV-Katalog (aktiv ausgenutzt)

Erwähnungen (letzte 60 Tage)

Artikel

CISA KEV

Bestätigt ausgenutzt

EPSS-Score

19.0%

Exploit-Wahrscheinlichkeit (30 Tage)

CVSS Score

10

Technische Schwere

SecBoard-Einordnung

CVE-2026-72898 ist eine kritische SQL-Injection-Schwachstelle in Metabase, die es einem entfernten, nicht authentifizierten Angreifer ermöglicht, beliebigen SQL-Code über den '/reset_password'-Endpunkt einzuschleusen. Dies kann zu Administratorzugriff auf die verbundene Metabase-Instanz führen. Die Schwachstelle betrifft sowohl die Open-Source- als auch die Enterprise-Version von Metabase.

Mit einem CVSS-Score von 10.0 (CRITICAL) und einer EPSS-Wahrscheinlichkeit von 79% für eine Ausnutzung ist diese Schwachstelle extrem kritisch. Sie ist zudem im () Katalog gelistet, was bedeutet, dass sie aktiv ausgenutzt wird und ein hohes Risiko darstellt.

Security-Teams sollten umgehend alle betroffenen Metabase-Instanzen identifizieren und die vom Hersteller bereitgestellten Patches anwenden. Wo ein sofortiges Patchen nicht möglich ist, müssen umgehende temporäre Gegenmaßnahmen implementiert und die Systeme auf Anzeichen einer Kompromittierung überwacht werden, um das Risiko zu minimieren.

KI-gestützte Einordnung auf Basis der NVD-Daten.

Beschreibung

Metabase allows a remote, unauthenticated attacker to inject arbitrary SQL via the '/reset_password' database endpoint and gain administrator access to the connected Metabase instance.

Erkennung & Indikatoren

Ausnutzung

Aktiv ausgenutzt (CISA KEV). Metabase hat die aktive Ausnutzung dieser Schwachstelle bestätigt. Ein Angreifer nutzte eine unbekannte ("0-day") Sicherheitslücke in Versionen 1.58 und höher, um Metabase Cloud anzugreifen.

Behobene Versionen

  • x.58.24
  • x.59.21
  • x.60.17
  • x.61.11
  • x.62.9
  • x.63.5

Threat-Hunting-Queries

Die Schwachstelle ermöglicht SQL-Injection über den '/api/session/reset_password'-Endpunkt, um Administratorzugriff zu erlangen. Die Detektion sollte auf ungewöhnliche Zugriffe auf diesen Endpunkt, SQL-Injection-Muster in Anfragen und nachfolgende administrative Aktivitäten abzielen, die auf eine Kompromittierung hindeuten.

Sentinel/Defender KQL

let MetabaseLogs = YourMetabaseLogTable
| where Url contains "/api/session/reset_password"
| where HttpMethod == "POST"
| where isnotempty(RequestBody) or isnotempty(QueryParameters)
| where RequestBody contains "'" or RequestBody contains "--" or RequestBody contains "union" or RequestBody contains "select" or RequestBody contains "waitfor delay"
| project TimeGenerated, SourceIp, UserName, UserAgent, Url, RequestBody, HttpMethod;
MetabaseLogs
| join kind=leftouter (
    YourMetabaseLogTable
    | where TimeGenerated > ago(1h) // Look for subsequent admin actions within 1 hour
    | where Url contains "/api/session/" and not (Url contains "/api/session/reset_password") // Exclude the reset_password endpoint itself
    | where UserName == "admin" or RequestBody contains "admin" // Look for admin-related actions
    | project TimeGenerated, SourceIp, UserName, Url, RequestBody, HttpMethod, SubsequentAdminAction = true
) on SourceIp
| where SubsequentAdminAction == true
| project-rename InitialAttackTime = TimeGenerated, SubsequentAdminActionTime = TimeGenerated1
| extend Description = "Potential Metabase SQL Injection followed by admin activity via /api/session/reset_password endpoint."

Splunk SPL

sourcetype=metabase_logs uri="/api/session/reset_password" method="POST" (body="'" OR body="--" OR body="union" OR body="select" OR body="waitfor delay")
| eval initial_attack_time = _time
| join type=left max=1000 initial_attack_time [ search sourcetype=metabase_logs _time > relative_time(initial_attack_time, "-1h") _time < relative_time(initial_attack_time, "+1h") uri="/api/session/*" NOT uri="/api/session/reset_password" (user="admin" OR body="admin")
| eval subsequent_admin_action = "true" ]
| where subsequent_admin_action="true"
| table _time, initial_attack_time, subsequent_admin_action, src_ip, user, uri, body, method
| rename _time as subsequent_admin_action_time
| eval Description = "Potential Metabase SQL Injection followed by admin activity via /api/session/reset_password endpoint."

Sigma

title: Metabase SQL Injection via Reset Password
id: 00000000-0000-0000-0000-000000000001
status: experimental
description: Detects potential SQL injection attempts against the Metabase /api/session/reset_password endpoint followed by suspicious administrative actions.
author: SecBoard
date: 2026/08/06
references:
  - https://github.com/metabase/metabase/security/advisories/GHSA-vwf4-m7j8-wcjf
tags:
  - attack.initial_access
  - attack.persistence
  - cve.2026.72898
logsource:
  product: metabase
  service: web_access
detection:
  selection_reset_password:
    url|contains: '/api/session/reset_password'
    method: 'POST'
    body|contains:
      - "'"
      - "--"
      - "union"
      - "select"
      - "waitfor delay"
  selection_admin_activity:
    url|contains: '/api/session/'
    url|excludes: '/api/session/reset_password'
    user|contains: 'admin'
  condition: selection_reset_password and selection_admin_activity
  timeframe: 1h
falsepositives:
  - Legitimate administrative actions if not correlated with injection attempts.
level: critical

Elastic ES|QL

FROM metabase_logs
| WHERE url LIKE '/api/session/reset_password%'
  AND http.request.method == 'POST'
  AND (http.request.body.content LIKE '%''%' OR http.request.body.content LIKE '%--%' OR http.request.body.content LIKE '%union%' OR http.request.body.content LIKE '%select%' OR http.request.body.content LIKE '%waitfor delay%')
| JOIN kind=left (
    FROM metabase_logs
    | WHERE event.timestamp > (NOW() - INTERVAL 1 HOUR)
      AND url LIKE '/api/session/%'
      AND NOT url LIKE '/api/session/reset_password%'
      AND (user.name == 'admin' OR http.request.body.content LIKE '%admin%')
    | SELECT @timestamp AS subsequent_admin_action_time, source.ip AS subsequent_source_ip, user.name AS subsequent_user_name, url AS subsequent_url, http.request.body.content AS subsequent_request_body
  )
  ON source.ip
| WHERE subsequent_admin_action_time IS NOT NULL
| SELECT @timestamp AS initial_attack_time, source.ip, user.name, url, http.request.body.content, http.request.method, subsequent_admin_action_time, subsequent_url, subsequent_user_name
| SET Description = 'Potential Metabase SQL Injection followed by admin activity via /api/session/reset_password endpoint.'

SecBoard-generated · behavioral · requires customization — Von SecBoard erzeugt und nicht in einer Zielumgebung validiert. Vor dem Einsatz an die eigene Protokollierung anpassen.

Betroffene Produkte

  • cpe:2.3:a:metabase:metabase:*:*:*:*:-:*:*:*
  • cpe:2.3:a:metabase:metabase:*:*:*:*:-:*:*:*
  • cpe:2.3:a:metabase:metabase:*:*:*:*:-:*:*:*
  • cpe:2.3:a:metabase:metabase:*:*:*:*:-:*:*:*
  • cpe:2.3:a:metabase:metabase:*:*:*:*:-:*:*:*
  • cpe:2.3:a:metabase:metabase:*:*:*:*:-:*:*:*
  • cpe:2.3:a:metabase:metabase:*:*:*:*:enterprise:*:*:*
  • cpe:2.3:a:metabase:metabase:*:*:*:*:enterprise:*:*:*
  • cpe:2.3:a:metabase:metabase:*:*:*:*:enterprise:*:*:*
  • cpe:2.3:a:metabase:metabase:*:*:*:*:enterprise:*:*:*
  • cpe:2.3:a:metabase:metabase:*:*:*:*:enterprise:*:*:*
  • cpe:2.3:a:metabase:metabase:*:*:*:*:enterprise:*:*:*

In diesen Analysen erwähnt

Referenzen