Podatność w platformie Metabase umożliwia zdalne wykonanie kodu (RCE) na serwerze przez spreparowany connection string do wbudowanej bazy danych H2. Krytyczna waga CVSS 10.0 i brak wymogu uwierzytelnienia czynią tę lukę wyjątkowo niebezpieczną.
▸ Pokaż oryginał (EN)
Metabase is an open-source business intelligence and analytics platform. Prior to versions 0.43.7.3, 0.44.7.3, 0.45.4.3, 0.46.6.4, 1.43.7.3, 1.44.7.3, 1.45.4.3, and 1.46.6.4, a vulnerability could potentially allow remote code execution on one's Metabase server. The core issue is that one of the supported data warehouses (an embedded in-memory database H2), exposes a number of ways for a connection string to include code that is then executed by the process running the embedded database. Because Metabase allows users to connect to databases, this means that a user supplied string can be used to inject executable code. Metabase allows users to validate their connection string before adding a database (including on setup), and this validation API was the primary vector used as it can be called without validation. Versions 0.43.7.3, 0.44.7.3, 0.45.4.3, 0.46.6.4, 1.43.7.3, 1.44.7.3, 1.45.4.3, and 1.46.6.4 fix this issue by removing the ability of users to add H2 databases entirely. As a workaround, it is possible to block these vulnerabilities at the network level by blocking the endpoints `POST /api/database`, `PUT /api/database/:id`, and `POST /api/setup/validateuntil`. Those who use H2 as a file-based database should migrate to SQLite.
Metabase obsługuje wbudowaną bazę danych H2 (in-memory), która pozwala na zawarcie wykonywalnego kodu bezpośrednio w connection stringu. Ponieważ Metabase umożliwia użytkownikom podłączanie własnych baz danych, atakujący może dostarczyć spreparowany connection string zawierający złośliwy kod. Głównym wektorem ataku był endpoint API służący do walidacji connection stringa przed dodaniem bazy danych (`POST /api/setup/validate`), który można było wywołać bez wcześniejszego uwierzytelnienia. Dostarczony przez atakującego ciąg znaków był następnie wykonywany przez proces obsługujący wbudowaną bazę danych H2.
Atakujący bez żadnego uwierzytelnienia może zdalnie wykonać dowolny kod na serwerze Metabase, co prowadzi do pełnego przejęcia kontroli nad serwerem, wycieku danych oraz potencjalnego lateral movement w sieci wewnętrznej.
Należy zaktualizować Metabase do wersji 0.43.7.3, 0.44.7.3, 0.45.4.3, 0.46.6.4, 1.43.7.3, 1.44.7.3, 1.45.4.3 lub 1.46.6.4, które całkowicie usuwają możliwość dodawania baz H2 przez użytkowników. Jako obejście (workaround) można zablokować na poziomie sieci endpointy: `POST /api/database`, `PUT /api/database/:id` oraz `POST /api/setup/validate`. Użytkownicy korzystający z H2 jako bazy plikowej powinni przeprowadzić migrację do SQLite.
Metabase w wersjach wcześniejszych niż 0.43.7.3, 0.44.7.3, 0.45.4.3, 0.46.6.4, 1.43.7.3, 1.44.7.3, 1.45.4.3 oraz 1.46.6.4.
Poprawka polega na całkowitym usunięciu obsługi baz danych H2 w interfejsie użytkownika. Użytkownicy korzystający z H2 jako bazy plikowej powinni zgodnie z zaleceniem producenta przeprowadzić migrację do SQLite.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:HMetabase
APPMetabase< 0.43.7.3< 1.43.7.30.44.0 – 0.44.7.3 (bez)0.45.0 – 0.45.4.3 (bez)0.46.0 – 0.46.6.4 (bez)1.44.0 – 1.44.7.3 (bez)1.45.0 – 1.45.4.3 (bez)1.46.0 – 1.46.6.4 (bez)
Powiązane podatności
Metabase allows a remote, unauthenticated attacker to inject arbitrary SQL via the '/reset_password' database ...
Metabase – path traversal i odczyt lokalnych plików przez custom GeoJSON
RCE w Metabase poprzez podatny sterownik JDBC Snowflake
Metabase: RCE przez niebezpieczne właściwości połączenia H2 (admin)
Metabase: RCE przez deserializację obiektów Java w zapytaniach H2