CVE-2026-59827 w Metabase: uwierzytelnione RCE przez deserializację obiektów Java w H2 - Security Bez Tabu

CVE-2026-59827 w Metabase: uwierzytelnione RCE przez deserializację obiektów Java w H2

Cybersecurity news

Wprowadzenie do problemu / definicja

CVE-2026-59827 to podatność typu authenticated remote code execution w platformie Metabase, związana z obsługą połączeń do bazy H2. Problem wynika z deserializacji obiektów Java zwróconych przez natywne zapytania H2 bez odpowiedniej walidacji, co może umożliwić wykonanie poleceń systemowych na serwerze aplikacji.

W praktyce oznacza to, że atakujący posiadający ważne konto, możliwość wykonywania natywnych zapytań SQL oraz dostęp do połączenia H2 może doprowadzić do przejęcia hosta, na którym działa Metabase.

W skrócie

  • Podatność dotyczy wybranych wersji Metabase z linii 0.58.x, 0.59.x, 0.60.x i 0.61.x.
  • Warunkiem wykorzystania luki jest uwierzytelnienie oraz możliwość uruchamiania natywnych zapytań SQL wobec bazy H2.
  • Zagrożenie obejmuje także środowiska korzystające z domyślnej przykładowej bazy danych H2.
  • Skutkiem udanego ataku może być pełne wykonanie kodu na serwerze, kradzież danych i dalsza kompromitacja infrastruktury.

Kontekst / historia

Metabase od lat pozostaje popularnym narzędziem analitycznym i BI, wdrażanym zarówno lokalnie, jak i w chmurze. Z punktu widzenia bezpieczeństwa takie platformy są szczególnie atrakcyjnym celem, ponieważ agregują dostęp do wielu źródeł danych i przechowują konfiguracje połączeń oraz poświadczenia.

W opisywanym przypadku publicznie udostępnione informacje wskazują, że podatność obejmuje wersje od 0.58.0 do poniżej 0.58.15, od 0.59.0 do poniżej 0.59.12, od 0.60.0 do poniżej 0.60.6.3 oraz od 0.61.0 do poniżej 0.61.1.4. Oznacza to, że zagrożone mogą być nie tylko pojedyncze instalacje produkcyjne, lecz także środowiska testowe i deweloperskie, gdzie H2 bywa pozostawiane jako komponent pomocniczy lub demonstracyjny.

Analiza techniczna

Mechanizm podatności koncentruje się na natywnych zapytaniach SQL wykonywanych wobec silnika H2. Baza ta obsługuje typ danych OTHER, który może przenosić zserializowane obiekty Java. Jeżeli aplikacja odbiera taki wynik i przeprowadza deserializację bez ścisłej kontroli typu oraz dozwolonych klas, otwiera to drogę do uruchomienia łańcucha gadgetów prowadzącego do wykonania kodu.

Typowy scenariusz ataku obejmuje kilka etapów. Najpierw napastnik uwierzytelnia się do Metabase i uzyskuje aktywną sesję. Następnie identyfikuje skonfigurowaną bazę opartą na H2, przygotowuje ładunek w postaci zserializowanego obiektu Java i osadza go w natywnym zapytaniu SQL. Po zwróceniu wartości typu OTHER aplikacja deserializuje dane, co może skutkować wykonaniem polecenia systemowego na serwerze.

Nie jest to klasyczny przypadek SQL injection. Zagrożenie wynika z połączenia legalnej funkcji wykonywania natywnych zapytań z niebezpiecznym przetwarzaniem danych zwracanych przez bazę. Taki model ataku może być trudniejszy do wykrycia, ponieważ standardowe mechanizmy ochronne często koncentrują się wyłącznie na filtrowaniu wejścia.

Konsekwencje / ryzyko

Najpoważniejszą konsekwencją CVE-2026-59827 jest zdalne wykonanie kodu w kontekście procesu Metabase. To z kolei może otworzyć drogę do dalszych działań post-eksploatacyjnych i pełnej kompromitacji środowiska analitycznego.

  • odczyt i eksfiltracja danych analitycznych,
  • przejęcie zapisanych poświadczeń do baz danych,
  • modyfikacja dashboardów, zapytań i modeli danych,
  • pivoting do innych systemów dostępnych z hosta aplikacyjnego,
  • utrzymanie dostępu poprzez dodatkowe narzędzia lub mechanizmy trwałości,
  • wykorzystanie serwera jako punktu wejścia do dalszego ataku w sieci wewnętrznej.

Choć wektor wymaga logowania, nie należy go traktować jako zagrożenia o niskim priorytecie. W wielu organizacjach konta analityczne są liczne, a przejęcie jednego z nich przez phishing, reuse haseł lub kradzież sesji może wystarczyć do uruchomienia pełnego łańcucha ataku.

Rekomendacje

Podstawowym działaniem obronnym jest jak najszybsza aktualizacja Metabase do wersji usuwających problem w odpowiedniej gałęzi wydawniczej. Równie ważne jest potwierdzenie, czy w środowisku faktycznie używana jest baza H2, w tym także domyślna przykładowa baza danych.

  • ograniczyć możliwość wykonywania natywnych zapytań SQL wyłącznie do ściśle kontrolowanej grupy użytkowników,
  • przeprowadzić przegląd ról i uprawnień zgodnie z zasadą najmniejszych uprawnień,
  • usunąć z produkcji zbędne połączenia H2 i komponenty demonstracyjne,
  • odseparować serwer Metabase od wrażliwych zasobów poprzez segmentację sieci,
  • ograniczyć uprawnienia konta systemowego, na którym działa aplikacja,
  • monitorować logi API, sesje oraz nietypowe zapytania do endpointów związanych z bazami i datasetami,
  • szukać śladów zapytań wykorzystujących typ OTHER lub anomalii związanych z deserializacją,
  • przeprowadzić rotację poświadczeń i sekretów, jeśli istnieje podejrzenie kompromitacji,
  • zweryfikować integralność hosta pod kątem procesów, zadań cyklicznych, plików tymczasowych i podejrzanych połączeń wychodzących.

Podsumowanie

CVE-2026-59827 pokazuje, że nawet legalne funkcje analityczne mogą stać się krytycznym wektorem ataku, jeśli aplikacja niebezpiecznie przetwarza dane zwracane przez backend bazy danych. Połączenie natywnych zapytań H2 i niezwalidowanej deserializacji obiektów Java prowadzi w tym przypadku do uwierzytelnionego zdalnego wykonania kodu.

Dla zespołów bezpieczeństwa i administratorów Metabase priorytetem powinny być szybkie patchowanie, eliminacja zbędnych komponentów H2, ograniczenie uprawnień do native SQL oraz analiza potencjalnych śladów nadużyć.

Źródła