Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с правами пользователя, запускающего pg_dump

Сформированы корректирующие обновления для всех поддерживаемых веток PostgreSQL 16.4, 15.8, 14.13, 13.16, 12.20, в которых исправлено 56 ошибок, выявленных за последние три месяца. Среди прочего в новых версиях устранена уязвимость (CVE-2024-7348), помеченная как опасная (уровень опасности 8.8 из 10). Уязвимость вызвана состоянием гонки в утилите pg_dump, позволяющем атакующему, имеющему возможность создания и удаления постоянных объектов в СУБД, добиться выполнения произвольного SQL-кода с правами пользователя, под которым запускается утилита pg_dump (обычно pg_dump запускается с правами суперпользователя для резервного копирования СУБД).

Для успешной атаки требуется отследить момент запуска утилиты pg_dump, что легко реализуется через манипуляции с открытой транзакцией. Атака сводится к замене последовательности (sequence) на представление или внешнюю таблицу, определяющих запускаемый SQL-код, в момент запуска pg_dump, когда информация о наличии последовательности уже получена, но данные ещё не выведены. Для блокирования уязвимости добавлена настройка «restrict_nonsystem_relation_kind», запрещающая раскрытие не системных представлений и доступ к внешним таблицам в pg_dump.

Источник: opennet.ru