PostgreSQL Global Development Group описывает CVE-2026-2005 как переполнение буфера в куче в pgcrypto, который позволяет выполнить произвольный код от имени системного пользователя, под которым работает база данных. Уязвимы версии до PostgreSQL 18.2, 17.8, 16.12, 15.16 и 14.21. CVSS — 8.8.
Для эксплуатации нужен доступ к выполнению SQL в базе. На практике это может быть украденный пароль приложения, SQL-инъекция, доступ через скомпрометированный сервис или боковое перемещение внутри сети. После этого атакующий может загрузить pgcrypto и вызвать уязвимую функцию с подготовленным PGP-сообщением.
Проблема находится в OpenPGP-части pgcrypto. Уязвимость кроется в pgp_pub_decrypt_bytea() пути расшифровки открытого ключа OpenPGP внутри pgcrypto. Она затрагивает все поддерживаемые основные версии PostgreSQL, а доступ к уязвимому участку кода осуществляется всего двумя операторами:
CREATE EXTENSION IF NOT EXISTS pgcrypto;
SELECT pgp_pub_decrypt_bytea($1::bytea, $2::bytea);
pgcrypto — это доверенное расширение : любая роль, обладающая CREATE привилегиями в базе данных, может установить его без доступа суперпользователя. На практике ролям приложений обычно предоставляется такой уровень привилегий, поэтому барьер между аутентифицированным SQL и уязвимым путем выполнения кода очень низок.
Опубликованный PoC показывает полную цепочку: сначала утечка адресов памяти, затем произвольная запись, затем повышение роли внутри PostgreSQL и запуск команд операционной системы через штатные механизмы базы. Cyber Security News пишет, что исследователь Varik Matevosyan, известный как var77, опубликовал демонстрацию на GitHub.
Ключевой момент — изменение внутреннего значения CurrentUserId. Если атакующий получает возможность записать нужные данные в память процесса PostgreSQL, он может выставить идентификатор текущего пользователя в значение bootstrap superuser. После этого соединение получает привилегии суперпользователя внутри базы, а дальше используется COPY ... TO PROGRAM для запуска команды на хосте от имени пользователя PostgreSQL.
Это не означает мгновенный root-доступ к серверу. Команды выполняются с правами системного пользователя, под которым запущен PostgreSQL, обычно postgres. Но для базы это уже критический уровень: доступ ко всем данным инстанса, возможность читать секреты в таблицах, менять схемы, создавать функции, выгружать дампы и пытаться двигаться дальше по сети.
ZeroDay.Cloud пишет, что уязвимость нашёл Xint Code — автономный инструмент анализа кода. Демонстрация надёжного RCE прошла на ZeroDay.Cloud 2025, затем проблема была раскрыта совместно с Wiz Research Team. Патч попал upstream 8 февраля 2026 года, а исправления вышли 12 февраля во всех поддерживаемых ветках.
Официальные исправления вышли 12 февраля 2026 года. Безопасные версии для CVE-2026-2005: PostgreSQL 18.2, 17.8, 16.12, 15.16 и 14.21. Более новые майские релизы — 18.4, 17.10, 16.14, 15.18 и 14.23 — также содержат этот фикс и закрывают дополнительные уязвимости.
Обновление PostgreSQL внутри одной major-ветки обычно не требует dump/restore или pg_upgrade: это minor update с заменой бинарников и перезапуском сервиса. Для продакшена всё равно нужна нормальная процедура: бэкап, тест на staging, окно обслуживания, проверка расширений и репликации. Cyber Security News отдельно отмечает, что майские релизы закрывают 11 CVE и более 60 багов, поэтому откладывать minor update смысла мало.
Есть новость? Станьте автором.
Мы сотрудничаем с независимыми исследователями и специалистами по кибербезопасности. Отправьте нам новость или предложите статью на рассмотрение редакции.