CVE-2023-2454
PostgreSQL CVE-2023-2454: CREATE SCHEMA обходил search_path
Обработка schema_element в CREATE SCHEMA могла нейтрализовать защитное изменение search_path и позволить пользователю с правом CREATE в базе выполнить код с привилегиями bootstrap superuser. Исправление включено в ветки 11–15.
Кому нужно проверить
Администраторам PostgreSQL 11–15 и владельцам баз, которые выдают пользователям или приложениям право CREATE на уровне базы данных. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.
В чём риск
Внутри CREATE SCHEMA объекты из текущего search_path и новой схемы могли оставаться видимыми вызываемой функции или скрипту, несмотря на попытку задать безопасный search_path. Пользователь с правом создавать схему мог при выполнении условий перехватить привилегии SECURITY DEFINER-функции или скрипта расширения, вплоть до выполнения кода с правами bootstrap superuser.
Затронутые версии
Затронуты PostgreSQL 11–15 до выпусков 11.20, 12.15, 13.11, 14.8 и 15.3. Для эксплуатации требуется право CREATE на уровне базы; владельцы базы обычно имеют его по умолчанию, а явная выдача может расширять круг таких пользователей.
Исправленные версии
Исправлено в PostgreSQL 11.20, 12.15, 13.11, 14.8 и 15.3 (11 мая 2023 года). Установите актуальный поддерживаемый выпуск либо пакет поставщика, в котором backport подтверждён его advisory.
Что сделать
- 1Проверьте серверную версию и пакет на всех экземплярах. Для управляемых сервисов и ОС сверяйте статус исправления с поставщиком.
- 2Проведите ревизию ролей с правом CREATE на уровне базы; снимайте лишние привилегии только после проверки влияния на миграции и приложение.
- 3До обновления ограничьте CREATE для недоверенных пользователей и приложений. Это уменьшает число потенциально затронутых ролей, но не исправляет поведение сервера.
- 4Установите PostgreSQL не ниже 11.20, 12.15, 13.11 или 15.3 в соответствующей ветке либо подтверждённую исправленную сборку поставщика.
- 5После обновления перепроверьте доступ к CREATE и изучите журналы на предмет неожиданных изменений схем и функций с повышенными привилегиями.
Снижение риска CVE-2023-2454
Статичная последовательность ревизии прав и установки исправления.
- 1Проверьте версию сервера и статус пакета у поставщика
- 2Найдите роли с правом CREATE на уровне базы
- 3Ограничьте ненужное право CREATE до обновления
- 4Установите исправленный выпуск PostgreSQL
- 5Перепроверьте привилегии и журналы изменений схем
Примеры конфигурации и проверки
psql -X -c 'SHOW server_version;'Выполните только при наличии разрешённого подключения к целевой базе. Команда только читает версию; -X исключает пользовательский psqlrc. Она не проверяет права CREATE и не определяет backport пакета. Пароль не указывайте в аргументах команды.
Как не подпустить ботов к сайту
BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.
Первоисточники
Снизьте шанс атаки до того, как бот дойдёт до сайта
Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.