Яндекс.Метрика
Услуги Портфолио Контакты БлогНовости +7 (800) 511‑32‑27 Обсудить проект
Безопасность

PostGREShell: 12-летняя уязвимость PostgreSQL ведёт к захвату сервера

6 сентября 2026·7 мин чтения
PostgreSQLCVE-2026-6471
PostGREShell: 12-летняя уязвимость PostgreSQL ведёт к захвату сервера

Коротко о главном

В PostgreSQL закрыли уязвимость PostGREShell (CVE-2026-6471, CVSS 7.2), прожившую в СУБД двенадцать лет. Учётная запись без прав суперпользователя, но с атрибутом REPLICATION, может через механизм логического декодирования загрузить произвольную библиотеку и выполнить код от имени системного пользователя, под которым работает сервер, а затем повыситься до суперпользователя базы. Патчи вышли в версиях 18.6, 17.11, 16.15, 15.19 и 14.24 — обновляться нужно, даже если наружу торчит только «резервная» реплика.

Уязвимость затрагивает практически любую инсталляцию: дыра появилась ещё в PostgreSQL 9.4 (2014) вместе с логическим декодированием, а логическая репликация сегодня — стандартная часть продакшена. Для команд, у которых PostgreSQL лежит в основе backend-разработки и аналитических конвейеров, это повод не только накатить патч, но и пересмотреть, кому и зачем выдан REPLICATION.

Активной массовой эксплуатации на момент публикации не зафиксировано, в каталоге CISA KEV записи пока нет. Но публичное раскрытие деталей меняет расклад: одной скомпрометированной учётки репликации теперь достаточно для полного захвата хоста. Если базы данных обслуживает подрядчик или внутренняя команда поддержки и модернизации, задачу на обновление стоит поставить в приоритет этой недели.

Что произошло

Проект PostgreSQL и исследователи безопасности раскрыли детали давней ошибки в логическом декодировании — механизме, который читает журнал предзаписи (WAL) и превращает изменения в поток событий для логической репликации и CDC-инструментов. О находке сообщила компания Cyera; исследователи присвоили уязвимости имя PostGREShell. Патч был выпущен в плановом релизе 13 августа 2026 года, а развёрнутый технический разбор появился в начале сентября — именно после него о проблеме заговорили широко.

Формально это ошибка отсутствующей авторизации: PostgreSQL позволял владельцу роли REPLICATION самому указать, какой «плагин вывода» (output plugin) использовать при создании слота логической репликации, и не проверял, что это доверенная библиотека. Оценка CVSS — 7.2: не «десятка», но вектор опасен тем, что превращает узкую, часто недооценённую привилегию в путь к полному контролю над сервером. Под ударом все ветки от 9.4 до 18 включительно (подтверждено вплоть до 18.5).

Как работает атака

Логическое декодирование загружает плагин вывода как разделяемую библиотеку через dlopen(). В уязвимых версиях парсер протокола репликации принимал в имени плагина символы обхода пути (../ и разделители каталогов), поэтому атакующий с ролью REPLICATION мог в команде CREATE_REPLICATION_SLOT подсунуть путь к своей библиотеке вместо штатного pgoutput. Сервер загружал её и исполнял код от имени ОС-аккаунта postgres.

Дальше — стандартная цепочка эскалации: получив выполнение кода от системного пользователя базы, атакующий вызывает внутренние функции и правит системный каталог pg_authid, назначая себе атрибут суперпользователя. Так временный доступ «на чтение WAL» превращается в постоянный бэкдор и полный контроль над данными. Возможность кросс-платформенная: под Windows библиотеку можно подгрузить с подконтрольной SMB-шары, под Linux и macOS требуется либо автомонтирование NFS, либо уже имеющийся доступ на запись в файловую систему сервера.

Ключевой нюанс — низкий порог входа. REPLICATION не даёт прав суперпользователя и потому часто раздаётся щедро: сервисным аккаунтам бэкапа, коннекторам репликации, ETL- и CDC-инструментам (Debezium и подобные). Каждая такая учётка в уязвимой версии — потенциальная точка полного захвата хоста, а не «просто доступ к копии данных».

Кто в зоне риска

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

Отдельная категория риска — управляемые базы и мультитенантные сценарии, где REPLICATION мог быть выдан клиенту или соседнему сервису «для удобства». Здесь одна скомпрометированная или недобросовестная учётка способна выйти за пределы своей базы и добраться до операционной системы хоста. Для проектов в регулируемых отраслях это ещё и вопрос комплаенса: несанкционированный доступ к данным на уровне ОС — это инцидент, подлежащий разбору и, возможно, уведомлению регулятора.

Что делать командам

Обновиться до пропатченных версий — 18.6, 17.11, 16.15, 15.19 или 14.24 — это первоочередная и главная мера. В обновлении появился новый серверный параметр output_plugin_libraries: он задаёт белый список библиотек, которые разрешено загружать как плагины вывода логического декодирования, и по умолчанию содержит только pgoutput и test_decoding. Именно этот список закрывает путь к загрузке произвольной библиотеки.

Важная эксплуатационная деталь: если вы используете сторонние плагины — например wal2json или decoderbufs, — их нужно явно добавить в output_plugin_libraries, иначе после обновления логическое декодирование с этими плагинами перестанет работать и вернёт ошибку со ссылкой на новый параметр. Проверьте это до обновления продакшена, чтобы не сломать работающую репликацию или CDC-конвейер.

Параллельно с патчем — наведите порядок в привилегиях. Проведите инвентаризацию всех ролей с атрибутом REPLICATION, снимите его с учёток, которым он не нужен, и по возможности ограничьте доступ к порту репликации на сетевом уровне. Это тот случай, когда патч и гигиена доступов работают вместе: даже после обновления лишняя привилегия остаётся лишней поверхностью атаки. Если своей экспертизы по безопасности инфраструктуры не хватает, аудит конфигурации СУБД и прав доступа можно вынести на отдельную команду.

Часто задаваемые вопросы

Насколько это опасно, если CVSS всего 7.2? Оценка отражает то, что для атаки нужна уже существующая учётка с ролью REPLICATION. Но последствия — выполнение кода на сервере и захват суперпользователя — максимально тяжёлые, а REPLICATION часто раздаётся сервисным аккаунтам без должного контроля. Поэтому реальный риск для многих инсталляций выше, чем можно решить по одному числу.

Какие версии затронуты и куда обновляться? Уязвимы все ветки PostgreSQL с 9.4 по 18 включительно. Исправления вышли в 18.6, 17.11, 16.15, 15.19 и 14.24 — обновляйтесь на соответствующую вашей ветке версию.

Есть ли активная эксплуатация? На момент публикации публично известных эксплойтов и записи в каталоге CISA KEV нет. Однако технические детали уже раскрыты, поэтому окно до появления рабочих эксплойтов лучше считать коротким и не откладывать обновление.

Что делать, если сразу обновиться нельзя? Как временную меру — ревизуйте и минимизируйте роли с REPLICATION, ограничьте сетевой доступ к репликации и усильте мониторинг создания слотов логической репликации. Это снижает риск, но не заменяет патч.

Источники

The Hacker News — PostgreSQL Fixes 12-Year-Old Logical Decoding Flaw Enabling Replication-Role Code Execution, сентябрь 2026 года.

SecurityWeek — 12-Year-Old PostgreSQL Vulnerability Enables Database, Server Takeover, сентябрь 2026 года.

Материал подготовлен редакцией YuSMP Group по открытым источникам. Нужна экспертиза по теме или разработка под задачу — обсудим проект.

Защитим ваши базы данных и инфраструктуру

Проведём аудит конфигурации PostgreSQL, ролей и доступов, выстроим безопасное сопровождение баз и облачной инфраструктуры. Обсудим вашу задачу.

Облако, DevOps и безопасность