В PostgreSQL закрыли уязвимость 22-летней давности, позволяющую выполнить код

Изображение: OpenAI
В ядре PostgreSQL нашли уязвимость CVE-2026-6460, через которую можно выполнить произвольный код с правами пользователя операционной системы, под которым работает СУБД. По словам обнаружившего её исследователя Mehmet Ince, ошибка существовала 22 года; разработчики PostgreSQL закрыли её 12 ноября. По его словам, вызвать аварийное завершение процесса можно от имени учётной записи с минимальными правами, без прав суперпользователя.
Ошибка связана с путаницей типов. Исследователь подготовил SQL-запрос со значением составного типа, а перед запуском изменил тип одного из его полей с UUID на bytea — тип для хранения двоичных данных. При выполнении запроса PostgreSQL обработал прежнее значение UUID по правилам bytea. Это привело к аварийному завершению серверного процесса с ошибкой сегментации.
К изучению ядра автор перешёл после того, как добился выполнения кода через ошибку в расширении pg_clickhouse, преобразующем данные ClickHouse в формат PostgreSQL. Внутреннее устройство типов PostgreSQL он изучал с помощью ИИ-агента на базе Opus 5.
Уязвимость оценена в 8,8 балла по шкале CVSS. Исправление вошло в версии 18.7, 17.12, 16.16, 15.20 и 14.25, более ранние выпуски этих веток уязвимы.



