Перейти к содержанию
ERITKOM
БезопасностьНовость

В E-Maj 5.0.1 исправили повышение привилегий: обновление касается расширения PostgreSQL

Предыдущие версии E-Maj позволяют некоторым пользователям при определённых условиях получить права суперпользователя. Разбираем границы исправления, роли и варианты перехода.

Официальная схема компонентов E-Maj: расширение в PostgreSQL, командные клиенты и веб-интерфейс
Схема из документации E-Maj. © 2017–2018 Philippe Beaudoin; 2019–2026 Dalibo. GPLv3 или более поздняя версия; исходный PNG; уведомление. Изменены размер и формат; это схема устройства E-Maj, не схема атаки.

Исправление находится в расширении, а не в ядре СУБД

31 октября разработчики E-Maj выпустили версию 5.0.1, главным изменением которой стало устранение уязвимости. По сообщению сопровождающего, она затрагивает все предыдущие версии расширения: некоторые пользователи при определённых обстоятельствах могли получить привилегии суперпользователя. Авторы настоятельно рекомендуют перейти на исправленный выпуск.

Речь именно об установленном E-Maj. Анонс не объявляет такую же уязвимость во всех экземплярах PostgreSQL и не сообщает о подтверждённых атаках. В опубликованном тексте также нет номера CVE и численной оценки серьёзности; приписывать их этому исправлению было бы неточно. Версия 5.0.1 совместима с PostgreSQL 14–19.

Для чего нужен журнал изменений отдельных таблиц

E-Maj сохраняет историю записей приложения и позволяет логически возвращать выбранные наборы таблиц к заранее отмеченному состоянию. Область такого возврата меньше всей базы: документация описывает восстановление группы таблиц без полного восстановления экземпляра PostgreSQL и без перезагрузки всего содержимого этих таблиц.

Это полезно, например, для повторного прогона тестового сценария после отмены сделанных им изменений. В рабочей базе сохранённые операции помогают разбирать, что именно записала подозрительно работающая программа. В состав решения входят само расширение emaj, внешние командные клиенты и веб-интерфейс Emaj_web. Клиенты обращаются к функциям расширения, а не заменяют его собственным хранилищем.

Компоненты, которые важно не смешивать при чтении анонса
КомпонентРоль в системе
PostgreSQL СУБД, в которой установлено расширение
Расширение E-Maj Журналирование и логический возврат таблиц; исправление 5.0.1 относится к нему
Emaj_web и CLI Клиенты, вызывающие функции расширения

Источник: E-Maj — Introduction; область исправления — официальный анонс 5.0.1

Администратор и наблюдатель — разные роли

Руководство по доступу разделяет полномочия между emaj_adm и emaj_viewer. Первая роль управляет объектами E-Maj и может выполнять все его функции. Вторая предназначена для чтения: ей доступны информационные и статистические функции, а также чтение таблиц расширения. Это различие важно и для веб-клиента, и для командных инструментов.

Создаваемые роли не имеют возможности входа и пароля. Документация рекомендует сохранить это свойство, передавая нужные полномочия рабочим ролям через членство. При этом обе служебные роли могут отсутствовать, если установка выполнялась без прав суперпользователя. Само наличие названия роли не доказывает конкретный набор назначений в существующей базе.

Официальная схема предоставления роли emaj_adm администратору E-Maj
Официальная схема предоставления роли emaj_adm администратору E-Maj. Схема из E-Maj — Access Policy. © 2017–2018 Philippe Beaudoin; 2019–2026 Dalibo. GPLv3 или более поздняя версия; исходный PNG; уведомление. Изменены размер и формат; обычная схема полномочий, не описание уязвимости.

Путь обновления зависит от первоначальной установки

Сначала устанавливаются файлы новой версии, затем проверяются совместимость и предварительные действия. Если E-Maj установлен как EXTENSION начиная с версии 2.3.1, руководство предусматривает обновление без удаления расширения: сохраняются журналы и возможность отката к отметкам, созданным до перехода. Группы таблиц могут оставаться в состоянии LOGGING.

Для старой установки через psql-скрипт специального обновления на месте нет: описано удаление с повторной установкой. Это другой процесс, включающий сохранение нужной конфигурации. Поэтому одну команду нельзя считать универсальной процедурой для всех исторических инсталляций; исходный способ установки здесь имеет практическое значение.

Переход со старой ветки затрагивает и автоматизацию

При обновлении через несколько поколений отдельно учитываются несовместимые изменения. Например, документация версии 5.0.0 требует заменить прямую запись параметров в emaj_param вызовами emaj_set_param(), а устаревшие PHP-клиенты — соответствующими Perl-инструментами. Эти изменения появились в 5.0.0, а не заявлены как новые функции исправления 5.0.1.

Руководство также предупреждает о переименовании некоторых аргументов функций: это существенно для SQL-вызовов с именованными параметрами. Таким образом, переход с давней версии включает проверку собственных сценариев управления, тогда как свежий выпуск 5.0.1 прежде всего закрывает объявленную проблему безопасности расширения.

Источники

Принципы журнала и исправления.

ERITKOM / НОВЫЙ ПРОЕКТ

Расскажите о задаче и оставьте контакты. Мы свяжемся с вами, чтобы обсудить проект.

  1. 01 Контакты
  2. 02 Ваша задача