Где вы были 12 лет назад?
В базе данных PostgreSQL, на которой держится заметная часть интернета, в том числе Netflix, Instagram, Spotify, Uber, не говоря уже о бесчисленных корпоративных системах, нашли дыру, которая в этом году пошла бы в 7 класс. Уязвимость, существующая с 2014 года, позволяла любому, у кого есть доступ к репликации, получить полный контроль над сервером. Исследователи из Cyera дали уязвимости имя PostGREShell и номер CVE-2026-6471. Хотя через два года можно было бы ей паспорт выдавать.
Для синхронизации баз данных в PostgreSQL есть специальный протокол репликации, и для него заводится учетная запись с атрибутом Replication. Такие учетки есть везде — для бэкапов, мониторинга, CDC-пайплайнов. Их воспринимают как технический мусор, которому можно доверять. Обычно эти учетки не могут делать ничего опасного, но исследователи нашли способ обойти это ограничение.
Проблема в том, что PostgreSQL позволяет подгружать внешние плагины для обработки потока репликации. Имя плагина передается напрямую в системную функцию dlopen(), которая загружает разделяемые библиотеки. При этом имя никак не проверяется. Можно передать любой путь до файла на диске, использовать ../ для выхода за пределы директорий или даже указать Windows UNC-путь. Загруженный код выполняется с правами системного пользователя postgres. А дальше вызов внутреннего API для получения суперпользователя, прямая запись в таблицу pg_authid, и, вуаля,вы суперпользователь навсегда.
Уязвимость затрагивает все версии PostgreSQL с 9.4 по 18.2. Патчи уже вышли в версиях 18.6, 17.11, 16.15, 15.19 и 14.24. Разработчики закрыли дыру, но это не значит, что проблема решена. Атака оставляет после себя бэкдор: вредоносный плагин может включить подключения без пароля, скопировать себя в надежное место и пережить даже попытку отката прав. Поэтому учетки после обновления придется отдельно перепроверить.
@antiinfosec
Post #211
320