Разработчики PostgreSQL выпустили одновременно пять новых версий - 18.4, 17.10, 16.14, 15.18 и 14.23. В них устранено 11 уязвимостей и более 60 ошибок, накопившихся за несколько месяцев. Некоторые проблемы позволяют злоумышленнику удалённо выполнить произвольный код или получить доступ к конфиденциальным данным. Обновление затронуло все поддерживаемые ветки, включая версию 14, которая скоро достигнет конца жизненного цикла.
Детали уязвимостей
Почему это событие важно? PostgreSQL - одна из самых популярных систем управления базами данных в мире. Её используют и крупные корпорации, и государственные учреждения, и разработчики веб-приложений. Любая серьёзная уязвимость в этой СУБД может привести к массовым утечкам данных, остановке бизнес-процессов или финансовым потерям. Поэтому выход патча - сигнал для всех администраторов: обновляться нужно немедленно.
Среди одиннадцати зафиксированных уязвимостей (идентификаторы CVE-2026-6472 - CVE-2026-6479, а также CVE-2026-6575, CVE-2026-6637, CVE-2026-6638) есть несколько критических. Рассмотрим наиболее опасные.
Первая серьёзная проблема - переполнение целочисленного буфера, приводящее к записи за границы выделенной памяти (CVE-2026-6473, оценка CVSS 8.8). Эта уязвимость затрагивает сразу несколько механизмов ядра PostgreSQL. Атакующий, отправляя специально сформированный запрос, может вызвать аварийное завершение сервера или, при определённых условиях, выполнить произвольный код. По сути, злоумышленник получает возможность управлять памятью базы данных.
Вторая критическая находка касается утилит pg_basebackup и pg_rewind (CVE-2026-6475, CVSS 8.8). Они позволяют перезаписывать любые файлы на сервере, используя символические ссылки. Если суперпользователь источника атаки подменит, например, файл .bashrc, то после восстановления резервной копии операционная система выполнит его команды. Атака требует определённых условий, но в сценариях с миграцией виртуальных машин риск становится реальным.
Ещё одна уязвимость с высоким баллом (CVSS 8.8) обнаружена в библиотеке libpq - клиентском интерфейсе PostgreSQL. Функции lo_export(), lo_read(), lo_lseek64() и lo_tell64() вызывают PQfn с небезопасными параметрами. Серверный суперпользователь может переполнить стек клиента произвольными данными. Это означает, что при работе с большими объектами (крупными двоичными данными) злоумышленник способен взять под контроль утилиты psql или pg_dump.
Отдельного внимания заслуживает SQL-инъекция в модуле refint (CVE-2026-6637, CVSS 8.8). Непривилегированный пользователь базы данных может выполнить произвольный код от имени учётной записи, под которой запущен сервер PostgreSQL. Кроме того, если в приложении используется каскадное обновление первичного ключа, инъекция SQL позволяет манипулировать любыми данными. Эта уязвимость затрагивает все версии с 14 по 18.
Есть и менее опасные, но всё же неприятные проблемы. Например, утечка хешей паролей по стороннему каналу (CVE-2026-6478, CVSS 6.5). В процессе аутентификации через MD5 (устаревший, но всё ещё используемый механизм) злоумышленник может измерить время сравнения хешей и восстановить пароль. По умолчанию в новых версиях PostgreSQL включён более защищённый протокол scram-sha-256, однако базы данных, обновлённые с версии 13 и старше, могут содержать старые MD5-хеши.
Уязвимость в функции timeofday() (CVE-2026-6474) позволяет прочитать фрагменты памяти сервера через специально сформированную временную зону. Это не даёт прямого контроля над системой, но может помочь злоумышленнику собрать информацию для более сложной атаки.
Также исправлена проблема с рекурсией при установке SSL/GSS-соединения (CVE-2026-6479, CVSS 7.5). Если злоумышленник может подключиться к Unix-сокету, он способен вызвать отказ в обслуживании, исчерпав ресурсы сервера. При отключённых SSL и GSS такая же атака возможна и через TCP.
Для версий 17 и 18 закрыта SQL-инъекция в утилите pg_createsubscriber (CVE-2026-6476, CVSS 7.2). Пользователь с правом pg_create_subscription может внедрить вредоносный SQL в имя подписки, который выполнится при следующем запуске утилиты. Аналогичная проблема обнаружена в команде REFRESH PUBLICATION (CVE-2026-6638, CVSS 3.7), но она менее опасна.
Наконец, уязвимость в запросе плана с функцией pg_restore_attribute_stats (CVE-2026-6575, CVSS 4.3) затрагивает только версию 18 и позволяет вычитать память за пределами массива статистики.
Помимо уязвимостей, в обновлении исправлено более 60 обычных ошибок. Среди них - некорректные результаты запросов при использовании недетерминированной сортировки, потеря отложенности внешних ключей при переключении статуса ENFORCED, проблемы с параллельным выполнением агрегатной функции array_agg, гонки при синхронизации подписок логической репликации и многие другие. Также обновлены данные часовых поясов до tzdata 2026b: с ноября 2026 года Британская Колумбия переходит на постоянное летнее время (UTC-07).
Что делать администраторам? В первую очередь - установить обновление как можно скорее. Оптимальный способ - перейти на актуальные минорные версии: 18.4, 17.10, 16.14, 15.18 или 14.23. Выпуск уже доступен на официальном сайте PostgreSQL. Для тех, кто использует версию 14, важно помнить: её поддержка прекращается 12 ноября 2026 года. Сейчас самое время спланировать миграцию на более новую ветку. Рекомендуется также проверить, используются ли в системе устаревшие MD5-пароли, и перевести аутентификацию на scram-sha-256.
Таким образом, майское обновление PostgreSQL закрывает не только отдельные уязвимости, но и системные проблемы, накопившиеся за несколько месяцев. Игнорирование патча может привести к серьёзным последствиям - от утечки учётных данных до полного захвата контроля над сервером баз данных. Администраторам стоит действовать без промедления.
Ссылки
- https://www.postgresql.org/about/news/postgresql-184-1710-1614-1518-and-1423-released-3297/
- https://www.cve.org/CVERecord?id=CVE-2026-6472
- https://www.cve.org/CVERecord?id=CVE-2026-6473
- https://www.cve.org/CVERecord?id=CVE-2026-6474
- https://www.cve.org/CVERecord?id=CVE-2026-6475
- https://www.cve.org/CVERecord?id=CVE-2026-6476
- https://www.cve.org/CVERecord?id=CVE-2026-6477
- https://www.cve.org/CVERecord?id=CVE-2026-6478
- https://www.cve.org/CVERecord?id=CVE-2026-6479
- https://www.cve.org/CVERecord?id=CVE-2026-6575
- https://www.cve.org/CVERecord?id=CVE-2026-6637
- https://www.cve.org/CVERecord?id=CVE-2026-6638