Назад в ленту

Информационная безопасность: в расширении Pgvector 0.8.7 закрыли уязвимость с выполнением кода

Обновление закрывает переполнение буфера при построении IVFFlat-индекса, которое могло привести к выполнению произвольного кода.

В расширении Pgvector для PostgreSQL нашли дыру, которая напрямую касается информационной безопасности. Речь о CVE-2026-103484: при построении IVFFlat-индекса версии 0.8.6 и ниже могли выйти за границы буфера. На практике это грозило не просто падением базы, а выполнением произвольного кода в процессе СУБД. В 0.8.7 баг закрыли.

История неприятная, но не вселенская катастрофа. Чтобы запустить переполнение, атакующему нужен доступ к базе с правом создавать IVFFlat-индексы. То есть абы кто из интернета дырку не провернёт. Но если у приложения или неаккуратного пользователя есть лишние права, сценарий становится куда интереснее для злоумышленника.

Что именно ломается в Pgvector

Проблема сидит в IVFFlat — одном из способов ускорять поиск ближайших соседей по векторам. При сборке такого индекса код неправильно проверял границы, и база могла записать данные за пределами внутреннего буфера. Уязвимость системы затрагивает не только 64-битные сборки: на 32-битных платформах отдельно срабатывало целочисленное переполнение, которое тоже вело к записи мимо буфера. Дальше — порча доверенного контекста выполнения и потенциальное выполнение произвольного кода.

Кого касается CVE-2026-103484

Все установки Pgvector версии 0.8.6 и ниже. Если расширение вообще не используется, проблема мимо. Если база поднимает векторы для поиска, рекомендаций, антифрода или чего-то похожего, стоит проверить версию прямо сейчас. Особенно если доступ к созданию индексов есть у широкого круга лиц.

Оценка CVSS у CVE-2026-103484 — 8.8 из 10. Высоко. При этом в каталоге CISA KEV уязвимости нет, публичного эксплойта на момент публикации тоже не видно. Так что паниковать раньше времени не стоит, но и откладывать обновление на потом — плохая идея.

Что изменилось в pgvector 0.8.7

В версии 0.8.7 разработчики закрыли переполнение буфера при построении IVFFlat-индекса. Технические детали собраны в issue на GitHub. В PostgreSQL Global Development Group прямо советуют обновляться, когда есть возможность. Если апгрейд невозможен, остаётся ограничить права на создание IVFFlat-индексов или удалить расширение, если оно не нужно. Это грубо, зато снижает риск.

Для команд, которые держат PostgreSQL с векторами, порядок действий простой: проверить версию Pgvector, обновить до 0.8.7, пересобрать индексы при необходимости. Да, морока. Зато не придётся потом объяснять, почему из процесса базы кто-то запустил чужой код.

Насколько это опасно на практике

Уязвимость требует локального пользователя базы с правами на создание индексов. Это сужает круг атакующих, но не отменяет проблему. Внутренние угрозы, слитые учётки, слишком щедрые роли — всё это превращает теоретический баг в рабочий сценарий. Плюс Pgvector часто ставят в сервисах, где данные и так чувствительные: рекомендации, поиск, аналитика, эмбеддинги.

Наша редакция не советует ждать, пока появится готовый эксплойт. Обновление до 0.8.7 — самый скучный и самый правильный путь. Если база старая, а расширение используется, лучше выделить окно на апгрейд и не геройствовать.

Остаётся напомнить: информационная безопасность в инфраструктуре держится не на одном патче. Но конкретно здесь патч есть, версия известна, а дыра закрыта. Грех не воспользоваться.

Справка по теме (FAQ)
Что за уязвимость нашли в pgvector?
Это CVE-2026-103484 — переполнение буфера при построении IVFFlat-индекса. База могла записать данные за пределами внутреннего буфера, что вело к порче контекста выполнения и потенциальному выполнению произвольного кода.
Какие версии pgvector затронуты?
Уязвимы версии 0.8.6 и ниже. Проблему исправили в pgvector 0.8.7. Пользователям рекомендуют обновляться, когда есть возможность.
Кому нужны права, чтобы использовать баг?
Атакующему нужен доступ к базе с возможностью создавать IVFFlat-индексы. Обычно это пользователь с правом создавать индексы или приложение с избыточными полномочиями.
Что делать, если обновиться нельзя?
Стоит ограничить права на создание IVFFlat-индексов или удалить расширение, если оно не используется. Это снижает риск, но лучший вариант — всё же перейти на pgvector 0.8.7.