Metabase Enterprise CVE-2026-33725: Authenticated Admin RCE via H2 JDBC INIT Injection in Serialization Import, Public PoC Released
A high-severity vulnerability, CVE-2026-33725 (CVSS v3.1 7.2), affects Metabase Enterprise and allows an authenticated administrator to achieve remote command execution. It was discovered by Hacktron AI and Rahul Maini. The flaw lies in the /api/ee/serialization/import route, where the subname field of an imported YAML is concatenated unsanitized into the JDBC connection string. The Hakai Pentest team published a technical analysis and a PoC on GitHub that yields a reverse shell. The article does not report in-the-wild exploitation.
Detalhes técnicos
- The import route accepts a
.tar.gzcontaining YAML that defines a new database (name, engine, details). With the H2 engine, the unsanitizedsubnamelets an attacker inject theINITparameter, which runs arbitrary SQL when the connection is established. - The connection is forced by triggering the database sync in the admin panel.
- Step 1: the H2
CSVWRITEfunction writes an arbitrary file to disk, here a Clojure payload (/tmp/.poc_*.clj). Column header and delimiter options are set so the output is valid code. - Step 2: the payload uses
clojure.java.shell/shto run/bin/sh -c. Characters are built withstrand backslash-escaped literals to avoid quote-escaping problems. - Step 3:
CREATE ALIAS ... FOR "clojure.lang.Compiler.loadFile"followed byCALL LOADCLJ(...)loads and executes the written file at runtime, giving command execution (demonstrated withwhoami).
Remediação
- Update Metabase to the latest patched version (see advisory GHSA-fppj-vcm3-w229).
- If an immediate update is not possible, disable the
/api/ee/serialization/importroute as a workaround. - Restrict and audit administrator accounts, since exploitation requires admin privileges.
Linha do tempo
-
Metabase Enterprise CVE-2026-33725: Authenticated Admin RCE via H2 JDBC INIT Injection in Serialization Import, Public PoC Released
ler a análise desta fonte ocultar
A high-severity vulnerability, CVE-2026-33725 (CVSS v3.1 7.2), affects Metabase Enterprise and allows an authenticated administrator to achieve remote command execution. It was discovered by Hacktron AI and Rahul Maini. The flaw lies in the
/api/ee/serialization/importroute, where thesubnamefield of an imported YAML is concatenated unsanitized into the JDBC connection string. The Hakai Pentest team published a technical analysis and a PoC on GitHub that yields a reverse shell. The article does not report in-the-wild exploitation.Technical Details
- The import route accepts a
.tar.gzcontaining YAML that defines a new database (name, engine, details). With the H2 engine, the unsanitizedsubnamelets an attacker inject theINITparameter, which runs arbitrary SQL when the connection is established. - The connection is forced by triggering the database sync in the admin panel.
- Step 1: the H2
CSVWRITEfunction writes an arbitrary file to disk, here a Clojure payload (/tmp/.poc_*.clj). Column header and delimiter options are set so the output is valid code. - Step 2: the payload uses
clojure.java.shell/shto run/bin/sh -c. Characters are built withstrand backslash-escaped literals to avoid quote-escaping problems. - Step 3:
CREATE ALIAS ... FOR "clojure.lang.Compiler.loadFile"followed byCALL LOADCLJ(...)loads and executes the written file at runtime, giving command execution (demonstrated withwhoami).
Remediation
- Update Metabase to the latest patched version (see advisory GHSA-fppj-vcm3-w229).
- If an immediate update is not possible, disable the
/api/ee/serialization/importroute as a workaround. - Restrict and audit administrator accounts, since exploitation requires admin privileges.
- The import route accepts a