E.49. Выпуск 9.6.8
Дата выпуска: 2018-03-01
В этот выпуск вошли различные исправления, внесённые после версии 9.6.7. За информацией о нововведениях версии 9.6 обратитесь к Разделу E.57.
E.49.1. Миграция на версию 9.6.8
Если используется версия 9.6.X, выгрузка/восстановление базы не требуется.
Однако если в вашей СУБД не все пользователи взаимно доверяют друг другу либо если вы поддерживаете приложение или расширение, предназначенное для использования в произвольных ситуациях, настоятельно рекомендуется прочитать об изменениях в первой записи ниже и предпринять соответствующие действия для защиты вашей инсталляции или кода.
Также изменения, описанные во втором пункте списка ниже, могут приводить к сбоям функций, используемых в индексных выражениях или материализованных представлениях, во время автоматического анализа или при восстановлении выгруженных данных. Поэтому после обновления проверьте журнал сервера на предмет подобных проблем и исправьте затронутые функции.
Также, если вы обновляете сервер с версии, более ранней, чем 9.6.7, см. Раздел E.50.
E.49.2. Изменения
Добавление в документацию информации о настройке серверов и приложений для защиты от атак с внедрением троянского кода через путь поиска (Ной Миш)
Когда используется значение
search_path
, включающее схемы, доступные для записи злонамеренному пользователю, он может перехватывать управление над выполнением запросов и затем запускать произвольный SQL-код с правами атакуемого пользователя. Хотя есть возможность составлять запросы, защищённые от подобного перехвата, это требует кропотливой работы, и при этом очень легко что-то упустить. Поэтому мы рекомендуем использовать конфигурации, в которых пути поиска не могут включать недоверенные схемы. Соответствующая информация добавлена в Подраздел 5.8.6 (для пользователей и администраторов баз данных), Раздел 32.1 (для разработчиков приложений), Подраздел 36.15.5 (для разработчиков расширений) и CREATE FUNCTION (для разработчиков функций с характеристикойSECURITY DEFINER
). (CVE-2018-1058)Предотвращение использования небезопасных значений
search_path
в pg_dump и других клиентских программах (Ной Миш, Том Лейн)pg_dump, pg_upgrade, vacuumdb и другие приложения, предоставляемые PostgreSQL, были уязвимы для перехвата выполнения, описанного в предыдущем пункте; так как эти приложения обычно запускаются суперпользователями, они представляли собой привлекательные средства для атаки. Чтобы защитить их вне зависимости от того, защищена ли вся инсталляция в целом, они были изменены так, чтобы для них параметр
search_path
содержал толькоpg_catalog
. Теперь это так же касается и рабочих процессов автоочистки.В случаях, когда этими программами неявно вызываются определённые пользователем функции — например, это могут быть пользовательские функции в выражениях индексов — более строгое значение
search_path
может приводить к ошибкам, которые потребуется исправить так, чтобы эти функции никак не зависели от пути поиска, с которым они выполняются. Это всегда рекомендовалось делать, но сейчас это необходимо для корректного поведения. (CVE-2018-1058)Исправление некорректного поведения перепроверок одновременных изменений со ссылками CTE, фигурирующими во внутренних планах (Том Лейн)
Если ссылка на CTE (содержимое предложения
WITH
) использовалась в InitPlan или SubPlan, и запросу требовалось провести перепроверку из-за попытки изменения или блокировки одновременно изменяемой строки, могли быть получены неверные результаты.Устранение сбоев планировщика при перекрывающихся предложениях соединения слиянием во внешнем соединении (Том Лейн)
Эти дефекты приводили в особых случаях к ошибкам планировщика «left and right pathkeys do not match in mergejoin» (нарушено соответствие левых и правых ключей пути в соединении слиянием) или «outer pathkeys do not match mergeclauses» (внешние ключи пути не соответствуют предложениям слияния).
Исправление ошибки в pg_upgrade, когда не удавалось сохранить
relfrozenxid
для материализованных представлений (Том Лейн, Андрес Фройнд)Данное упущение могло приводить к разрушению данных в материализованных представлениях после обновления. Это могло проявляться в ошибках «could not access status of transaction» (не удалось получить состояние транзакции) или «found xmin from before relfrozenxid» (найден xmin перед relfrozenxid). Эта проблема была более вероятна в редко обновляемых материализованных представлениях или в представлениях, обновляемых только командой
REFRESH MATERIALIZED VIEW CONCURRENTLY
.Если такое разрушение имело место, его можно исправить, обновив материализованное представление (без указания
CONCURRENTLY
).Исправление некорректной обработки имён функций PL/Python в стеках ошибки
CONTEXT
(Том Лейн)Ошибка, произошедшая во вложенном вызове функции PL/Python (то есть функции, вызванной через SPI-запрос из другой функции PL/Python), могла привести к тому, что в трассировке стека вместо ожидаемого результата имя внутренней функции фигурировало дважды. Также ошибка во вложенном блоке PL/Python
DO
могла привести к обращению по нулевому указателю на некоторых платформах.Максимальное значение
log_min_duration
дляcontrib/auto_explain
доведено доINT_MAX
, что составляет около 24 суток вместо 35 минут (Том Лейн)Для разнообразных переменных GUC добавлена пометка
PGDLLIMPORT
в целях облегчения переноса модулей расширений в Windows (Метин Дослу)