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

CVE-2023-39418

PostgreSQL CVE-2023-39418: MERGE обходил политики RLS

В PostgreSQL 15 команда MERGE могла не проверять новые строки по политикам SELECT и UPDATE для row-level security. Проверьте базы с CREATE POLICY и сценарии, где правила INSERT отличаются от правил чтения и обновления.

Проверено 27 октября 2026PostgreSQL указывает CVSS 3.0: 3.1 (Low), вектор AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N. Низкая оценка не отменяет необходимость исправления, если в базе используются затронутые политики.

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

Администраторам PostgreSQL 15 и владельцам приложений, использующих MERGE вместе с политиками row-level security. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.

В чём риск

При различии политик INSERT, SELECT и UPDATE MERGE мог сохранить строки, которые другие политики запрещают видеть или изменять. Последствия зависят от схемы доступа приложения; сам факт наличия PostgreSQL 15 без row-level security не означает, что описанный сценарий применим.

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

По advisory PostgreSQL затронута ветка 15 до исправления. Уязвимость относится только к базам, где CREATE POLICY определяет row-level security; проблема проявляется, если политики SELECT и UPDATE запрещают строки, которые политика INSERT разрешает сохранять.

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

Исправлено в PostgreSQL 15.4 (10 августа 2023 года). Установите актуальный пакет поддерживаемой ветки; для пакетов ОС и управляемых сервисов проверяйте advisory поставщика и наличие backport, а не только номер upstream-версии.

Что сделать

  1. 1Подключитесь именно к проверяемому серверу и прочитайте server_version. Учитывайте, что номер upstream не показывает, включил ли поставщик backport.
  2. 2Проверьте, используются ли CREATE POLICY и MERGE на защищённых таблицах, особенно если политики INSERT допускают больше строк, чем политики SELECT или UPDATE.
  3. 3До установки исправления избегайте MERGE для таблиц с такими различающимися политиками и ограничьте соответствующие операции ролями приложения. Это временное снижение риска, а не исправление сервера.
  4. 4Установите исправленный поддерживаемый выпуск PostgreSQL либо пакет с подтверждённым поставщиком исправлением. Проверьте процедуру обновления и совместимость приложения в тестовой среде.
  5. 5После обновления перепроверьте версию пакета и ожидаемое поведение политик на тестовых ролях; не используйте производственные данные для проверки запрещённых строк.

Условия и проверка CVE-2023-39418

Статичная схема применимости и безопасного порядка исправления; каждый шаг также представлен текстом.

  1. 1Проверьте, работает ли сервер PostgreSQL 15
  2. 2Уточните, используются ли CREATE POLICY и MERGE на одной таблице
  3. 3Сравните политики INSERT, SELECT и UPDATE для этой таблицы
  4. 4Временно избегайте уязвимого сценария и установите исправленный пакет
  5. 5Повторно проверьте сервер и политики на тестовых ролях

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

Проверить версию подключённого сервера (shell)
psql -X -c 'SHOW server_version;'

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

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

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

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

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

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