openGauss: обход проверки прав в pg_read_binary_file_blocks (CVE-2026-111439)
В компоненте openGauss-server выявлена уязвимость недостаточной проверки прав доступа, получившая идентификатор CVE-2026-111439. Ошибка затрагивает встроенную функцию pg_read_binary_file_blocks() и позволяет пользователю с обычным подключением к базе данных обходить мандатные проверки при чтении файлов отношений.
Подробности
Уязвимость локализована в модуле src/common/backend/utils/adt/genfile.cpp. При вызове pg_read_binary_file_blocks() на входе проверяются только диапазон начального блока (startBlockNum) и количество блоков (blockCount), после чего управление передаётся низкоуровневой процедуре ReadBinaryFileBlocksFirstCall(). Эта процедура выполняет лишь нормализацию пути и базовые проверки на обход каталогов через «..» и на принадлежность файла каталогу данных, но не проверяет права вызывающего пользователя в базе данных (например, наличие привилегии SELECT). Вспомогательная функция is_row_data_file() также ограничивается определением формы файла и не выполняет проверку полномочий.
В результате любой пользователь, имеющий право подключения к базе, но не обладающий привилегией SELECT на целевую таблицу, может получить путь к файлу отношения через pg_relation_filepath() (в том числе к файлам сжатых данных с суффиксом _compress) и прочитать бинарные блоки данных таблицы напрямую. Уязвимости присвоена оценка CVSS 4.3 (MEDIUM). Проблема присутствует во всех версиях openGauss-server с 3.0.0 по 6.0.0, включая патч-релизы, и устранена в версии 7.0.0-LTS.
Что делать
Рекомендуется обновить openGauss-server до версии 7.0.0-LTS или более поздней, где проверка прав реализована корректно. Исправление опубликовано в pull request #9374 проекта на GitCode — при невозможности немедленного перехода на новую ветку можно применить соответствующий патч.
До установки обновления в качестве временной меры следует ограничить круг пользователей, имеющих возможность подключаться к базе и вызывать функции семейства pg_read_binary_file_blocks, а также пересмотреть выдачу прав на системные функции и внимательно контролировать доступ к pg_relation_filepath(). Рекомендуется также проверить журналы на предмет подозрительных вызовов указанных функций пользователями без привилегий на чтение таблиц.
Уязвимость относится к классу ошибок контроля доступа (CWE) и демонстрирует важность проверки полномочий не только на уровне обёртки, но и в низкоуровневых процедурах чтения файлов. Своевременное обновление СУБД и принцип минимальных привилегий снижают риск эксплуатации подобных дефектов.
Источник: CVE Project (cvelistV5)
