Все уязвимости

CVE-2023-2455

PostgreSQL CVE-2023-2455: RLS и смена роли в плане запроса

В отдельных сценариях row-level security могла применить неверную политику после встраивания функции и повторного использования плана под другой ролью. Проверьте базы с CREATE POLICY и role-specific правилами; исправление есть в ветках 11–15.

Проверено 27 октября 2026PostgreSQL указывает CVSS 3.0: 4.2 (Medium), вектор AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N. Оценка относится к описанному сложному сценарию, а не ко всем базам с включённым RLS.

Кому нужно проверить

Администраторам PostgreSQL 11–15 и разработчикам систем с role-specific RLS, SECURITY DEFINER, SET ROLE или общими кэшированными планами. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.

В чём риск

После встраивания функции PostgreSQL мог не учитывать смену идентификатора пользователя в некоторых случаях с повторным использованием плана под другой ролью. Если запросы используют разные политики для ролей, это могло разрешить чтение или изменение строк, которые должны быть запрещены. Уязвимость касается баз, где CREATE POLICY определяет RLS.

Затронутые версии

Затронуты PostgreSQL 11–15 до исправленных выпусков 11.20, 12.15, 13.11, 14.8 и 15.3. Требуются политики row-level security, зависящие от роли, и сценарий с планированием под одной ролью и исполнением под другой; это может происходить через SECURITY DEFINER или повторное использование запроса после SET ROLE.

Исправленные версии

Исправлено в PostgreSQL 11.20, 12.15, 13.11, 14.8 и 15.3 (11 мая 2023 года). Используйте актуальный поддерживаемый выпуск или пакет с подтверждённым поставщиком backport.

Что сделать

  1. 1Сверьте версию сервера и backport пакета с advisory поставщика; проверьте все узлы, обслуживающие одну и ту же базу.
  2. 2Определите, используются ли CREATE POLICY с роль-зависимыми правилами, SECURITY DEFINER, SET ROLE и повторно используемыми подготовленными запросами.
  3. 3До обновления не полагайтесь на совместное повторное использование планов между ролями для затронутых запросов; пересмотрите их выполнение вместе с владельцем приложения. Это временная мера, а не подтверждённое исправление.
  4. 4Установите исправленный поддерживаемый пакет PostgreSQL: не ниже 11.20, 12.15, 13.11, 14.8 или 15.3 в соответствующей ветке, либо backport, подтверждённый поставщиком.
  5. 5Проверьте доступ к строкам на тестовых ролях и убедитесь, что приложение не зависит от поведения планов до исправления.

Проверка применимости CVE-2023-2455

Статичная схема проверки ролей, RLS и исправления; текстовая последовательность доступна в списке.

  1. 1Проверьте версию PostgreSQL и исправление поставщика
  2. 2Найдите таблицы с политиками CREATE POLICY
  3. 3Проверьте роль-зависимые запросы, SECURITY DEFINER и SET ROLE
  4. 4Установите исправленный пакет PostgreSQL
  5. 5Проверьте доступ к строкам тестовыми ролями

Примеры конфигурации и проверки

Проверить версию сервера (shell)
psql -X -c 'SHOW server_version;'

Нужны psql и разрешённое подключение к целевой базе. Команда только читает версию, -X исключает пользовательский psqlrc. Она не выявляет настройки RLS, роли или backport поставщика; пароль не передавайте в командной строке.

Как не подпустить ботов к сайту

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

Первоисточники

Снизьте шанс атаки до того, как бот дойдёт до сайта

Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.