Обновление закрывает переполнение буфера при построении 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 — самый скучный и самый правильный путь. Если база старая, а расширение используется, лучше выделить окно на апгрейд и не геройствовать.
Остаётся напомнить: информационная безопасность в инфраструктуре держится не на одном патче. Но конкретно здесь патч есть, версия известна, а дыра закрыта. Грех не воспользоваться.