CVE-2021-23222
PostgreSQL CVE-2021-23222: MITM-подмена ответов libpq
Уязвимая libpq могла обработать незашифрованные ответы посредника на первые запросы клиента, даже при TLS и проверке сертификата. Для раскрытия пароля нужны дополнительные условия, включая сервер, уязвимый к CVE-2021-23214; проверьте клиентские библиотеки и сервер.
Кому нужно проверить
Разработчикам и администраторам приложений на libpq, а также командам, управляющим PostgreSQL-серверами с клиентской сертификатной аутентификацией. Важна не только марка продукта, но и конкретная версия, способ установки, операционная система и конфигурация.
В чём риск
libpq могла принять незашифрованные данные посредника вместо ответов сервера на первые запросы соединения, даже при SSL и проверке сертификата. При дополнительных условиях это могло раскрыть пароль или другие ранние данные сеанса. Для описанного проекта сценария важен сервер с конфигурацией, уязвимой к CVE-2021-23214; клиентское и серверное исправления следует проверять отдельно.
Затронутые версии
Затронуты libpq из upstream-веток PostgreSQL 9.6–14 до исправлений 9.6.24, 10.19, 11.14, 12.9, 13.5 и 14.1. Активный MITM мог подменить ответы на первые запросы клиента. Для извлечения пароля или других данных нужны дополнительные условия: доступность конфиденциальных данных и, для известного сценария, серверная конфигурация, уязвимая к CVE-2021-23214.
Исправленные версии
Исправлено в libpq из PostgreSQL 9.6.24, 10.19, 11.14, 12.9, 13.5 и 14.1 (11 ноября 2021 года). Обновите библиотеку, фактически используемую приложением; отдельно проверьте приложения со встроенной или статически связанной libpq и серверы, подверженные CVE-2021-23214.
Что сделать
- 1Определите клиентские приложения, версии libpq и способ связывания библиотеки. Версия установленного PostgreSQL-сервера не подтверждает исправление клиентской библиотеки.
- 2Обновите libpq до исправленной поддерживаемой версии или пакета поставщика с подтверждённым backport; перезапустите процессы, которые могли загрузить старую библиотеку.
- 3Проверьте серверы, к которым подключаются клиенты: исправьте CVE-2021-23214 и пересмотрите использование cert либо trust с clientcert.
- 4До обновления ограничьте клиентские подключения доверенными сетями и не передавайте учётные данные через недоверенные маршруты. TLS остаётся необходимым, но сам по себе не устраняет этот дефект.
- 5После обновления проверьте фактически загруженную libpq для каждого приложения и оцените журналы соединений и ранних запросов при подозрении на MITM.
Два уровня проверки CVE-2021-23222
Статичная схема разделяет клиентское исправление libpq и серверную конфигурацию CVE-2021-23214.
- 1Определите libpq, используемую каждым клиентским приложением
- 2Установите исправленную библиотеку и перезапустите процессы
- 3Проверьте серверы на уязвимую cert или trust-конфигурацию
- 4Обновите серверы, уязвимые к CVE-2021-23214
- 5Проверьте журналы при подозрении на подмену ответов
Примеры конфигурации и проверки
psql --versionКоманда локально выводит версию psql и связанной с ним libpq, не устанавливая сетевое соединение. Она не проверяет библиотеку, которую загружает другое приложение, если оно поставляет отдельную или статическую копию; для таких клиентов проверяйте пакет или состав сборки отдельно.
Как не подпустить ботов к сайту
BotProtection принимает запросы перед вашим сайтом и фильтрует автоматизированные обращения. Поэтому ботам сложнее добраться до уязвимого компонента и начать его проверять или атаковать, а вероятность успешной автоматизированной атаки становится значительно ниже. Это дополнительный слой защиты: обновление уязвимых компонентов, проверка журналов и реагирование на инциденты остаются обязательными.
Первоисточники
Снизьте шанс атаки до того, как бот дойдёт до сайта
Подключите BotProtection как фильтр перед сайтом: подозрительные автоматизированные запросы отсекаются до обращения к вашему серверу. Это значительно снижает вероятность автоматизированной атаки, но не исправляет саму уязвимость, поэтому обновление и настройка компонентов остаются обязательными.