Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/c0gnit00/cve-2026-59827
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСтатьи и ИсследованияОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubc0gnit00/cve-2026-59827

CVE-2026-59827

Блог о CVE-2026-59827, небезопасная десериализация вывода запросов H2

Репозиторий
142 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-59827 — Небезопасная десериализация результатов H2-запросов в Metabase

GHSA-w95f-x9v9-wv36 | CVSS 9.9 Critical | CWE-502: Десериализация недоверенных данных

eror loading image

Обзор

CVE-2026-59827 — это критическая уязвимость удаленного выполнения кода в Metabase, популярной платформе бизнес-аналитики и аналитики данных с открытым исходным кодом. Проблема связана с тем, как Metabase обрабатывает результаты запросов, возвращаемые через H2-соединение с базой данных. Когда нативный SQL-запрос к источнику H2 возвращает столбец с типом OTHER, Metabase десериализует сырые байты этого столбца в Java-объект без проверки. Таким образом, аутентифицированный пользователь, имеющий возможность выполнять нативные запросы, может внедрить вредоносную сериализованную нагрузку в результирующий набор и вызвать произвольное выполнение кода на сервере, где работает Metabase.

Уязвимости присвоен CVSS-балл 9.9, что отражает минимальные предварительные условия и полное выполнение кода на стороне сервера при успешной эксплуатации.


Схема версионирования Metabase

Metabase выпускает две параллельные редакции из одного цикла релизов. Версии открытого исходного кода используют префикс 0 — например, v0.61.1. Версии корпоративной (коммерческой) редакции используют префикс 1 — например, v1.61.1. Обе редакции имеют общую кодовую базу и выпускаются вместе, поэтому уязвимость, затрагивающая v1.61.0, в равной степени затрагивает v0.61.0. В этой статье номера версий записаны с префиксом 1.xx (корпоративная), но каждая затронутая версия напрямую отображается на версию 0.xx с открытым исходным кодом заменой начальной 1 на 0.


Затронутые версии

CVE-2026-59826 и CVE-2026-59827 были раскрыты вместе в июле 2026 года. Они имеют пересекающиеся диапазоны версий, но разные точки исправления.

CVE-2026-59827 — Небезопасная десериализация (этот пост)

Затронуты корпоративные версии 1.58.0–1.58.14, 1.59.0–1.59.11, 1.60.0–1.60.6.2 и 1.61.0–1.61.1.3. Соответствующие версии с открытым исходным кодом: 0.58.0–0.58.14, 0.59.0–0.59.11, 0.60.0–0.60.6.2 и 0.61.0–0.61.1.3.

Внутренний патч был выпущен как 1.61.1.4 (корпоративная) и 0.61.1.4 (открытая). Первое публично доступное исправленное обновление в линейке 1.61 — это 1.61.2 (v1.61.2.x / v0.61.2.x). Облачные экземпляры Metabase были исправлены автоматически провайдером.

CVE-2026-59826 — Небезопасные свойства H2-подключения (связанная)

Затронуты корпоративные версии 1.55.0–1.58.15.0, 1.59.0–1.59.11, 1.60.0–1.60.6.2 и 1.61.0–вся линейка 1.61.1.x. Первый полностью исправленный публичный релиз — 1.61.2 (v1.61.2.x / v0.61.2.x). Область CVE-2026-59826 шире, охватывая ветку 1.55, что отражает более давнее присутствие недостаточно проверенного пути кода, связанного с созданием базы данных.


Предпосылки: Десериализация в Java

Механизм сериализации Java позволяет преобразовать объект в памяти в плоскую последовательность байтов, сохранить или передать её, а затем восстановить, вызвав ObjectInputStream.readObject(). Критическое свойство этого механизма состоит в том, что при восстановлении выполняется код. Конструкторы классов, переопределения readObject и финализаторы — всё это выполняется во время десериализации. Если читаемые байты поступают из недоверенного источника, злоумышленник может подделать их так, чтобы запустить произвольные вызовы методов через последовательность существующих легитимных классов, уже загруженных в JVM. Такие последовательности называются gadget-цепочками.

Gadget-цепочки не требуют внедрения нового кода в приложение. Они эксплуатируют связи существующих библиотечных классов, нормальные методы которых при вызове в нужном порядке во время десериализации в конечном итоге достигают точки выполнения, такой как Runtime.exec(). Инструменты вроде ysoserial существуют именно для генерации таких нагрузок для широко используемых библиотек, таких как Apache Commons Collections, Spring Framework и других.


Предпосылки: Тип OTHER в H2

H2 — это встраиваемая реляционная база данных на чистой Java. Она определяет специальный тип столбца SQL под названием OTHER, который действует как проходное отверстие для произвольных Java-объектов. Когда H2 сохраняет значение в столбце OTHER, он записывает байты, созданные ObjectOutputStream. При чтении значения он вызывает ObjectInputStream.readObject(), чтобы восстановить объект. Сырые сериализованные байты также можно напрямую передать в запросе, используя шестнадцатеричный синтаксис H2:

SELECT CAST(X'ACED0005...' AS OTHER); 
-- или 
SELECT X'ACED0005...'::OTHER;

Префикс ACED с последующим 0005 — это магическое число и версия протокола потока сериализации Java. Любая шестнадцатеричная строка, начинающаяся с ACED0005, является потоком сериализованных Java-объектов.

Когда H2 обрабатывает этот запрос, он десериализует шестнадцатеричные байты на стороне базы данных. Полученный объект затем передается обратно вызывающему приложению через JDBC ResultSet. Если приложение проверяет значение столбца — например, для форматирования при выводе, — оно может запустить дополнительную обработку. Именно это и делает Metabase в уязвимом пути кода.


Как работает уязвимость

Уязвимый путь кода

Metabase получает JDBC ResultSet от драйвера H2 и проверяет метаданные столбцов, чтобы решить, как отображать каждое значение пользователю. Когда он встречает столбец с типом JDBC Types.OTHER (также известным как JAVA_OBJECT), уязвимые версии Metabase пытаются десериализовать сырые байты, чтобы получить отображаемое представление. Этот вызов десериализации, ObjectInputStream.readObject(), выполняется без какой-либо фильтрации по белому списку или проверки класса.

Последовательность событий:

  1. Аутентифицированный злоумышленник открывает редактор SQL-запросов Metabase и нацеливается на подключенную H2-базу данных. Образец базы данных подходит.
  2. Злоумышленник отправляет нативный SQL-запрос, который возвращает столбец типа OTHER, содержащий сфабрикованную сериализованную нагрузку.
  3. H2 обрабатывает запрос и возвращает сырые байты как столбец JAVA_OBJECT в ResultSet.
  4. Конвейер обработки результатов Metabase обнаруживает тип столбца OTHER и вызывает readObject() для байтов.
  5. Встроенная gadget-цепочка в нагрузке срабатывает, достигая Runtime.exec() и выполняя команду злоумышленника от имени пользователя ОС, под которым запущен процесс Metabase.

Исправление

Исправленные версии решают проблему путем проверки метаданных результатов JDBC перед попыткой десериализации. Если столбец имеет тип JAVA_OBJECT, Metabase теперь полностью отвергает его, а не пытается разобрать.


Ограничения и поверхность атаки

Какой доступ требуется

Для эксплуатации требуется аутентификация. Злоумышленник должен иметь учетную запись Metabase с разрешением на выполнение нативных запросов к базе данных на основе H2. Учетные записи администратора удовлетворяют этому условию по умолчанию. Обычные пользовательские учетные записи также могут удовлетворять этому требованию, если администратор предоставил им разрешение на данные нативных запросов для соответствующей базы данных.

H2 как хранилище данных уже удален

Metabase удалил поддержку добавления H2 в качестве нового соединения для хранилища данных в версии 0.46.6.4, выпущенной в 2023 году. Попытка зарегистрировать новое H2-соединение через интерфейс администратора возвращает ошибку «H2 не поддерживается как хранилище данных». Это удаление было ответом на более ранние уязвимости H2 и предназначалось для устранения риска подключения к контролируемым злоумышленником экземплярам H2.

Скачать инструмент