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