Уязвимость в PostgreSQL Anonymizer позволяет повысить привилегии через SQL-инъекцию в именах столбцов

PostgreSQL

В расширении PostgreSQL Anonymizer обнаружена уязвимость (CVE-2026-9617), связанная с возможностью внедрения вредоносного SQL-кода через имена столбцов. Проблема затрагивает все версии до 3.1.0 и позволяет злоумышленнику, имеющему право на создание таблиц, выполнить произвольные команды с правами суперпользователя. Разработчики выпустили исправление в версии 3.1.0, опубликованной 9 июня 2026 года.

Уязвимость CVE-2026-9617

Уязвимость существует в функции "anon.k_anonymity()", которая предназначена для обеспечения k-анонимности данных. Исследователи из DALIBO (компании-разработчика расширения) выяснили, что злоумышленник может создать таблицу, в имени столбца которой содержится вредоносный SQL-код. Если суперпользователь впоследствии вызовет функцию "k_anonymity" для этой таблицы, код выполнится с максимальными привилегиями. По классификации CWE-89 это SQL-инъекция, вызванная некорректной обработкой специальных элементов в SQL-команде.

Согласно бюллетеню безопасности PostgreSQL, риск эксплуатации выше в версиях PostgreSQL 14 и более ранних. В PostgreSQL 15 и 16 по умолчанию отменено право на создание таблиц в схеме public для всех пользователей, кроме владельца схемы. Поэтому в актуальных версиях СУБД атака возможна только в том случае, если администратор явно предоставил злоумышленнику привилегию "CREATE TABLE". Тем не менее во многих организациях по-прежнему используются PostgreSQL 14, где право на создание таблиц в public дано автоматически.

Вектор атаки выглядит следующим образом: сначала злоумышленник создаёт таблицу с именем столбца, содержащим инъекцию. Затем он ожидает, пока суперпользователь запустит функцию "anon.k_anonymity()" для этой таблицы. Функция обрабатывает метаданные столбцов, не проверяя их содержимое на наличие вредоносных конструкций. В результате SQL-код из имени столбца выполняется в контексте вызова функции - то есть с правами суперпользователя. Это даёт атакующему полный контроль над сервером базы данных.

Оценка CVSS для уязвимости - 6,8 балла (уровень MEDIUM). Вектор "AV:N/AC:L/PR:H/UI:R/S:U/C:H/I:H/A:H" означает, что атака возможна удалённо, требует низкой сложности, но необходимы высокие привилегии (право создания таблиц) и участие суперпользователя. Тем не менее последствия серьёзны: полная компрометация конфиденциальности, целостности и доступности данных.

Разработчики PostgreSQL Anonymizer устранили проблему в версии 3.1.0, которая вышла одновременно с публикацией бюллетеня. Пользователям рекомендуется немедленно обновить расширение до актуальной версии. Администраторам, использующим PostgreSQL 14 или более старые версии, следует обратить особое внимание на обновление, так как в этих системах риск выше. Владельцам PostgreSQL 15+ стоит проверить, не предоставлены ли непривилегированным пользователям права на создание таблиц в схеме public, и при необходимости отозвать их.

"Проблема решена в PostgreSQL Anonymizer 3.1.0, - говорится в официальном бюллетене безопасности. - Все пользователи должны обновиться до этой версии".

Уязвимость CVE-2026-9617 затрагивает все инсталляции, где установлено расширение PostgreSQL Anonymizer версий ниже 3.1.0. Организации, которые не установят обновление, рискуют потерять контроль над базами данных: злоумышленник, имеющий даже ограниченный доступ на создание таблиц, сможет выполнить произвольный код с правами суперпользователя. Это особенно критично для сред, где используется PostgreSQL 14 или где администраторы предоставили пользователям избыточные привилегии.

Стоит отметить, что расширение PostgreSQL Anonymizer применяется для маскировки конфиденциальных данных, например, в тестовых средах или при передаче данных аналитикам. Компрометация суперпользователя в такой системе может привести к утечке исходных данных, которые маскировались.

Разработчики советуют проверить установленную версию расширения с помощью команды "SELECT * FROM pg_available_extensions WHERE name = 'anon';" и при необходимости выполнить обновление через менеджер пакетов. Если прямое обновление невозможно, следует временно отозвать у непривилегированных пользователей право "CREATE TABLE" в схеме public, чтобы снизить риск эксплуатации.

Таким образом, уязвимость CVE-2026-9617 представляет собой классический пример SQL-инъекции через метаданные. Несмотря на средний базовый балл CVSS, она потенциально критична для организаций, использующих старые версии PostgreSQL или предоставляющих избыточные привилегии. Единственным надёжным способом защиты является установка обновлённой версии расширения 3.1.0.

Ссылки

Комментарии: 0