Описание: Критическая уязвимость CVE-2026-6471 в PostgreSQL позволяла учётным записям репликации получить полный контроль над сервером путём загрузки вредоносного кода.

На протяжении более десяти лет служебная учётная запись, предназначенная для репликации в системе управления базами данных PostgreSQL, представляла серьёзную угрозу безопасности. Она могла служить скрытым лазейкой, обеспечивая несанкционированный доступ из базы данных непосредственно в операционную систему сервера. Данная уязвимость возникла ещё в версии PostgreSQL 9.4, выпущенной в 2014 году, и давала возможность учётной записи, обладающей правами REPLICATION, исполнять любой машинный код.

Проблема была классифицирована под номером CVE-2026-6471 и получила оценку серьёзности 7,2 по системе CVSS. Команда специалистов Cyera обозначила эту технику атаки как PostGREShell. Для успешного осуществления атаки злоумышленнику были необходимы учётные данные пользователя с атрибутом REPLICATION и активированное логическое декодирование. Такие учётные записи обычно используются средствами автоматического резервного копирования, вспомогательными серверами данных, системами захвата изменений (CDC) и прочими приложениями, которым требуется мониторить журнал модификаций PostgreSQL.

Основная причина проблемы заключалась в реализации механизма подгрузки расширений для логического декодирования. Пользователь с правами REPLICATION получал возможность создать слот репликации и указать расширение, которое преобразует записи журнала записи-чтения (WAL) в последовательность изменений базы данных. При этом PostgreSQL передавал названное расширение непосредственно на уровень загрузчика операционной системы, не осуществляя валидацию пути, которая предусмотрена для обычных SQL-команд LOAD.

В результате такого упущения вместо легитимного расширения возможно было подставить произвольную библиотеку, доступную системному пользователю, от имени которого функционирует PostgreSQL. На платформах Linux и macOS сервер загружал файл через функцию dlopen(), а в Windows применялась функция LoadLibrary(). На платформе Windows атака могла быть реализована полностью удалённо: использование UNC-пути позволяло заставить сервер загрузить вредоносную библиотеку с внешнего SMB-хранилища. В определённых конфигурациях Linux и macOS схожий вектор атаки мог быть реализован посредством NFS, но в остальных ситуациях угрозе требовалось предварительно разместить библиотеку на целевом сервере альтернативным способом.

Загруженная библиотека функционировала в контексте процесса PostgreSQL, используя привилегии системного пользователя, который запустил эту СУБД. Специалисты компании Cyera продемонстрировали, что код внутри такой библиотеки способен обойти встроенную систему контроля доступа SQL, изменить служебный каталог pg_authid и преобразовать исходную служебную учётную запись в суперпользователя. Впоследствии атакующий получал неограниченный доступ ко всем базам данных, мог просматривать все файлы, доступные серверу, запускать команды системы и закреплять своё присутствие в инфраструктуре.

Компания Cyera обнаружила на платформе VirusTotal сто четырнадцать вредоносных расширений для PostgreSQL, включая программы для майнинга криптовалют, трояны и утилиты удалённого управления. Это открытие не устанавливает факт активной эксплуатации именно уязвимости CVE-2026-6471 в реальных боевых сценариях. На момент опубликования исследования обнаруженных прецедентов применения техники PostGREShell против организаций обнаружено не было.

Разработчики PostgreSQL закрыли уязвимость тринадцатого августа в версиях 18.6, 17.11, 16.15, 15.19 и 14.24. Исправление включало введение параметра output_plugin_libraries, который ограничивает использование только явно одобренными расширениями для логического декодирования. В стандартной конфигурации перечень включает встроенные расширения pgoutput и test_decoding, поэтому системные администраторы, работающие с wal2json, decoderbufs или иными сторонними расширениями, должны будут вручную добавить доверенные библиотеки в параметры конфигурации после установки обновления.

Уязвимый механизм существовал с момента внедрения функции логического декодирования в PostgreSQL 9.4. Команда Cyera в своём развёрнутом анализе техники PostGREShell рекомендует администраторам не ограничиваться лишь обновлением: следует провести полную проверку всех учётных записей с правами REPLICATION, удалить неиспользуемые разрешения, ограничить допустимые адреса подключения в конфигурации pg_hba.conf и заблокировать исходящие соединения к SMB и NFS в тех местах, где они не применяются. Патчи были выпущены для актуальных ветвей PostgreSQL версий 14–18, вследствие чего устаревшие версии 9.4–13 нуждаются в переходе на современную ветвь.