2 147 483 647 + 1 символ до катастрофы. Во встроенной библиотеке libpq от PostgreSQL нашли уязвимость для удаленного отключения серверов

Разработчики PostgreSQL выпустили экстренные обновления для версий 13-18.


fp3ujdrufyk9jd7qxe2jt70tyw61ttog.jpg

В PostgreSQL обнаружена уязвимость в официальной клиентской библиотеке libpq. Проблема позволяет аварийно завершить работу приложения при обработке специально подготовленной строки. Исследователь Алексей Соловьев опубликовал подробный технический разбор проблемы. Уязвимость получила идентификатор CVE-2025-12818 и оценку 5,9 балла по шкале CVSS 3.0.

Источник проблемы находится в функции PQescapeInternal, которую вызывают две другие функции библиотеки: PQescapeLiteral и PQescapeIdentifier. Первая экранирует строковые значения перед включением в SQL-запрос, например в условиях WHERE или в списке VALUES. Вторая обрабатывает идентификаторы, то есть названия таблиц, колонок и схем, если запрос требует безопасного оформления таких имён.

При передаче строки длиной более 2 147 483 647 символов, состоящей из кавычек или обратных слешей, внутренний счётчик типа signed int переполняется и вместо максимального положительного значения переходит в отрицательный диапазон. Такое поведение называют целочисленным переполнением, или integer overflow. Из-за сбоя библиотека неверно вычисляет размер будущего буфера.


mqzkxr01ox5yulo687h9c3i0nah7ob57.png