Исследователь безопасности под псевдонимом "var77" опубликовал на платформе GitHub готовое доказательство концепции (PoC) для эксплуатации критической уязвимости в системе управления базами данных PostgreSQL. Проблема получила идентификатор CVE-2026-2005 и затрагивает расширение для шифрования pgcrypto. Уязвимость позволяет злоумышленнику удаленно выполнять произвольный код (RCE) на сервере базы данных, причем корни дефекта уходят почти на два десятилетия назад.
Уязвимость CVE-2026-2005
Опасность кроется в логике разбора ключей сессии PGP внутри модуля pgcrypto. Конкретнее, речь идет о переполнении буфера в куче. Это означает, что злоумышленник может записывать данные в область памяти за пределами выделенного буфера, получая тем самым возможность произвольного чтения и записи. В результате атакующий способен повысить свои привилегии до уровня суперпользователя PostgreSQL, что открывает путь к полной компрометации системы.
Опубликованный эксплойт (код для практической атаки на уязвимость) демонстрирует многоэтапный процесс, который обходит современные механизмы защиты, в частности, рандомизацию адресного пространства (ASLR). Атакующий формирует специально подготовленные PGP-сообщения. Они повреждают структуры памяти и позволяют утекать указатели кучи. Используя эти указатели, злоумышленник идентифицирует исполняемые области памяти. Затем происходит вычисление базы позиционно-независимого исполняемого файла (PIE) и проверка корректности смещений. Далее выполняется контролируемая перезапись внутренних переменных PostgreSQL, включая переменную CurrentUserId, отвечающую за идентификатор текущего пользователя. Принудительно установив это значение в идентификатор суперпользователя, атакующий получает привилегии администратора базы данных внутри среды PostgreSQL.
Заключительный этап атаки использует встроенную команду COPY FROM PROGRAM (копирование из программы). Эта возможность базы данных позволяет выполнять произвольные команды операционной системы. Таким образом, злоумышленник достигает удаленного выполнения кода (RCE) от имени сервисной учетной записи PostgreSQL. Важно отметить, что эксплойт требует, чтобы целевой экземпляр PostgreSQL был собран из конкретной уязвимой версии кода. Символьные смещения должны точно совпадать для успешной атаки. Это ограничение снижает вероятность массовых случайных атак, однако не исключает риска в контролируемых или целенаправленных средах.
Уязвимость затрагивает инсталляции PostgreSQL, в которых включено расширение pgcrypto. Особенно подвержены риску среды, где допускается передача непроверенных пользовательских данных в функции этого модуля. С учетом широкого распространения PostgreSQL в корпоративных приложениях, облачных платформах и критической инфраструктуре, потенциальные последствия могут быть весьма серьезными. Успешная атака способна привести к полной компрометации базы данных, несанкционированному доступу к данным или их модификации, выполнению системных команд, а также к дальнейшему продвижению внутри корпоративной сети (lateral movement).
В связи с публикацией рабочего доказательства концепции возрастает вероятность того, что злоумышленники адаптируют код для реальных атак. Поэтому организациям рекомендуют принять немедленные меры. В первую очередь необходимо обновить PostgreSQL до исправленной версии, как только она станет доступна. Если расширение pgcrypto не требуется для работы, его следует отключить или строго ограничить доступ к его функциям. Также важно сократить привилегии пользователей базы данных и по возможности не предоставлять права суперпользователя. Рекомендуется вести мониторинг журналов на предмет необычной активности, связанной с pgcrypto, и ошибок памяти. Доступ к сервисам базы данных из ненадежных сетей должен быть ограничен.
Этот инцидент в очередной раз напоминает о постоянных рисках, которые несет в себе унаследованный код в широко распространенном программном обеспечении. Уязвимости, остававшиеся незамеченными долгие годы, могут стать критической угрозой благодаря современным методам эксплуатации. С появлением публичного PoC угроза для PostgreSQL становится вполне реальной, а это значит, что промедление с обновлениями и усилением защиты недопустимо.
Ссылки
- https://github.com/var77/CVE-2026-2005
- https://www.cve.org/CVERecord?id=CVE-2026-2005
- https://www.postgresql.org/support/security/CVE-2026-2005/