Обновление PostgreSQL с устранением уязвимости. Выпуск системы репликации pgcat
Сформированы корректирующие обновления для всех поддерживаемых веток PostgreSQL: 12.2, 11.7, 10.12, 9.6.17, 9.5.21 и 9.4.26. Выпуск 9.4.26 является финальным - подготовка обновлений для ветки 9.4 прекращена. Обновления для ветки 9.5 будут формироваться до февраля 2021 г., 9.6 - до ноября 2021 года, 10 - до ноября 2022 года, 11 - до ноября 2023 года, 12 - до ноября 2024 года.
В новых версиях исправлено 75 ошибок и устранена уязвимость (CVE-2020-1720), вызванная отсутствием проверки авторизации при выполнении команды "ALTER ... DEPENDS ON EXTENSION". При определённых обстоятельствах уязвимость позволяет непривилегированному пользователю удалить любую функцию, процедуру, материализованное представление, индекс или триггер. Атака возможна если администратор установил любое расширение, а пользователь может выполнить команду CREATE или владельца расширения удастся убедить выполнить команду DROP EXTENSION.
Дополнительно можно отметить появление нового приложения pgcat, позволяющего реплицировать данные между несколькими серверами PostgreSQL. Программа поддерживает логическую репликацию через трансляцию и воспроизведение на другом хосте потока выполняемых на основном сервере SQL-команд, приводящих к изменению данных. Код написан на языке Go и распространяется под лицензией Apache 2.0. Основные отличия от встроенного механизма логической репликации:
- Поддержка любых типов целевых таблиц (представления, fdw (Foreign Data Wrapper), сегментированные таблицы, распределённые таблицы citus);
- Возможность переопределения имён таблиц (репликация из одной таблицы в другую);
- Поддержка двунаправленной репликации через передачу только локальных изменений с игнорированием репликаций, поступающих извне;
- Наличие системы разрешения конфликтов на основе алгоритма LWW (last-writer-win);
- Возможность сохранения сведений о ходе репликации и неприменённых репликах в отдельную таблицу, которую можно использовать для восстановления после возобновления работы временно недоступного принимающего узла.
Источник: www.opennet.ru