CVE-2023-5870
PostgreSQL CVE-2023-5870: pg_signal_backend и фоновые процессы
Роль pg_signal_backend могла посылать сигналы отдельным фоновым процессам суперпользователя, вопреки ожидаемым ограничениям. Практический отказ в обслуживании требует стороннего фонового worker без автоматического перезапуска; исправление есть в ветках 11–16.
Кому нужно проверить
Администраторам PostgreSQL 11–16, которые выдают pg_signal_backend и устанавливают расширения с фоновыми worker. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.
В чём риск
Член pg_signal_backend мог посылать сигналы некоторым фоновым процессам, включая logical replication launcher, autovacuum workers и autovacuum launcher. PostgreSQL отмечает, что для этих штатных процессов это не образует значимого эксплойта. Отказ в обслуживании конкретного процесса возможен при наличии стороннего расширения с worker, который не перезапускается автоматически.
Затронутые версии
Затронуты upstream-ветки PostgreSQL 11–16 до выпусков 11.22, 12.17, 13.13, 14.10, 15.5 и 16.1 соответственно. Для последствий, описанных PostgreSQL, требуется стороннее расширение с менее устойчивым к сигналам фоновым worker; штатные logical replication launcher и autovacuum сами по себе не дают значимого сценария эксплуатации.
Исправленные версии
Исправлено в PostgreSQL 11.22, 12.17, 13.13, 14.10, 15.5 и 16.1 (9 ноября 2023 года). Установите актуальный поддерживаемый выпуск либо пакет с backport, подтверждённым поставщиком.
Что сделать
- 1Проверьте версию PostgreSQL на каждом сервере и наличие сторонних расширений, запускающих фоновые worker.
- 2Пересмотрите выдачу роли pg_signal_backend: оставьте её только администраторам и сервисным ролям, которым она действительно необходима.
- 3До обновления проверьте документацию сторонних worker и их поведение при сигнале. Не останавливайте рабочие фоновые процессы вручную для тестирования.
- 4Установите исправленный поддерживаемый выпуск: 11.22, 12.17, 13.13, 14.10, 15.5 или 16.1 для соответствующей ветки, либо backport поставщика.
- 5После обновления перепроверьте версии, членство в pg_signal_backend и состояние расширений.
Проверка CVE-2023-5870
Статичная схема минимизации риска и установки исправления.
- 1Определите версию PostgreSQL и установленные сторонние расширения
- 2Проверьте, кому выдана роль pg_signal_backend
- 3Сократите лишнее членство в роли после проверки зависимостей
- 4Установите исправленный пакет PostgreSQL
- 5Проверьте доступ и фоновые процессы без их принудительной остановки
Примеры конфигурации и проверки
psql -X -c 'SHOW server_version;'Нужны psql и разрешённое подключение к нужному серверу. Команда только читает server_version; -X исключает пользовательский psqlrc. Она не показывает членство в ролях или backport пакета. Не передавайте пароль в командной строке.
Как не подпустить ботов к сайту
BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.
Первоисточники
Снизьте шанс атаки до того, как бот дойдёт до сайта
Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.