Логическое декодирование в PostgreSQL позволяет выполнить код и повысить привилегии

PostgreSQL

Исследователи из компании Cyera обнаружили в PostgreSQL уязвимость, превращающую служебную учетную запись репликации в точку входа для выполнения произвольного кода и получения полного контроля над базой данных. Проблема получила идентификатор CVE-2026-6471 и затронула ядро СУБД, начиная с версии 9.4, выпущенной более десяти лет назад. Успешная эксплуатация дает возможность загрузить вредоносную библиотеку в процесс сервера, обойти проверки прав и оставить в системе скрытый механизм повторного доступа.

Уязвимость CVE-2026-6471

PostgreSQL использует логическое декодирование для передачи изменений данных внешним инструментам. Этот механизм лежит в основе потоковой репликации, систем миграции, платформ аналитики и сервисов, которые отслеживают изменения в реальном времени. Когда клиент создает слот для чтения изменений, он указывает имя модуля вывода. Такой модуль представляет собой скомпилированную библиотеку, которую сервер загружает в собственный процесс. Поэтому выбор имени модуля напрямую определяет, какой код окажется исполненным внутри базы данных.

В обычном режиме PostgreSQL защищает загрузку библиотек от не-суперпользователей. Встроенная проверка имен ограничивает доступ только доверенными административными каталогами и блокирует небезопасные пути. Как установили исследователи, этот контроль не распространяется на путь загрузки модулей логического декодирования. Злоумышленник, обладающий ролью репликации, может передать серверу имя модуля с абсолютным путем, с последовательностью символов для обхода каталогов или даже с сетевым адресом. Система передает это значение загрузчику без санации, и загрузчик исполняет код из указанной библиотеки с правами процесса базы данных.

Вектор атаки зависит от платформы. На Windows эксплуатация может быть полностью удаленной. Атакующий размещает вредоносную библиотеку на собственном SMB-сервере и указывает в имени модуля UNC-путь. База данных самостоятельно подключается к этому серверу, загружает библиотеку и выполняет ее код. При этом злоумышленнику не требуется предварительно записать файл на целевую систему. На Linux и macOS для атаки обычно нужна локальная библиотека, которую уже удалось разместить на сервере другим способом. Однако если на сервере настроено автоматическое монтирование NFS-сетей, то вредоносный файл может быть загружен удаленно по сетевому пути.

После выполнения кода открывается доступ к внутренним структурам PostgreSQL. Атакующий может изменять таблицы системного каталога, где хранятся сведения о привилегиях, и назначить своей учетной записи статус суперпользователя в обход стандартных проверок SQL. Такой обход не оставляет следов в виде обычных административных операций, и обнаружить компрометацию штатными средствами сложно. Суперпользователь базы данных способен читать любые данные, включая сохраненные учетные данные приложений, получать доступ к файлам операционной системы и в некоторых конфигурациях запускать системные команды. Вредоносный модуль может также изменить настройки аутентификации, добавить себя в список автозагрузки при старте сервера и восстанавливать привилегии даже после того, как администратор попытается устранить последствия атаки. Таким образом, уязвимость открывает путь не только к единовременному выполнению кода, но и к закреплению в системе.

Cyera предупреждает, что при поиске в открытой базе вредоносных файлов были найдены 114 подозрительных PostgreSQL-плагинов. Среди них оказались майнеры криптовалют, трояны и модули для обратного подключения. Их наличие не доказывает, что все они использовали именно эту уязвимость, однако показывает общий риск, связанный с загрузкой непроверенных расширений в сервер баз данных. Особенно тревожно то, что PostgreSQL широко применяется в корпоративной инфраструктуре и облачных платформах. Логическая репликация стала стандартной частью эксплуатации многих систем, а роль репликации часто воспринимается как безобидная техническая необходимость. Ее выдают инструментам резервного копирования, системам мониторинга и сервисам синхронизации, при этом такие учетные записи редко находятся под пристальным контролем.

Специалисты оценивают опасность в 7,2 балла по шкале CVSS. Это высокая оценка, хотя и ниже порога, после которого уязвимость считается критической. При этом вектор атаки требует от злоумышленника наличия подлинной роли репликации, что несколько снижает уровень угрозы для тех, кто уже строго ограничил такие учетные записи. Тем не менее в реальных средах компрометация даже одной учетной записи с правом репликации становится началом цепочки, ведущей к полному захвату базы данных.

Производитель уже выпустил исправления. Обновленные версии PostgreSQL - 18.6, 17.11, 16.15, 15.19 и 14.24. Администраторам следует как можно скорее установить патчи. Кроме того, необходимо пересмотреть все учетные записи, которым назначено право репликации, и убрать его там, где оно не используется. Подключения оставшихся учетных записей стоит ограничить только доверенными хостами через настройки аутентификации. Повсеместные записи, разрешающие подключение с любых адресов, для репликации недопустимы. Также из серверов баз данных следует заблокировать исходящий трафик по портам SMB и NFS, если эти протоколы не задействованы для работы. Системы автоматического монтирования, которые не применяются, лучше отключить, чтобы исключить возможность удаленной доставки вредоносных библиотек.

Мониторинг инфраструктуры безопасности стоит настроить так, чтобы обращать внимание на необычные попытки создания слотов репликации и на имена модулей, содержащие символы пути. Такие признаки могут указывать на попытку эксплуатации. Имя плагина, в котором встречаются слеши, обратный слеш или элементы перехода между каталогами, должно рассматриваться как высокоприоритетный индикатор атаки.

Этот случай - очередное напоминание о том, как опасны разрывы в защите смежных компонентов. В PostgreSQL основной механизм загрузки библиотек защищен, а параллельный путь логического декодирования оставался без контроля на протяжении примерно двенадцати лет. Похожие проблемы ранее находили в других популярных серверных продуктах, где загрузка модулей также была отделена от общей модели безопасности. Уязвимость подчеркивает, что все интерфейсы, способные исполнять код из внешних файлов, требуют одинаково строгой проверки, независимо от того, насколько доверенной выглядит роль, которой они доступны.

Ссылки

Комментарии: 0