2 147 483 647 + 1 символ до катастрофы. Во встроенной библиотеке libpq от PostgreSQL нашли уязвимость для удаленного отключения серверов
NewsMakerРазработчики PostgreSQL выпустили экстренные обновления для версий 13-18.
В PostgreSQL обнаружена уязвимость в официальной клиентской библиотеке libpq. Проблема позволяет аварийно завершить работу приложения при обработке специально подготовленной строки. Исследователь Алексей Соловьев опубликовал подробный технический разбор проблемы. Уязвимость получила идентификатор CVE-2025-12818 и оценку 5,9 балла по шкале CVSS 3.0.
Источник проблемы находится в функции PQescapeInternal, которую вызывают две другие функции библиотеки: PQescapeLiteral и PQescapeIdentifier. Первая экранирует строковые значения перед включением в SQL-запрос, например в условиях WHERE или в списке VALUES. Вторая обрабатывает идентификаторы, то есть названия таблиц, колонок и схем, если запрос требует безопасного оформления таких имён.
При передаче строки длиной более 2 147 483 647 символов, состоящей из кавычек или обратных слешей, внутренний счётчик типа signed int переполняется и вместо максимального положительного значения переходит в отрицательный диапазон. Такое поведение называют целочисленным переполнением, или integer overflow. Из-за сбоя библиотека неверно вычисляет размер будущего буфера.
В PostgreSQL обнаружена уязвимость в официальной клиентской библиотеке libpq. Проблема позволяет аварийно завершить работу приложения при обработке специально подготовленной строки. Исследователь Алексей Соловьев опубликовал подробный технический разбор проблемы. Уязвимость получила идентификатор CVE-2025-12818 и оценку 5,9 балла по шкале CVSS 3.0.
Источник проблемы находится в функции PQescapeInternal, которую вызывают две другие функции библиотеки: PQescapeLiteral и PQescapeIdentifier. Первая экранирует строковые значения перед включением в SQL-запрос, например в условиях WHERE или в списке VALUES. Вторая обрабатывает идентификаторы, то есть названия таблиц, колонок и схем, если запрос требует безопасного оформления таких имён.
При передаче строки длиной более 2 147 483 647 символов, состоящей из кавычек или обратных слешей, внутренний счётчик типа signed int переполняется и вместо максимального положительного значения переходит в отрицательный диапазон. Такое поведение называют целочисленным переполнением, или integer overflow. Из-за сбоя библиотека неверно вычисляет размер будущего буфера.