Сервис развивается: тестируем формат, собираем идеи, улучшаем сервис. Есть идеи?

Написать
Войти
Дайджесты
Иллюстрация к критическому обновлению pgAdmin

Критическое обновление безопасности pgAdmin 4 v9.16

Релиз pgAdmin 4 v9.16 закрывает семь уязвимостей безопасности (CVE-2026-12044 — CVE-2026-12050), включая удаленное выполнение кода через AI-ассистента и кражу паролей через XSS. Анализ векторов атак, новые UX-возможности расцветки вкладок серверов и план отказа от планировщика pgAgent.

Критическое обновление безопасности pgAdmin 4 v9.16

Разработчики pgAdmin Development Team выпустили критическое обновление популярного графического клиента для управления СУБД PostgreSQL — pgAdmin 4 версии 9.16. Этот релиз содержит 64 исправления ошибок и новые функциональные возможности, однако его главным приоритетом является устранение цепочки из семи опасных уязвимостей безопасности (с CVE-2026-12044 по CVE-2026-12050). Внедрение данных патчей обязательно для всех пользователей и администраторов баз данных, поскольку blast radius (зона потенциального поражения) уязвимостей в инструментах администрирования баз данных традиционно велик: компрометация графического клиента может предоставить злоумышленникам доступ к учетным записям с максимальными правами (суперпользователям) и всей хранимой конфиденциальной информации.

Детальный разбор семи уязвимостей (CVE-2026-12044 — CVE-2026-12050)

Новая версия pgAdmin 4 закрывает бреши в безопасности разного уровня критичности — от обхода авторизации до удаленного выполнения кода на сервере:

  • CVE-2026-12044 (SQL-инъекция в шаблонах комментариев): уязвимость обнаружена в шестнадцати шаблонах диалоговых окон, которые генерируют SQL-команды вида COMMENT ON ... IS '<описание>'. Злоумышленник мог внедрить SQL-код через поле описания объектов базы данных. Для исправления разработчики перевели шаблоны на использование функции безопасного экранирования qtLiteral и переписали запросы статистики с использованием приведения сущностей к OID (внутренним идентификаторам PostgreSQL) через конструкцию ::oid::regclass.
  • CVE-2026-12045 (Обход ограничений транзакций в AI-ассистенте с выходом на RCE): встроенный интеллектуальный помощник pgAdmin выполнял запросы в режиме «только для чтения» (READ ONLY). Однако уязвимость позволяла обойти это ограничение с помощью внедрения инструкций, состоящих из нескольких SQL-команд (multi-statement payload). При наличии подключения с правами суперпользователя злоумышленник мог добиться удаленного выполнения кода (RCE — Remote Code Execution) на сервере базы данных через запуск системных команд СУБД с помощью инструкции COPY ... TO PROGRAM.
  • CVE-2026-12046 (Обход авторизации и небезопасная десериализация): два служебных эндпоинта (сетевых адреса) редактора SQL Editor в серверном режиме pgAdmin не имели аннотации защиты @pga_login_required. Это открывало неавторизованным пользователям доступ к механизму десериализации Python-объектов через библиотеку pickle (pickle deserialization sink), что позволяет злоумышленнику выполнить произвольный код на сервере, где развернут сам pgAdmin.
  • CVE-2026-12047 (HTML-инъекция в модуле облачного развертывания): при развертывании PostgreSQL в облаках AWS RDS, Azure или Google Cloud тексты исключений, возвращаемые облачными SDK, выводились в интерфейс пользователя без очистки с помощью парсера html-react-parser. Это позволяло внедрять в окно браузера произвольный HTML-код.
  • CVE-2026-12048 (Критическая сохраненная XSS через ошибки БД): наиболее опасная уязвимость графического интерфейса. Вредоносный JS-код мог быть внедрен в БД в качестве текста системных ошибок PostgreSQL или узлов планов выполнения Explain. При просмотре этих данных легитимным администратором через всплывающие уведомления (toasts), формы ошибок или визуализатор планов Explain скрипт выполнялся в браузере администратора (Stored XSS). Встроенный скрипт мог похитить сохраненные в сессии пароли доступа к серверам БД и выполнить от имени администратора любые SQL-запросы на подключенных серверах.
  • CVE-2026-12049 (Открытый редирект в MFA): в процессе многофакторной аутентификации параметр перенаправления next не валидировался должным образом, что создавало риски фишинговых атак и подмены целевых страниц.
  • CVE-2026-12050 (SQL-инъекция в точках восстановления): эндпоинт создания именованных точек восстановления базы данных использовал небезопасное форматирование строк через метод str.format() вместо применения параметризованных запросов.

Изменения в поведении авторизации и новые функции интерфейса

Помимо исправления уязвимостей, релиз v9.16 содержит важное изменение в логике аутентификации:

!IMPORTANT Если в настройках подключения к серверу одновременно заданы внешняя команда получения пароля password-exec и файл паролей passfile, теперь pgAdmin 4 отдает приоритет файлу passfile и игнорирует команду password-exec, записывая соответствующее предупреждение в системный лог. В предыдущих версиях поведение было обратным. Командам, использующим внешние менеджеры секретов, необходимо проверить конфигурации авторизации после обновления.

Из полезных улучшений интерфейса стоит отметить:

  • Цветовая маркировка вкладок серверов: теперь заголовки вкладок в рабочей области можно окрашивать в разные цвета в зависимости от выбранного сервера. Это полезная мера операционной безопасности, помогающая разработчикам случайно не запустить деструктивный SQL-скрипт на продакшене, перепутав его с тестовым контуром.
  • Поддержка закрытия вкладок кликом средней кнопки мыши.
  • Настройка параметра хранения TOAST-таблиц для материализованных представлений (Materialized Views).
  • Поддержка любых стилей шрифтов Font Awesome для иконок OAuth2-авторизации.

План отказа от планировщика pgAgent

Команда разработчиков официально объявила об устаревании встроенного планировщика задач pgAgent. Поддержка этого инструмента будет прекращена:

  1. В течение одного месяца ссылки на pgAgent будут удалены с официального сайта pgAdmin.
  2. Примерно через шесть месяцев функционал управления задачами pgAgent будет полностью вырезан из кода pgAdmin.

Администраторам баз данных рекомендуется не дожидаться полного отключения, а провести инвентаризацию текущих задач планировщика, экспортировать их логику и настроить альтернативные инструменты автоматизации. В качестве замены могут выступать системные таймеры systemd, стандартный cron в операционной системе, облачные планировщики (например, AWS CloudWatch Events) или специализированные оркестраторы процессов (Airflow, Prefect), в зависимости от вашей инфраструктуры.

Инструкция по обновлению и аудит безопасности инсталляций

Для перевода вашей инфраструктуры на безопасную версию pgAdmin 4 v9.16 выполните следующие шаги:

  1. Создание резервной копии: сохраните конфигурационные файлы и базу данных настроек pgAdmin (обычно pgadmin4.db), если у вас развернут серверный вариант.
  2. Обновление пакетов:
    • Docker: обновите тег образа в вашем манифесте или compose-файле до 9.16 и перезапустите контейнер:
      docker pull dpage/pgadmin4:9.16
      
    • Python Wheel: обновите пакет в виртуальном окружении:
      pip install --upgrade pgadmin4
      
    • Системные репозитории (RPM/DEB): обновите пакеты через менеджер пакетов вашей ОС и перезапустите веб-сервер.
  3. Проверка логов: после запуска проверьте логи pgAdmin на наличие предупреждений о конфликте password-exec и passfile.
  4. Снижение привилегий: в качестве общей гигиенической меры настройте подключения pgAdmin к базам данных с использованием минимально необходимых ролей доступа. Избегайте использования учетных записей суперпользователей для выполнения ежедневных аналитических или административных задач через графический интерфейс.
  5. Ротация паролей: если существовал риск того, что непривилегированные пользователи могли внедрить вредоносные скрипты в структуру базы данных или спровоцировать генерацию специфических ошибок, которые затем просматривались администраторами в pgAdmin, проведите ротацию всех сохраненных в клиенте паролей серверов.